#190: FORMAT DOLLARSIGN fails to handle rounding negative arguments
-------------------------+--------------------------------------------------
Reporter: mevenson | Owner: ehuelsmann
Type: defect | Status: new
Priority: minor | Milestone: 1.0.1
Component: interpreter | Version: 1.0
Keywords: |
-------------------------+--------------------------------------------------
[http://article.gmane.org/gmane.lisp.armedbear.devel/2138 Marshall Abrams
reports:]
{{{
It looks as if there's a bug in 1.0.0 with FORMAT's dollarsign directive's
handling of negative numbers when it has to round up. (Forgive me if this
is a known issue--I didn't find it when I searched the bug list and
mailing list archives--or if there's something I'm misunderstanding.)
The first group of examples use the F directive for comparison to show
that the problem seems to be specific to dollarsign. (I added blank lines
between example groups for easy reading.)
The second group of examples illustrates a problem using dollarsign with
negative numbers. The output is about 10x too large, and doesn't seem to
be getting rounded properly. I'm guessing that the out of bounds error is
the result of the same issue.
The third group of examples shows that the problem doesn't seem to occur
with positive numbers, although there's still an extra negative sign
preprended.
Thank you-
Marshall Abrams
Armed Bear Common Lisp 1.0.0-svn-13663
Java 1.6.0_29 Apple Inc.
Java HotSpot(TM) 64-Bit Server VM
Low-level initialization completed in 0.7 seconds.
Startup completed in 2.211 seconds.
Type ":help" for a list of available commands.
CL-USER(1): (format t "~,vf" 3 -0.1768522)
-0.177
NIL
CL-USER(2): (format t "~,vf" 2 -0.1768522)
-0.18
NIL
CL-USER(3): (format t "~,vf" 1 -0.1768522)
-0.2
NIL
CL-USER(4): (format t "~,vf" 0 -0.1768522)
-0.
NIL
CL-USER(5): (format t "~$" -0.1768522)
--1.6
NIL
CL-USER(6): (format t "~v$" 3 -0.1768522)
--1.75
NIL
CL-USER(7): (format t "~v$" 2 -0.1768522)
--1.6
NIL
CL-USER(8): (format t "~v$" 1 -0.1768522)
#<THREAD "interpreter" {10FA1B2D}>: Debugger invoked on condition of type
TYPE-ERROR
Array index out of bounds: 2
Restarts:
0: TOP-LEVEL Return to top level.
[1] CL-USER(9): 0
CL-USER(10): (format t "~v$" 0 -0.1768522)
--0.
NIL
CL-USER(11): (format t "~$" 0.1768522)
0.18
NIL
CL-USER(12): (format t "~v$" 3 0.1768522)
0.177
NIL
CL-USER(13): (format t "~v$" 2 0.1768522)
0.18
NIL
CL-USER(14): (format t "~v$" 1 0.1768522)
0.2
NIL
CL-USER(15): (format t "~v$" 0 0.1768522)
0.
NIL
}}}
--
Ticket URL: <http://trac.common-lisp.net/armedbear/ticket/190>
armedbear <http://common-lisp.net/project/armedbear>
armedbear
#240: FIND-CLASS does not implement 3-argument behavior
-----------------------+----------------------------------------------------
Reporter: rschlatte | Owner: somebody
Type: defect | Status: new
Priority: minor | Milestone:
Component: CLOS | Version:
Keywords: |
-----------------------+----------------------------------------------------
Currently find-class does not use a supplied third (environment)
parameter. (LispClass.java line 331 has a FIXME to that effect.) This
blocks the fix for #239 since classes cannot be inspected at compile-time.
--
Ticket URL: <http://trac.common-lisp.net/armedbear/ticket/240>
armedbear <http://common-lisp.net/project/armedbear>
armedbear
#159: COMPILE-FILE-16 and -17 failing for the wrong reason
------------------------+---------------------------------------------------
Reporter: ehuelsmann | Owner: nobody
Type: defect | Status: new
Priority: major | Milestone:
Component: java | Version:
Keywords: |
------------------------+---------------------------------------------------
The error emitted from COMPILE-FILE-16 and -17 is "Could not form URL for
"CLTEST:COMPILE-FILE-16", with a similar message for -17.
--
Ticket URL: <http://trac.common-lisp.net/armedbear/ticket/159>
armedbear <http://common-lisp.net/project/armedbear>
armedbear
#155: ABCL fails to start with '#' in Path
----------------------+-----------------------------------------------------
Reporter: mevenson | Owner: somebody
Type: defect | Status: new
Priority: minor | Milestone: 0.26
Component: other | Version: 0.24
Keywords: |
----------------------+-----------------------------------------------------
{{{
evenson@saturn:~/work/abcl-#154$ pwd
/export/home/evenson/work/abcl-#154
evenson@saturn:~/work/abcl-#154$ ./abcl
Armed Bear Common Lisp 0.26.0-dev
Java 1.6.0_25 Sun Microsystems Inc.
Java HotSpot(TM) 64-Bit Server VM
Low-level initialization completed in 0.645 seconds.
org.armedbear.lisp.IntegrityError
at
org.armedbear.lisp.Primitives$pf_error.execute(Primitives.java:1588)
at org.armedbear.lisp.Primitive.execute(Primitive.java:113)
at org.armedbear.lisp.Symbol.execute(Symbol.java:790)
at org.armedbear.lisp.Lisp.error(Lisp.java:374)
at org.armedbear.lisp.ZipCache.get(ZipCache.java:213)
at org.armedbear.lisp.ZipCache.get(ZipCache.java:102)
at org.armedbear.lisp.Pathname.truename(Pathname.java:2187)
at org.armedbear.lisp.Load.findLoadableFile(Load.java:68)
at org.armedbear.lisp.Load.loadSystemFile(Load.java:261)
at
org.armedbear.lisp.Interpreter.initializeLisp(Interpreter.java:172)
at
org.armedbear.lisp.Interpreter.createDefaultInstance(Interpreter.java:102)
at org.armedbear.lisp.Main$1.run(Main.java:46)
at java.lang.Thread.run(Thread.java:662)
ERROR placeholder called with arguments:
#<FILE-ERROR {163DC0BB}>
Failed to get cached ZipFile because java.util.zip.ZipException: error in
opening zip file
Exception in thread "interpreter" org.armedbear.lisp.IntegrityError
at
org.armedbear.lisp.Primitives$pf_error.execute(Primitives.java:1588)
at org.armedbear.lisp.Primitive.execute(Primitive.java:113)
at org.armedbear.lisp.Symbol.execute(Symbol.java:790)
at org.armedbear.lisp.Lisp.error(Lisp.java:374)
at org.armedbear.lisp.ZipCache.get(ZipCache.java:213)
at org.armedbear.lisp.ZipCache.get(ZipCache.java:102)
at org.armedbear.lisp.Pathname.truename(Pathname.java:2187)
at org.armedbear.lisp.Load.findLoadableFile(Load.java:68)
at org.armedbear.lisp.Load.loadSystemFile(Load.java:261)
at
org.armedbear.lisp.Interpreter.initializeLisp(Interpreter.java:172)
at
org.armedbear.lisp.Interpreter.createDefaultInstance(Interpreter.java:102)
at org.armedbear.lisp.Main$1.run(Main.java:46)
at java.lang.Thread.run(Thread.java:662)
}}}
--
Ticket URL: <http://trac.common-lisp.net/armedbear/ticket/155>
armedbear <http://common-lisp.net/project/armedbear>
armedbear
#133: Mixed case inconsistency in TRANSLATE-LOGICAL-PATHNAMES
-------------------------+--------------------------------------------------
Reporter: mevenson | Owner: ehuelsmann
Type: defect | Status: new
Priority: major | Milestone: 0.25
Component: interpreter | Version: 0.24
Keywords: |
-------------------------+--------------------------------------------------
Jonathan Boca reports
{{{
As the following code and transcript demonstrate,
translate-logical-pathname appears to be downcasing paths
inconsistently:
;;; test.cl
(setf (logical-pathname-translations "foo")
'(("foo:bar;*.lisp" "/FooRoot/bar/*.lisp")
("foo:*.lisp" "/FooRoot/*.lisp")))
;;; In the following pathname translation, the entire path is downcased
(pprint (translate-logical-pathname "foo:bar;foobar.lisp"))
;;; In each of the next two, the entire path EXCEPT for the host is
downcased --
;;; the host is unchanged
(pprint (translate-logical-pathname "foo:foobar.lisp"))
(pprint (translate-logical-pathname "foo:Foobar.lisp"))
---
Armed Bear Common Lisp 0.24.0
Java 1.6.0_22 Apple Inc.
Java HotSpot(TM) Client VM
Low-level initialization completed in 0.478 seconds.
Startup completed in 1.386 seconds.
Type ":help" for a list of available commands.
CL-USER(1): (load "test.cl")
#P"/fooroot/bar/foobar.lisp"
#P"/FooRoot/foobar.lisp"
#P"/FooRoot/foobar.lisp"
T
CL-USER(2):
---
SBCL and CLISP both produce the following output for the above code:
#P"/FooRoot/bar/foobar.lisp"
#P"/FooRoot/foobar.lisp"
#P"/FooRoot/foobar.lisp"
Allegro's ALISP and MLISP both produce the following:
#P"/FooRoot/bar/foobar.lisp"
#P"/FooRoot/foobar.lisp"
#P"/FooRoot/Foobar.lisp"
}}}
--
Ticket URL: <http://trac.common-lisp.net/armedbear/ticket/133>
armedbear <http://common-lisp.net/project/armedbear>
armedbear
#180: stack overflow with lparallel
---------------------------------------------------------+------------------
Reporter: mevenson | Owner: mevenson
Type: defect | Status: new
Priority: major | Milestone: unscheduled
Component: other | Version: 1.0
Keywords: lparallel stack-overflow jvm multi-threaded |
---------------------------------------------------------+------------------
With the [http://lparallel.com very interesting lparallel library], ABCL
can get into some stack overflow situations (especially on newer JVM
implementations).
Also, I get the feeling that the BORDEAUX-THREADS mapping for ABCL is not
optimal, as when I run LPARALLEL full out on a many worker kernel, I don't
maximize the actual available CPU/RAM on a multicore x64 system.
--
Ticket URL: <http://trac.common-lisp.net/armedbear/ticket/180>
armedbear <http://common-lisp.net/project/armedbear>
armedbear
#244: compile doesn't return correct values for warnings-p and failure-p
------------------------+---------------------------------------------------
Reporter: ehuelsmann | Owner: ehuelsmann
Type: defect | Status: new
Priority: major | Milestone: 1.1.0
Component: compiler | Version:
Keywords: |
------------------------+---------------------------------------------------
(compile nil '(lambda () (char=)))
; Caught WARNING:
; Wrong number of arguments for CHAR=.
; Compilation unit finished
; Caught 1 WARNING condition
#<FUNCTION (LAMBDA ()) {456E3EB3}>
NIL
NIL
while it should be T, T.
jvm-compile, which handles this doesn't succeed because the underlying
with-compilation-unit eats all the warnings and errors so that
jvm-compile's handler-bind doesn't get a piece of them. Binding
*resignal-compiler-warnings* to T inside jvm-compile resolves this.
--
Ticket URL: <http://trac.common-lisp.net/armedbear/ticket/244>
armedbear <http://common-lisp.net/project/armedbear>
armedbear
#169: Conformance with section 3.2.4.4 (externalized objects in COMPILE-FILE)
------------------------+---------------------------------------------------
Reporter: ehuelsmann | Owner: ehuelsmann
Type: defect | Status: new
Priority: major | Milestone:
Component: compiler | Version:
Keywords: |
------------------------+---------------------------------------------------
Currently, if the same object is encountered in multiple forms being
compiled, that object is externalized on each encounter.
The spec requires that identical objects in the source be identical in the
compiled file as per the first sentence of
[http://www.lispworks.com/documentation/HyperSpec/Body/03_bdd.htm section
3.2.4.4].
As a consequence, we'll need an ''object table'' of some kind, allowing
the object to be referenced further down in the file compilation.
--
Ticket URL: <http://trac.common-lisp.net/armedbear/ticket/169>
armedbear <http://common-lisp.net/project/armedbear>
armedbear
#132: Inconsistent use of :case :common for pathnames
-------------------------+--------------------------------------------------
Reporter: mevenson | Owner: ehuelsmann
Type: defect | Status: new
Priority: major | Milestone: 0.25
Component: interpreter | Version: 0.24
Keywords: |
-------------------------+--------------------------------------------------
Pascal Bourguignon notes:
{{{
CLHS says:
19.2.2.1.2.2 Common Case in Pathname Components
For the functions in Figure 19-2, a value of :common for the :case
argument that these functions should receive and yield strings in
component values according to the following conventions:
* All uppercase means to use a file system's customary case.
* All lowercase means to use the opposite of the customary case.
* Mixed case represents itself.
Note that these conventions have been chosen in such a way that
translation from :local to :common and back to :local is
information-preserving.
[pjb@kuiper :0.0 lisp]$ abcl
Armed Bear Common Lisp 0.20.0
Java 1.6.0_22 Sun Microsystems Inc.
Java HotSpot(TM) Server VM
Low-level initialization completed in 0.265 seconds.
Startup completed in 0.718 seconds.
Type ":help" for a list of available commands.
CL-USER(1): (make-pathname :name "TEST" :type "LISP" :case :common)
#P"TEST.LISP"
CL-USER(2): (namestring (make-pathname :name "TEST" :type "LISP" :case
:common))
"TEST.LISP"
I'm on a linux system on a ext3 file system. The customary case is
lower case (case significant on this particular file system, but
99.999% of the files on unix are lower case).
Therefore I would expect to get #P"test.lisp"
Notice that:
(make-pathname :name "test" :type "lisp" :case :common)
should produce #P"TEST.LISP"
and that:
(make-pathname :name "Test" :type "Lisp" :case :common)
should produce #P"Test.Lisp"
}}}
{{{
Mark Evenson writes:
> > On 11/7/10 5:02 AM, Pascal J. Bourguignon wrote:
>> >>
>> >> CLHS says:
>> >>
>> >> 19.2.2.1.2.2 Common Case in Pathname Components
>> >>
>> >> For the functions in Figure 19-2, a value of :common for the
:case
>> >> argument that these functions should receive and yield strings
in
>> >> component values according to the following conventions:
>> >>
>> >> * All uppercase means to use a file system's customary case.
>> >> * All lowercase means to use the opposite of the customary
case.
>> >> * Mixed case represents itself.
>> >>
>> >> Note that these conventions have been chosen in such a way that
>> >> translation from :local to :common and back to :local is
>> >> information-preserving.
> >
> > What an odd corner of the CLHS, littered with the bones of extinct
> > filesystems! This behavior that seems like it would produce
> > unpleasantries much more than it would help anyone, violating the
> > principle of least surprise. But we claim that ABCL will be ANSI
first
> > and foremost, so I guess we have to pay attention hereā¦
I should mention that I use routinely logical pathnames, and they work
very well, on all implementations that conformantly implement them.
That means that all my logical pathnames are always upcase letters, and
no special symbols (apart from an occasional dash).
I understand that using implementation dependant syntax (special
characters, lower-case, mixed-case) in logical pathnames can lead to
surprises, but I avoid them.
Now, it's not a question of extinct file systems. You still have to
deal with at least two different major syntaxes: POSIX and
MS-Windows/MS-DOS.
I just cannot use in programs that will have to run on both Linux or
MacOSX and MS-Windows physical pathname literals, because they don't use
the same syntax.
On the other hand, #P"HOME:SRC;LISP;EXAMPLE.LISP"
can be translated to either
#P"C:\\Users Files\\Pascal\\src\\lisp\\example.lisp" or
#P"/home/pjb/src/lisp/example.lisp"
portably on these targets.
The point for an implementation is to know what it's targets are, and to
implement proper behavior when translating and merging logical
pathnames. You must be careful when merging logical pathnames with
physical pathnames, notably when it's done in make-pathname: the :case
parameter must have effect only on the new strings, not on the :defaults
parameter.
> > I suppose there is no definition of "customary case", huh?
Indeed.
> > Pascal suggests a notion of filesystem statistics ("99.999% of files
> > are lowercase") but for a developer dealing with lots of Java files
> > this isn't very releavant.
Does Java provide its own file system, or does it map to the host file
system?
Notice that logical pathnames don't have to be able to represent all the
physical pathnames, without an explicit translation.
If you have a file system that is case sensitive, then you may write:
(setf (logical-pathname-translations "APP")
(list
(list #P"APP:EXAMPLE;FILE.LISP"
#P"/MyApp/Example/File.lisp")
(list #P"APP:EXAMPLE;ANOTHER-FILE.LISP"
#P"/MyApp/Example/AnotherFile.lisp")
(list #P"APP:EXAMPLE;*.DATA"
#P"/MyApp/Example/*.appdata")
(list #P"APP:EXAMPLE;SOME-MODULE.*"
#P"/MyApp/Example/SomeBigModule.*")
(list #P"APP:APP.CONFIGURATION" #P"/MyApp/.config")
(list #P"APP:CUSTOMARY;**;*" #P"/MyApp;**;*")
(list #P"APP:CUSTOMARY;**;*.*" #P"/MyApp;**;*.*")))
to be able to access to files with strange physical names.
The question indeed is to decide what is the customary case. You can
choose uppercase or you can choose lowercase. This matters only for
file systems that are case sensitive, but even file systems that are not
case sensitive, such as MS-DOS, have a prefered way to display the
names.
> > Lacking a more precise definition, I would then advocate that we
declare
> > lowercase to be the customary case across UNIX, OSX, and Windows for
> > ABCL, patching our behavior accordingly.
That would be good.
> > I thought briefly about advocating Windows to have "uppercase" as its
> > customary case, but that is only really true in a DOS world which
> > "modern" Windows systems really aren't any more.
Yes.
> > And although we theoretically run on JVMs on say VMS, if we run into
> > such needs, we might devote a user-accessible special variable to
> > control the implementation.
This is also a good option.
}}}
--
Ticket URL: <http://trac.common-lisp.net/armedbear/ticket/132>
armedbear <http://common-lisp.net/project/armedbear>
armedbear
#197: JAR-PATHNAME errors and ambiguities
--------------------------+-------------------------------------------------
Reporter: mevenson | Owner: ehuelsmann
Type: defect | Status: new
Priority: major | Milestone: 1.1.0
Component: interpreter | Version: 1.0.1
Keywords: jar-pathname |
--------------------------+-------------------------------------------------
[http://article.gmane.org/gmane.lisp.armedbear.devel/2200 Yong reports on
armedbear@devel]:
{{{
CL-USER> (make-pathname :device '("c:/a.b.jar")
:directory '(:absolute "cl-ppcre"))
; Evaluation aborted on NIL.
}}}
Why am I not getting any errors (and not dropping into a debugger)? I
know the error is because the device is not a list of a pathname ie
missing a #P.
2. What's printed out is not what was read in (trailing /)
{{{
CL-USER> #P"jar:file:c:/a/b.jar!/cl-ppcre/"
#P"jar:file:c:/a/b.jar!/cl-ppcre"
}}}
3. Should this repeated jar:file:jar:file thing throw an error?
{{{
#P"jar:file:jar:file:c:/a/b.jar!/cl-ppcre/"
==> #P"jar:file:jar:file:c:/a/b.jar!/cl-ppcre"
}}}
--
Ticket URL: <http://trac.common-lisp.net/armedbear/ticket/197>
armedbear <http://common-lisp.net/project/armedbear>
armedbear