#65: UTF-32 strings support
------------------------+---------------------------------------------------
Reporter: ehuelsmann | Owner: somebody
Type: defect | Status: new
Priority: major | Milestone:
Component: other | Version:
Keywords: |
------------------------+---------------------------------------------------
ABCL uses Java char[]s to represent its strings. However, the char type
can only represent values in the BMP (Basic Multilingual Plane), because
only the BMP can be represented using 16 bits.
For supplementary characters (all Unicode chars outside the BMP), it uses
a pair of surrogate characters (UTF-16).
Common Lisp programs don't expect this and need strings to be represented
using complete characters.
--
Ticket URL: <http://trac.common-lisp.net/armedbear/ticket/65>
armedbear <http://common-lisp.net/project/armedbear>
armedbear
#73: "normalize-type" buffering
-------------------------+--------------------------------------------------
Reporter: ehuelsmann | Owner: somebody
Type: task | Status: new
Priority: major | Milestone:
Component: CLOS | Version:
Keywords: performance |
-------------------------+--------------------------------------------------
Peter Graves points out that with his "canonicalize-type" buffering, he
achieved measurable performance gain in XCL. We want to do the same in
ABCL.
--
Ticket URL: <http://trac.common-lisp.net/armedbear/ticket/73>
armedbear <http://common-lisp.net/project/armedbear>
armedbear
#60: Implement USE-FAST-CALLS properly
-------------------------+--------------------------------------------------
Reporter: trittweiler | Owner: ehuelsmann
Type: defect | Status: new
Priority: minor | Milestone:
Component: compiler | Version:
Keywords: |
-------------------------+--------------------------------------------------
USE-FAST-CALLS is implemented at the moment by flipping
an essentially global variable.
The proper implementation would be to make turn it into
a ABCL-specific declaration, and making sure it affects
its lexically enclosing code only.
--
Ticket URL: <http://trac.common-lisp.net/armedbear/ticket/60>
armedbear <http://common-lisp.net/project/armedbear>
armedbear
#32: Modify the currently disabled runtime-class.lisp code to not require ASM
--------------------------------------------------------------------+-------
Reporter: vvoutilainen | Owner: somebody
Type: enhancement | Status: new
Priority: major | Milestone:
Component: component1 | Version:
Keywords: jvm bytecode compiler runtime dynamic class generation |
--------------------------------------------------------------------+-------
It's possible to define classes at runtime, by generating bytecode and
loading it from the generated binary data, without ever writing it to a
temporary file. runtime-class.lisp does that, but it requires an external
bytecode library (ASM). ABCL has all the functionality for this to be done
without ASM, so the task is to modify the runtime-class.lisp code so that
ASM is no longer required and the code can be taken to be part of the
build.
--
Ticket URL: <http://127.0.0.1:8000/armedbear/ticket/32>
armedbear <http://common-lisp.net/project/armedbear>
armedbear
#55: Clearing LispThread.currentThread()._values more efficiently
-------------------------+--------------------------------------------------
Reporter: ehuelsmann | Owner: ehuelsmann
Type: enhancement | Status: new
Priority: major | Milestone:
Component: compiler | Version:
Keywords: |
-------------------------+--------------------------------------------------
We currently clear _values all over the place; we could be more efficient
some times.
--
Ticket URL: <http://trac.common-lisp.net/armedbear/ticket/55>
armedbear <http://common-lisp.net/project/armedbear>
armedbear
#34: adjust generated '*.cls' filenames
------------------------+---------------------------------------------------
Reporter: mevenson | Owner: somebody
Type: defect | Status: new
Priority: major | Milestone:
Component: component1 | Version:
Keywords: |
------------------------+---------------------------------------------------
dmiles:
it be nice to eventually name the coerce-666.cls coerce_666.cls as the
same name of the way classpaths think about them (they'd continue to
work).. one argument agaist is our autoloader at least gets a better whack
at finding them in the right context apart from classloader
--
Ticket URL: <http://127.0.0.1:8000/armedbear/ticket/34>
armedbear <http://common-lisp.net/project/armedbear>
armedbear
#30: Lisp debugger, for both compiled and interpreted code
----------------------------+-----------------------------------------------
Reporter: vvoutilainen | Owner: somebody
Type: enhancement | Status: new
Priority: major | Milestone: unscheduled
Component: component1 | Version:
Keywords: debug debugger |
----------------------------+-----------------------------------------------
ABCL code can be debugged with normal java debuggers, but it
is somewhat painful for the portions implemented in lisp(1). So we need a
lisp debugger.
(1) It's possible, although a bit tedious, to step through
eval calls in a java debugger by examining the cars and
cdrs of eval parameters when stepping the code.
--
Ticket URL: <http://127.0.0.1:8000/armedbear/ticket/30>
armedbear <http://common-lisp.net/project/armedbear>
armedbear
#84: jcall and t/nil boolean arguments
------------------------+---------------------------------------------------
Reporter: ehuelsmann | Owner: nobody
Type: defect | Status: new
Priority: major | Milestone:
Component: java | Version:
Keywords: |
------------------------+---------------------------------------------------
Can it be made so that within jcall, t or nil is understood as a java
boolean argument?
--
Ticket URL: <http://trac.common-lisp.net/armedbear/ticket/84>
armedbear <http://common-lisp.net/project/armedbear>
armedbear
#56: Eliminate use of temporary files in COMPILE and COMPILE-FILE
-------------------------+--------------------------------------------------
Reporter: ehuelsmann | Owner: ehuelsmann
Type: enhancement | Status: new
Priority: major | Milestone:
Component: compiler | Version:
Keywords: |
-------------------------+--------------------------------------------------
The functions COMPILE and COMPILE-FILE use temporary files for the class
files generated by the compiler.
However, COMPILE directly loads them back into memory and deletes the temp
file, while COMPILE-FILE deletes the temp file after adding it to a ZIP
archive.
This ticket exists to indicate that infrastructure is required to better
manage where output goes to, abstracting from the temp files.
--
Ticket URL: <http://trac.common-lisp.net/armedbear/ticket/56>
armedbear <http://common-lisp.net/project/armedbear>
armedbear
#69: Gray stream compatibility
---------------------------+------------------------------------------------
Reporter: ehuelsmann | Owner: somebody
Type: defect | Status: new
Priority: major | Milestone:
Component: other | Version:
Keywords: compatibility |
---------------------------+------------------------------------------------
The last thing holding us back from being fully Gray stream compatible, is
that TYPEP should return T for any fundamental-stream derived instance
when tested against 'STREAM or (find-class 'STREAM).
--
Ticket URL: <http://trac.common-lisp.net/armedbear/ticket/69>
armedbear <http://common-lisp.net/project/armedbear>
armedbear
#83: problem with error reporting on undefined class during make instance
------------------------+---------------------------------------------------
Reporter: ehuelsmann | Owner: somebody
Type: defect | Status: new
Priority: major | Milestone:
Component: CLOS | Version:
Keywords: |
------------------------+---------------------------------------------------
CL-USER(25): (defclass c (d) ((q :initarg :q)))
#<STANDARD-CLASS C {B5BEE0}>
CL-USER(26): (make-instance 'c :q t)
Debugger invoked on condition of type PROGRAM-ERROR:
Invalid initarg :Q.
The error should say instead something about d not being defined.
This in build of a freshly updated trunk abcl
--
Ticket URL: <http://trac.common-lisp.net/armedbear/ticket/83>
armedbear <http://common-lisp.net/project/armedbear>
armedbear
#18: Incorporate 'invoke.lisp' dynamic classpath ability
-------------------------+--------------------------------------------------
Reporter: mevenson | Owner: somebody
Type: enhancement | Status: new
Priority: minor | Milestone:
Component: component1 | Version:
Keywords: |
-------------------------+--------------------------------------------------
Alan Ruttenberg's [invoke.lisp][1] has the ability to easily add
additional Java JARs at runtime by using the [beanshell classloader][2].
With a few additions to the ASDF system, this allows one to easily specify
"wrappings" of Java components which load JARs or find classfiles on the
filesystem.
The code in the Beanshell classmanager could be added to the ABCL src tree
fairly easily to facilitate this behavior.
[1]: http://svn.mumble.net:8080/svn/lsw/trunk/jss/invoke.lisp
[2]: http://www.beanshell.org/home.html
--
Ticket URL: <http://127.0.0.1:8000/armedbear/ticket/18>
armedbear <http://common-lisp.net/project/armedbear>
armedbear
#78: Include ASDF-INSTALL in base ABCL
-----------------------+----------------------------------------------------
Reporter: mevenson | Owner: nobody
Type: defect | Status: new
Priority: minor | Milestone: unscheduled
Component: libraries | Version:
Keywords: |
-----------------------+----------------------------------------------------
Including a port of [http://www.cliki.net/ASDF-Install ASDF-INSTALL] in
ABCL would help others trying to use CL libraries.
--
Ticket URL: <http://trac.common-lisp.net/armedbear/ticket/78>
armedbear <http://common-lisp.net/project/armedbear>
armedbear
#51: Implement debugger option to retry/return from stack frame
-------------------------+--------------------------------------------------
Reporter: ehuelsmann | Owner: somebody
Type: enhancement | Status: new
Priority: major | Milestone:
Component: other | Version:
Keywords: |
-------------------------+--------------------------------------------------
It would be very valuable to be able to retry a stack frame after changing
some of the local variables / function arguments in it.
--
Ticket URL: <http://127.0.0.1:8000/armedbear/ticket/51>
armedbear <http://common-lisp.net/project/armedbear>
armedbear
#57: Eliminate the use of writeToString for condition creation
------------------------+---------------------------------------------------
Reporter: ehuelsmann | Owner: somebody
Type: defect | Status: new
Priority: critical | Milestone:
Component: other | Version:
Keywords: |
------------------------+---------------------------------------------------
Due to the fact that the object being written may be recursive, we need to
bind *print-level* and *print-circle* before writing objects to error
strings. Possibly, these instances can be replaced by a format string and
format arguments.
--
Ticket URL: <http://trac.common-lisp.net/armedbear/ticket/57>
armedbear <http://common-lisp.net/project/armedbear>
armedbear
#76: Slime (swank) fuzzy completion very slow
-------------------------+--------------------------------------------------
Reporter: ehuelsmann | Owner: somebody
Type: enhancement | Status: new
Priority: major | Milestone:
Component: other | Version:
Keywords: |
-------------------------+--------------------------------------------------
In [http://common-lisp.net/pipermail/armedbear-devel/2009-July/000062.html
a mail to the development list], Anton Vodonosov writes about the relative
speed of ABCL, CCL and Clisp on slime fuzzy completion.
ABCL is by far the slowest.
--
Ticket URL: <http://trac.common-lisp.net/armedbear/ticket/76>
armedbear <http://common-lisp.net/project/armedbear>
armedbear
#24: Ability to load ASDF systems off JAR files in the classpath
-------------------------+--------------------------------------------------
Reporter: ehuelsmann | Owner: somebody
Type: enhancement | Status: new
Priority: major | Milestone:
Component: component1 | Version:
Keywords: |
-------------------------+--------------------------------------------------
Alan Ruttenberg writes:
I'd really like the ability to pop an
asdf central registry directory into the abcl jar and have abcl be
able to asdf load from there. Would really simplify packaging apps
based on abcl.
--
Ticket URL: <http://127.0.0.1:8000/armedbear/ticket/24>
armedbear <http://common-lisp.net/project/armedbear>
armedbear
#68: Extend Load.java to allow loading FASLs from arbitrary streams
-------------------------+--------------------------------------------------
Reporter: ehuelsmann | Owner: nobody
Type: enhancement | Status: new
Priority: major | Milestone: 0.18
Component: libraries | Version:
Keywords: |
-------------------------+--------------------------------------------------
Currently, Load.java inspects a file to find whether or not this file is a
ZIP file. From there, it decides on a strategy to continue loading the
file.
However, in many circumstances in Java one has a stream of unknown origin.
It's a requirement for good Java integration to be able to load FASLs off
arbitrary streams (resource streams, e.g.).
--
Ticket URL: <http://trac.common-lisp.net/armedbear/ticket/68>
armedbear <http://common-lisp.net/project/armedbear>
armedbear
#29: Support loading system files off other paths (in a JAR) than the default
one
-------------------------+--------------------------------------------------
Reporter: ehuelsmann | Owner: somebody
Type: enhancement | Status: new
Priority: major | Milestone:
Component: component1 | Version:
Keywords: |
-------------------------+--------------------------------------------------
Alan Ruttenberg writes:
In order to enable easy packaging of a system into a jar file, one
that might even be usable as an applet, a small change is needed.
Currently load-system-file can read an .abcl compiled file set from
the abcl jar. Actually, it doesn't load the .abcl directly. That file
is a zip file with a "top level" file with a "._" extension and a
bunch of .cls files. The unpacked contents of these files live in the
abcl jar, with the "._" file renamed to have the extension ".abcl".
The loading happens by first loading the "._" file, a file of lisp
forms, which when evaluated, in turn calls load-compiled-function on
each of the component .cls files (plus does some other stuff). All of
these files live in a single directory in the jar file: org/armedbear/
lisp/
I'd like to be able to load from a subdirectory of that, in which I
would put my files. I can tell load-system-file to load the initial
abcl file from the subdirectory, say, org/armedbear/lisp/util/, but
then load-compiled-function wants to load the components from org/
armedbear/lisp. So the small change is to set *load-truename* in load-
system-file, based on the supplied path, and then to use it as the
pathname defaults when executing the call to load-compiled-function.
It seems to do this for the case where it loads from the regular file
system, but not when working with the jar file.
Once this change is in place, to package up a system, one would unjar
abcl.jar, move one's compiled files in to a subdirectory of org/
armedbear/lisp, unzip all of them, rename *._ to *.abcl, and jar them
back up.
One could them load a file from the jar with: (sys:load-system-file
"mydir/foo.abcl")
loadCompiledFunction is defined in Lisp.java and loadSystemFile in
Load.java
--
Ticket URL: <http://127.0.0.1:8000/armedbear/ticket/29>
armedbear <http://common-lisp.net/project/armedbear>
armedbear
#35: ABCL.Net.dll -- Using IKVM-patch to make ABCL run on .NET and MONO
-------------------------+--------------------------------------------------
Reporter: dmiles | Owner: somebody
Type: enhancement | Status: new
Priority: major | Milestone: 0.13
Component: component1 | Version: 1.0
Keywords: ikvm |
-------------------------+--------------------------------------------------
HOWTO:
First Patch the ABCL sources:
[root@titan abcl]# patch -p0 < svn11486-ikvm.patch
(Stripping trailing CRs from patch.)
patching file src/org/armedbear/lisp/Complex.java
(Stripping trailing CRs from patch.)
patching file src/org/armedbear/lisp/IkvmSite.java
(Stripping trailing CRs from patch.)
patching file src/org/armedbear/lisp/Lisp.java
(Stripping trailing CRs from patch.)
patching file src/org/armedbear/lisp/Load.java
(Stripping trailing CRs from patch.)
patching file src/org/armedbear/lisp/Nil.java
(Stripping trailing CRs from patch.)
patching file src/org/armedbear/lisp/Pathname.java
Clean:
[root@titan abcl]# rm -rf build dist
Build ABCL:
[root@titan abcl]#ant abcl.dist
....
Download the latest binaries from http://ikvm.net
I use the "stable" ones: 0.36.0.11
Unzip the binaries to a $ABCL_HOME/bin/
Update MON_PATH:
export MONO_PATH=.:bin
Build the ABCL.Net.dll and abcl.exe
alias ikvmc='mono bin/ikvmc.exe '
[root@titan abcl]# ikvmc -compressresources -recurse:build/classes/
-out:ABCL.Net.dll
Note IKVMC0003: automatically adding reference to "/development/mirrors
/ABCL-SVN/trunk/abcl/bin/IKVM.OpenJDK.ClassLibrary.dll"
[root@titan abcl]# ikvmc -r:ABCL.Net.dll -main:org.armedbear.lisp.Main
-out:abcl.exe
Note IKVMC0003: automatically adding reference to
"bin/IKVM.OpenJDK.ClassLibrary.dll"
Run it:
[root@titan abcl]# mono abcl.exe
Armed Bear Common Lisp 0.13.0-dev (built Fri Dec 26 2008 19:15:42 PST)
Java 1.6.0 Jeroen Frijters
IKVM.NET
Low-level initialization completed in 0.159 seconds.
Startup completed in 3.067 seconds.
Type ":help" for a list of available commands.
CL-USER(1): *FEATURES*
(:IKVM :X86 :JAVA-1.6 :ARMEDBEAR :ABCL :COMMON-LISP :ANSI-CL)
I use the following .dll in a C# project at
http://code.google.com/p/opensim4opencog/source/detail?r=28
Have fun.. how soon can we just have this patch applied to ABCL src?
--
Ticket URL: <http://127.0.0.1:8000/armedbear/ticket/35>
armedbear <http://common-lisp.net/project/armedbear>
armedbear
#58: Lisp-side introspection into java classes
-------------------------+--------------------------------------------------
Reporter: trittweiler | Owner: somebody
Type: enhancement | Status: new
Priority: major | Milestone:
Component: CLOS | Version:
Keywords: |
-------------------------+--------------------------------------------------
It'd be nice if ABCL would provide Lisp-side introspection
into Java classes. Including ABCL's own datastructures like
Readtable, Mutex, etc. So it can be used in Slime.
--
Ticket URL: <http://trac.common-lisp.net/armedbear/ticket/58>
armedbear <http://common-lisp.net/project/armedbear>
armedbear
#43: Interface for API users to hook into debugging output
-------------------------+--------------------------------------------------
Reporter: ehuelsmann | Owner: somebody
Type: enhancement | Status: new
Priority: major | Milestone:
Component: other | Version:
Keywords: debug |
-------------------------+--------------------------------------------------
Currently, we don't have ways to hook into debugging information in ABCL
from higher-up API users. It would be nice to be able to offer such
interfaces, since it would definitely offer developers better ways to
integrate ABCL into deployed apps.
--
Ticket URL: <http://127.0.0.1:8000/armedbear/ticket/43>
armedbear <http://common-lisp.net/project/armedbear>
armedbear
#19: SLIME from CVS HEAD needs 'with-mutex.lisp'
------------------------+---------------------------------------------------
Reporter: mevenson | Owner: ehuselmann
Type: defect | Status: new
Priority: major | Milestone: unscheduled
Component: component1 | Version:
Keywords: SLIME |
------------------------+---------------------------------------------------
SLIME from CVS HEAD fails to load with r11371, as it apparently needs
with-mutex.lisp.
The attached patch adds 'with-mutex.lisp' to the ABCL jar.
--
Ticket URL: <http://127.0.0.1:8000/armedbear/ticket/19>
armedbear <http://common-lisp.net/project/armedbear>
armedbear
#59: Add extensible sequences to ABCL
----------------------------------------------+-----------------------------
Reporter: astalla | Owner: somebody
Type: enhancement | Status: new
Priority: minor | Milestone:
Component: other | Version:
Keywords: extensible sequences collections |
----------------------------------------------+-----------------------------
Implement the protocol described in
http://www.doc.gold.ac.uk/~mas01cr/papers/ilc2007/sequences-20070301.pdf
to allow users to provide new types of sequences working with the standard
Common Lisp sequences API. Use this protocol to make Java collections
first-class in abcl.
--
Ticket URL: <http://trac.common-lisp.net/armedbear/ticket/59>
armedbear <http://common-lisp.net/project/armedbear>
armedbear
#33: Measure the impact of filling stack trace information when performing
GO/RETURN/THROW
----------------------------------------------------------------------+-----
Reporter: vvoutilainen | Owner: somebody
Type: task | Status: new
Priority: minor | Milestone: unscheduled
Component: component1 | Version: 1.0
Keywords: exception ConditionThrowable go return throw performance |
----------------------------------------------------------------------+-----
Douglas R. Miles reported recently that
java.lang.Throwable.fillInStackTrace() can be a very time consuming
operation when instantiating Throwables or objects the class of which
extends Throwable.
A patch for overriding the fillInStackTrace() function with an empty
implementation was created, it seems to be a performance gain, but a
benchmark is required. ANSI tests test so many other things that it's
difficult to compare the impact of the patch without a test that tests
only GO/RETURN/THROW.
--
Ticket URL: <http://127.0.0.1:8000/armedbear/ticket/33>
armedbear <http://common-lisp.net/project/armedbear>
armedbear
#80: REQUIRE should work with ASDF
--------------------------+-------------------------------------------------
Reporter: mevenson | Owner: mevenson
Type: enhancement | Status: new
Priority: major | Milestone: unscheduled
Component: libraries | Version: 1.0
Keywords: asdf require |
--------------------------+-------------------------------------------------
SBCL has the convention that if REQUIRE does not resolve on the
filesystem, the argument is passed off to ASDF to resolve. It would be
nice to include this in ABCL.
--
Ticket URL: <http://trac.common-lisp.net/armedbear/ticket/80>
armedbear <http://common-lisp.net/project/armedbear>
armedbear
#63: Attempt to GO to tag whose dynamic extent has ended exits ABCL
----------------------+-----------------------------------------------------
Reporter: mevenson | Owner: somebody
Type: defect | Status: new
Priority: major | Milestone: unscheduled
Component: CLOS | Version: 1.0
Keywords: |
----------------------+-----------------------------------------------------
Reported by Brian Mastenbrook:
When attempting to GO to a tag whose dynamic extent has ended, ABCL quits
and prints the name of the exception used for internally handling GO
(org.armedbear.lisp.Go). I see the same behavior in compiled or
interpreted code.
{{{
CL-USER(1): (lisp-implementation-version)
"0.16.0"
CL-USER(2): (let ((f nil)) (tagbody (setf f (lambda () (go foo))) foo)
(funcall f))
org.armedbear.lisp.Go
abcl-src-0.16.0 chandler$
}}}
--
Ticket URL: <http://trac.common-lisp.net/armedbear/ticket/63>
armedbear <http://common-lisp.net/project/armedbear>
armedbear
#62: CLOS with &key arguments after &rest fails
----------------------+-----------------------------------------------------
Reporter: mevenson | Owner: somebody
Type: defect | Status: new
Priority: major | Milestone: unscheduled
Component: CLOS | Version: 1.0
Keywords: |
----------------------+-----------------------------------------------------
The problem can be tested by attempting to load an ASDF system defintion
as follows:
(asdf:operate 'asdf:load-op :abcl :verbose t)
which produces the error
Invalid initarg :VERBOSE.
but probably can be reduced to a simpler test case involving functions
with &key arguments after &rest.
Introduced in r12067
--
Ticket URL: <http://trac.common-lisp.net/armedbear/ticket/62>
armedbear <http://common-lisp.net/project/armedbear>
armedbear
#61: Compilation of THE with macros
----------------------+-----------------------------------------------------
Reporter: mevenson | Owner: ehuelsmann
Type: defect | Status: new
Priority: major | Milestone: unscheduled
Component: compiler | Version: 1.0
Keywords: |
----------------------+-----------------------------------------------------
As reported in http://article.gmane.org/gmane.lisp.armedbear.devel/152 by
Eric Marsden, the recent work on THE forms has broken the compilation of
THE forms involving macros as follows:
#|
COMPILE-FILE for this file fails with [svn r12114].
|#
(defconstant +foo-OK+ (the (integer 0 10) 5))
(deftype foo () '(integer 0 10))
(defmacro assemble-foo (x) `(the foo ,x))
(defconstant +foo+ (assemble-foo 6))
--
Ticket URL: <http://trac.common-lisp.net/armedbear/ticket/61>
armedbear <http://common-lisp.net/project/armedbear>
armedbear
#46: Compilation failure from several numeric arguments to MIN
----------------------+-----------------------------------------------------
Reporter: mevenson | Owner: ehuselmann
Type: defect | Status: new
Priority: major | Milestone: unscheduled
Component: compiler | Version: 1.0
Keywords: |
----------------------+-----------------------------------------------------
After the recent (JAN/FEB) changes to the compiler to support numeric
types more efficiently, the following code fails to compile:
{{{
(defun fail ()
(min 1 2 3))
}}}
with a Failed AVER: "NIL" arising out of COMPILE-FORMS-AND-MAYBE-EMIT-
CLEAR_VALUES failing to parse its arguments correctly.
--
Ticket URL: <http://127.0.0.1:8000/armedbear/ticket/46>
armedbear <http://common-lisp.net/project/armedbear>
armedbear
#26: Multi-thread safety
-------------------------+--------------------------------------------------
Reporter: ehuelsmann | Owner: somebody
Type: enhancement | Status: new
Priority: major | Milestone:
Component: component1 | Version:
Keywords: |
-------------------------+--------------------------------------------------
Alex Mizhari writes:
multithread safety -- while perhaps not
thoroughly checked, most stuff behaves
fine with multiple threads, at least
i don't remember having problems with it.
--
Ticket URL: <http://127.0.0.1:8000/armedbear/ticket/26>
armedbear <http://common-lisp.net/project/armedbear>
armedbear
#38: CLOS :metaclass support
------------------------+---------------------------------------------------
Reporter: ehuelsmann | Owner: somebody
Type: defect | Status: new
Priority: major | Milestone:
Component: component1 | Version:
Keywords: |
------------------------+---------------------------------------------------
Blake McBride reports:
Running the code:
(defclass meta-class1 (standard-class)
(cv1 cv2 cv3)
(:metaclass standard-class))
(defclass class1 (standard-object)
(iv1 iv2 iv3)
(:metaclass meta-class1))
The second object returns:
#<STANDARD-CLASS CLASS1 {F673CC}>
It should be:
#<META-CLASS1 CLASS1 {F673CC}>
Not only is it reporting the wrong class of class1 but it doesn't work
either. I suppose ABCL doesn't support the :metaclass option. It just
ignores it. The problem is that without that option ABCL's CLOS is
severely limited. Any plans to fix this?
Thanks.
Blake McBride
--
Ticket URL: <http://127.0.0.1:8000/armedbear/ticket/38>
armedbear <http://common-lisp.net/project/armedbear>
armedbear
#79: Identically named gensymed coalesced into same object in fasl file
-------------------------+--------------------------------------------------
Reporter: trittweiler | Owner: somebody
Type: defect | Status: new
Priority: major | Milestone:
Component: CLOS | Version:
Keywords: |
-------------------------+--------------------------------------------------
From: Erik Huelsmann
Date: Mon, Jan 11, 2010 at 11:40 PM
Subject: Re: [armedbear-devel] [Bug] Identically named gensymed
coalesced into same object in fasl file
To: "Tobias C. Rittweiler"
Hi Tobias,
Thanks for your report. This issue has long been in ABCL and it's not
fixed yet.
I have known about this problem for a while, but was kind of hoping it
wouldn't show up in practice. I guess it did.
This is what happens: when reading, the fasl loader creates an
anonymous package in which it interns uninterned symbols. It "has" to
do that, because ABCL doesn't store references to the actual unique
objects everywhere; instead it stores the textual representation in
some places. These symbols get coalesced by use of the anonymous
package.
So, generally the system of coalescing is something inherent to this
idea. The idea is wrong enough for you to run into and get bitten by
it.
We'll have to come up with a better idea. Can you add the mail message
below to our issue tracker?
BTW: Did you happen to find this issue by accident? How did you find it?
Bye,
Erik.
On Mon, Jan 11, 2010 at 10:35 PM, Tobias C. Rittweiler wrote:
>
> I'm currently running an old checkout ("0.17.0-dev"), so the issue may
> have been fixed meanwhile.
>
> ### /tmp/foo.lisp
> (eval-when (:load-toplevel :execute)
> (let ((a '#:foo)
> (b '#:foo))
> (setf (fdefinition 'foo) (lambda () (values a b)))))
>
> (eval-when (:load-toplevel :execute)
> (format t "~&(multiple-value-call #'eq (foo)) => ~S~%"
> (multiple-value-call #'eq (foo))))
> ###
>
> CL-USER> (compile-file "/tmp/foo.lisp")
> ; Compiling /tmp/foo.lisp ...
> ; (LET (# #) ...)
> ; (FORMAT T ...)
>
> ; Compilation unit finished
> ; The following functions were used but not defined:
> ; FOO
>
> ; Wrote /tmp/foo.abcl (0.034 seconds)
> #P"/tmp/foo.abcl"
> NIL
> NIL
>
> That warning is bogus. There some work in this area so this bit may be
> fixed already.
>
> The actual issue of my mail is this one, though:
>
> CL-USER> (load *)
> (multiple-value-call #'eq (foo)) => T
> T
>
> As you can see, ABCL coalesces the two identical named gensyms into the
> same object in the fasl file.
>
> While 3.2.4.2.2 does specify that
>
> Two apparently uninterned symbols S and C are similar if their names
> are similar.
>
> ABCL's behavior is still wrong because 3.2.4.1 says
>
> If two literal objects appearing in the source code for a single file
> processed with the file compiler are the [sic] identical, the
> corresponding objects in the compiled code must also be the
> identical. __With the exception of symbols and packages__, any two
> literal objects in code being processed by the file compiler may be
> coalesced if and only if they are similar; __if they are either both
> symbols or both packages, they may only be coalesced if and only if
> they are identical__.
>
> -T.
--
Ticket URL: <http://trac.common-lisp.net/armedbear/ticket/79>
armedbear <http://common-lisp.net/project/armedbear>
armedbear
#86: No restarts available on error in thread
------------------------+---------------------------------------------------
Reporter: ehuelsmann | Owner: nobody
Type: defect | Status: new
Priority: major | Milestone: 0.19
Component: libraries | Version:
Keywords: |
------------------------+---------------------------------------------------
Evaluating the following
(threads:make-thread #'(lambda () (error "foof")) :name "foof")
will get you into the debugger. But there's not restart available.
As it does not make sense to provide a RETURN-TO-TOPLEVEL restart for an
error occuring in a thread, I think there should be a TERMINATE-THREAD
restart instead.
And the debugger should probably print the thread's name the error
occured in.
--
Ticket URL: <http://trac.common-lisp.net/armedbear/ticket/86>
armedbear <http://common-lisp.net/project/armedbear>
armedbear
#45: Support for passing unboxed arguments to local functions
-------------------------+--------------------------------------------------
Reporter: ehuelsmann | Owner: ehuelsmann
Type: enhancement | Status: new
Priority: major | Milestone:
Component: compiler | Version:
Keywords: |
-------------------------+--------------------------------------------------
It would save a great deal of boxing/unboxing, if local functions and
self-calling recursive functions could pass and return unboxed values.
Although passing unboxed values from the outside world is generally
considered 'dependency on implementation details', recursive calls and
calls to local functions should be able to depend on this: they get
recompiled upon function redefinition anyway.
One of the reasons for this ticket: with the improved type-derivations in
Jan/Feb 2009, the cl-bench TAK test deteriorated: more boxing was
performed. With this change, the (un)boxing can be eliminated, except for
the first call (from the outside world).
--
Ticket URL: <http://127.0.0.1:8000/armedbear/ticket/45>
armedbear <http://common-lisp.net/project/armedbear>
armedbear
#44: Unboxing of local variables with :float and :double representations
-------------------------+--------------------------------------------------
Reporter: ehuelsmann | Owner: ehuelsmann
Type: enhancement | Status: new
Priority: major | Milestone:
Component: compiler | Version:
Keywords: |
-------------------------+--------------------------------------------------
Currently, variables with :float or :double representations don't get
stored unboxed. Since intermediate results of those types do get unboxed,
this leads to additional boxing/unboxing.
--
Ticket URL: <http://127.0.0.1:8000/armedbear/ticket/44>
armedbear <http://common-lisp.net/project/armedbear>
armedbear
#85: CL-JSON throws an error under ABCL where SBCL doesn't.
------------------------+---------------------------------------------------
Reporter: ehuelsmann | Owner: somebody
Type: defect | Status: new
Priority: major | Milestone:
Component: other | Version:
Keywords: |
------------------------+---------------------------------------------------
The code is:
(require 'asdf)
(asdf:operate 'asdf:load-op :cl-json)
(json:decode-json-from-string
"{\"foo\": [10,20,50], \"bar\": true}")
The error message is: The value 50 is not of type CONS.
I'm using Yason as a work-around, but thought that you guys might want to
know, maybe this points to a deeper issue.
--
Ticket URL: <http://trac.common-lisp.net/armedbear/ticket/85>
armedbear <http://common-lisp.net/project/armedbear>
armedbear
#81: Inlining functions with &optional and other "complex" arguments
-------------------------+--------------------------------------------------
Reporter: ehuelsmann | Owner: ehuelsmann
Type: enhancement | Status: new
Priority: major | Milestone: 0.20
Component: compiler | Version:
Keywords: |
-------------------------+--------------------------------------------------
Currently we only inline functions which have only required parameters.
With a little bit more intelligence we could easily inline functions with
optional parameters.
With a bit more intelligence than that, we can even inline functions with
&keyword and &rest parameters.
--
Ticket URL: <http://trac.common-lisp.net/armedbear/ticket/81>
armedbear <http://common-lisp.net/project/armedbear>
armedbear
#48: SLIME CVS HEAD as of 2008-12-30 broken
-------------------------------------+--------------------------------------
Reporter: mevenson | Owner: mevenson
Type: defect | Status: new
Priority: major | Milestone: 0.13
Component: other | Version: 1.0
Keywords: slime emacs application |
-------------------------------------+--------------------------------------
Symptom is the failed listening to SlimeInputStream that doesn't detect a
pipe close, therefore never closes, so further enviornment bindings are
incorrect.
*inferior-lisp* buffers needs to evaluate a form before SLIME works
properly.
Something messed up in the Stream ._finishOuput() calls??
--
Ticket URL: <http://127.0.0.1:8000/armedbear/ticket/48>
armedbear <http://common-lisp.net/project/armedbear>
armedbear
#77: FASLs use wrong encoding: system default
------------------------+---------------------------------------------------
Reporter: ehuelsmann | Owner: ehuelsmann
Type: defect | Status: new
Priority: critical | Milestone: 0.19
Component: compiler | Version:
Keywords: |
------------------------+---------------------------------------------------
Because FASLs are using the system default encoding, we can't be sure they
can hold all characters which Java (and thus Lisp) can handle.
Additionally, reading back FASLs on systems which have a different default
encoding might break.
Solution: use UTF-8 as the encoding for FASLs.
--
Ticket URL: <http://trac.common-lisp.net/armedbear/ticket/77>
armedbear <http://common-lisp.net/project/armedbear>
armedbear
#2: Human readable printing of errors and conditions
--------------------------+-------------------------------------------------
Reporter: ehuelsmann | Owner: somebody
Type: enhancement | Status: new
Priority: major | Milestone:
Component: other | Version:
Resolution: | Keywords:
--------------------------+-------------------------------------------------
Comment(by ehuelsmann):
The source of this behaviour is the fact that in some cases the 'format-
control slot in the built-in condition doesn't get set.
When that happens, the print-object code in print-object.lisp doesn't get
triggered to print the nice message, but rather passes control to the
standard object printing routine (which prints the ugly output above).
--
Ticket URL: <http://trac.common-lisp.net/armedbear/ticket/2#comment:2>
armedbear <http://common-lisp.net/project/armedbear>
armedbear
#75: Character \U0080 causes infinite loop
------------------------+---------------------------------------------------
Reporter: ehuelsmann | Owner: somebody
Type: defect | Status: new
Priority: major | Milestone:
Component: CLOS | Version:
Keywords: |
------------------------+---------------------------------------------------
The following code causes an infinite loop on systems which do not support
character \U0080 in their default output character set:
(defparameter single-character-symbols
'#.(let ((a (make-array 129)))
(dotimes (i 129)
(setf (svref a i) (make-string 1 :initial-element (code-char i))))
a))
--
Ticket URL: <http://trac.common-lisp.net/armedbear/ticket/75>
armedbear <http://common-lisp.net/project/armedbear>
armedbear