#383: Build standalone JARs which contain additional application code
-------------------------+-----------------------
Reporter: mevenson | Owner:
Type: enhancement | Status: new
Priority: major | Milestone: 1.4.0
Component: other | Version: 1.4.0-dev
Keywords: |
-------------------------+-----------------------
Clojure ("lein uberjar") as well as jruby ("warbler jar") have facilities
for creating a standalone JAR which contains the runtime plus application.
Other than creating the necessary assembly instructions, the only
substantial problem would seem to be the need to further abstract the
mechanism for finding ABCL-CONTRIB to something that could work on a
pathname as well as an entire JAR.
--
Ticket URL: <http://abcl.org/trac/ticket/383>
armedbear <http://abcl.org>
armedbear
#422: SYSTEM:RUN-PROGRAM does not work on Java 5/6
------------------------------------------------+------------------------
Reporter: mevenson | Owner:
Type: defect | Status: new
Priority: major | Milestone: 1.5.0
Component: interpreter | Version: 1.4.0
Keywords: cffi sys:run-progrom java-5 java-6 | Parent Tickets:
------------------------------------------------+------------------------
In chasing down the errors with CFFI on CL-TEST-GRID <https://mailman
.common-lisp.net/pipermail/armedbear-devel/2016-October/003719.html>, I
have found that the [java.lang.ProcessBuilder$Redirect][] interface used
by Elias and Olof to extend SYS:RUN-PROGRAM for different types of I/O
abstractions was introduced with Java 7, and will hence not work on
earlier Java implementations.
[java.lang.ProcessBuilder$Redirect]:
https://docs.oracle.com/javase/8/docs/api/java/lang/ProcessBuilder.Redirect…
Invoking ABCL-ASDF:ENSURE-MVN-VERSION, the following form causes the error
{{{
(JFIELD "java.lang.ProcessBuilder$Redirect" "INHERIT")
}}}
TODO: investigate the Java 6 APIs to see if there is a way to do I/O
redirection with backwards compatibility. I currently suspect that there
is no way to support Java 5/6 for this usage, which is why we never
implemented I/O redirection previously.
There is undoubtedly a way re-write the SYS:RUN-PROGRAM interface so that
we may invoke a process to read its output as a string in Java 5/Java 6,
as it worked before. But we will have to figure out a way to advertise
the different features of SYS:RUN-PROGRAM depending on the hosting VM.
Longer term, we may want to deprecate Java 5/6, but I would really have
the compiler emit Java 7-compatible bytecode (mainly by passing the Java 6
verification process) before we begin that.
--
Ticket URL: <http://abcl.org/trac/ticket/422>
armedbear <http://abcl.org>
armedbear
#417: Bug in CL:DESTRUCTURING-BIND
---------------------------------------------+------------------------
Reporter: mevenson | Owner:
Type: defect | Status: new
Priority: major | Milestone: 1.5.0
Component: interpreter | Version:
Keywords: github-issue ansi-compatibility | Parent Tickets:
---------------------------------------------+------------------------
{{{
(defun test (args) (destructuring-bind (a b &rest c) args (list a b)))
(test '(1))
-> '(1 nil)
}}}
should signal an error
without the &rest args
{{{
(defun test (args) (destructuring-bind (a b) args (list a b)))
(test '(1))
}}}
signals an error as expected
Initial report on Github from Alan
<https://github.com/armedbear/abcl/issues/8>.
--
Ticket URL: <http://abcl.org/trac/ticket/417>
armedbear <http://abcl.org>
armedbear
#391: "bad place for a wild pathname" on EXT:PROBE-DIRECTORY for NAME containing
#\*
-----------------------------------------------+------------------------
Reporter: mevenson | Owner:
Type: defect | Status: new
Priority: major | Milestone: 1.3.3
Component: interpreter | Version:
Keywords: cl:probe-file ext:probe-directory | Parent Tickets:
-----------------------------------------------+------------------------
John Pallister on #abcl reported problems with configuring ASDF via {{{
(asdf:initialize-source-registry '(:source-registry (:tree (:home
"src/synchromesh")) :inherit-configuration))}}} for which he later traced
down to problems with a pathname NAME containing a #\* character:
{{{
<synchromesh> Ooh, that's interesting - EXTENSIONS:PROBE-DIRECTORY has
found a filename in the specified directory tree that contains a "*".
<synchromesh> Then (much deeper)
org.armedbear.lisp.probe_file$pf_probe_directory.execute(probe_file.java:88)
throws the error.
}}}
The exact error cases here still needs to be determined.
TBD: What does it mean to PROBE-{DIRECTORY,FILE} on a PATHNAME containing
#\*?
--
Ticket URL: <http://abcl.org/trac/ticket/391>
armedbear <http://abcl.org>
armedbear
#421: Improve recording of source information for most kinds of definitions
--------------------------+----------------------------
Reporter: mevenson | Owner:
Type: enhancement | Status: new
Priority: major | Milestone: 1.5.0
Component: interpreter | Version: 1.5.0-dev
Keywords: github-issue | Parent Tickets:
--------------------------+----------------------------
Alan proposes in <https://github.com/armedbear/abcl/pull/5>:
Improve recording of source information for most kinds of definitions
e.g.
(describe 'split-at-char)
SPLIT-AT-CHAR is an internal symbol in the COMMON-LISP-USER package.
Its function binding is #<SPLIT-AT-CHAR {4D969FD4}>.
The function's lambda list is:
(STRING CHAR)
The symbol's property list contains these indicator/value pairs:
SYSTEM::%SOURCE-BY-TYPE ((:COMPILER-MACRO
"/Users/alanr/repos/lsw2/util/string.lisp" 1039)
((:FUNCTION SPLIT-AT-CHAR)
"/Users/alanr/repos/lsw2/util/string.lisp" 687))
SYSTEM::%SOURCE (#P"/Users/lori/repos/lsw2/util/string.lisp" . 687)
I followed the source types in slime's swank/sbcl.lisp
This is preliminary to adding support for using this information in slime.
What should be recorded:
packages
classes
functions
macros
compiler-macros
setf-expanders
methods
conditions
structures
types
source-transforms
variables
constants
Implementation
fdefinition.lisp has the function record-source-information-for-type For
interactive evaluation it does the work. For file compiling there are
additions to compile-file.lisp that add forms after the prologue that add
the information when fasl loading, during which recording by record-
source-information-for-type is disabled, so it doesn't record the source
positions in the fasl header.
As you see, I haven't got rid of the now redundant sys:%source property.
Once slime has been adjusted it might be worth doing so.
Right now the absolute pathnames are recorded, but it might make sense to
use logical pathnames if there were ones set up, though I expect the slime
support with do some dwimming in any case.
--
Ticket URL: <http://abcl.org/trac/ticket/421>
armedbear <http://abcl.org>
armedbear
#425: autoload-gen doesn't record methods, resulting in some common-lisp
functions not working unless a function in defining file is first
autoloaded
-------------------------+----------------------
Reporter: aruttenberg | Owner:
Type: defect | Status: new
Priority: major | Milestone:
Component: (A)MOP | Version:
Keywords: | Parent Tickets:
-------------------------+----------------------
To reproduce:
{{{
(describe-object 'foo t)
-> #<THREAD "interpreter" {56BF7C}>: Debugger invoked on condition of type
SIMPLE-ERROR
There is no applicable method for the generic function #<STANDARD-
GENERIC-FUNCTION DESCRIBE-OBJECT {1FDDDE5A}> when called with arguments
(FOO T).
;; autoload of describe also loads describe-object
->(describe 'foo)
<elided>
->(describe-object 'foo t)
FOO is an internal symbol in the COMMON-LISP-USER package.
}}}
--
Ticket URL: <http://abcl.org/trac/ticket/425>
armedbear <http://abcl.org>
armedbear