#205: JSS logic for resolving methods a little wonky (could use better
diagnostics on why resolution has failed)
-----------------------------------+----------------------------------------
Reporter: mevenson | Owner: mevenson
Type: defect | Status: new
Priority: major | Milestone: 1.1.0
Component: libraries | Version: 1.0.1
Keywords: jss method-resolution |
-----------------------------------+----------------------------------------
[http://thread.gmane.org/gmane.lisp.armedbear.devel/2252 Jonathan P. Bona
is working with Alan Ruttenberg] to port LSW from JSS 1 to JSS 3:
{{{
I'm working with Alan Ruttenberg to port LSW from the old version of
JSS to the JSS that is now part of abcl-contrib.
We've run into the following bug when using with-constant-signature:
; these first two work fine:
(#"substring" "some string" 2 4) ; "me"
(#"substring" "some string" 2) ; "me string"
; and so does this
(with-constant-signature ((substring "substring")) (substring "some
string" 2 4)) ; "me"
; but this breaks:
(with-constant-signature ((substring "substring")) (substring "some
string" 2))
; Wrong number of arguments for public java.lang.String
java.lang.String.substring(int,int): expected 2, got 1
; [Condition of type PROGRAM-ERROR]
A problem seems to be in jss::invoke-find-method, which is finding the
two argument version of java.lang.String.substring no matter how many
arguments its given:
(jss::invoke-find-method "substring" "this is a string" '(1)) ;
should return the java.lang.String.substring method with one int arg
; #<method public java.lang.String java.lang.String.substring(int,int)>
(jss::invoke-find-method "substring" "this is a string" '(1 2) )
; #<method public java.lang.String java.lang.String.substring(int,int)>
(jss::invoke-find-method "substring" "this is a string" '(1 2 3 4 5 6
7 8) ) ; should be an error
; #<method public java.lang.String java.lang.String.substring(int,int)
}}}
--
Ticket URL: <http://trac.common-lisp.net/armedbear/ticket/205>
armedbear <http://common-lisp.net/project/armedbear>
armedbear
#196: STABLE-SORT is only stable for lists
------------------------------+---------------------------------------------
Reporter: mevenson | Owner: ehuelsmann
Type: defect | Status: new
Priority: major | Milestone: 1.1.0
Component: interpreter | Version: 1.0.1
Keywords: ansi-conformance |
------------------------------+---------------------------------------------
[http://article.gmane.org/gmane.lisp.armedbear.devel/2204 Jorge Tavares
reports on armedbear-devel@]:
{{{
Recently I started to investigate the different CL sort implementations
and found that stable-sort in ABCL does not execute as required. The
problem is that stable-sort is only stable for lists and not for all type
of sequences (i.e., elements considered equal by the predicate should stay
in their original order).
A very simple test shows this error:
idesk:~ jast$ abcl
Armed Bear Common Lisp 1.0.1
Java 1.6.0_29 Apple Inc.
Java HotSpot(TM) 64-Bit Server VM
Low-level initialization completed in 0.399 seconds.
Startup completed in 1.069 seconds.
Loading /Users/jast/.abclrc completed in 4.8 seconds.
Type ":help" for a list of available commands.
CL-USER(1): (defparameter *stuff* #((1 0.31648433) (0 0.2704757) (0
0.48931926) (1 0.9958766) (0 0.49251676)))
*STUFF*
CL-USER(2): (setf *stuff* (stable-sort *stuff* #'< :key #'first))
#((0 0.49251676) (0 0.2704757) (0 0.48931926) (1 0.31648433) (1
0.9958766))
The above test is short and simple to understand: *stuff* contains an
array where each element is a pair. The first element of a pair is the key
and the second the data. With this in mind, the expected result should
have been: #((0 0.2704757) (0 0.48931926) (0 0.49251676) (1 0.31648433) (1
0.9958766)).
The same error happens with larger arrays and other types of data. I also
tested it in SBCL, CCL, ECL and CLisp and for these implementations the
results are the expected. Only ABCL differs form the major open source
implementations (I didn't test in ACL or LW).
The reason for this bug is actually quite simple. In sort.lisp, in the
definition of stable-sort, seq-dispatch calls for the non-list sequences
the quicksort algorithm, which is not stable. For lists it calls merge
sort (which is stable) and the problem does not arise.
As a quick fix, I send in attach a patch that uses in stable-sort merge
sort for all sequences. This is done by coercing the sequence to list,
calling merge sort and coercing it back to the original sequence type.
However, as a long term improvement, the best solution would be to
implement a merge sort for non-list sequences.
}}}
--
Ticket URL: <http://trac.common-lisp.net/armedbear/ticket/196>
armedbear <http://common-lisp.net/project/armedbear>
armedbear
#204: abcl-asdf maybe-parse-mvn ignores version information
----------------------------------------------------------------------------------------------+
Reporter: https://www.google.com/accounts/o8/id?id=aitoawkpp0-51624vwa6xzgzn5lml-cy-k… | Owner: mevenson
Type: defect | Status: new
Priority: major | Milestone: 1.1.0
Component: ASDF | Version:
Keywords: abcl-asdf version |
----------------------------------------------------------------------------------------------+
If one tries to add an :mvn component to an ASDF system, the version info
is always ignored and "LATEST" is used.
e.g. in an example like this
....
:components
((:mvn "junit/junit" :version "3.8.2")
....
the version info is ignored.
--
Ticket URL: <http://trac.common-lisp.net/armedbear/ticket/204>
armedbear <http://common-lisp.net/project/armedbear>
armedbear