Hi list,
attached are some patches (from [1]) that have been sitting around for a while; one is more of a work in progress, but it would still be great to know if it's at least going in the right direction.
- 0001 Fixes an annoying issue I had where imported nested classes (with the dollar sign in their name) weren't found via JSS. - 0002 Adds the `external-only` option as seen in SBCL to `apropos`, because it's convenient. - 0005 Adds support for setting the `file-position` on `string-output-stream`s. Might be somewhat obscure, but I stumbled upon it in some situation.
The next one could use some comments as well, but I consider it pretty well working:
- 0003 Adds a hook and simple machinery to support multiple internal disassembler backends. At the moment I've added the ObjectWeb ASM one and kept the existing JAD call. Should this somehow add an ASDF system to support loading of those libraries via Maven? At the moment a user has to have the matching JARs in their classpath for it to work.
Now the one that is not nearly done is 0004 which attempts to fix some of the issues with `jnew-runtime-class`, in particular working custom constructors. Now I've noticed that that's a *big* topic, so this is just a starting point. I'm deliberating ways of supporting a direct `super` call too, that includes fixing the supermethod calls that are still in the code.
Let me know what you think, best regards, Olof
Thanks! It's especially great for me to see someone working on jnew-runtime-class :) I hope your patches get incorporated. My plans for runtime-class were, besides supporting constructors and polishing the whole thing, to provide a macro on top of it (say, define-java-class) that would generate the class at macroexpansion time and somehow hook with the compiler to include the class in compilation output somewhere. The ultimate goal being generating a jar with classes implemented in Lisp accessible to Java and other JVM languages. That would be really cool, although I never properly evaluated the feasibility.
Keep up the good work! Cheers Alessio
On 9 August 2016 at 21:46, Olof-Joachim Frahm olof@macrolet.net wrote:
Hi list,
attached are some patches (from [1]) that have been sitting around for a while; one is more of a work in progress, but it would still be great to know if it's at least going in the right direction.
- 0001 Fixes an annoying issue I had where imported nested classes (with the dollar sign in their name) weren't found via JSS.
- 0002 Adds the `external-only` option as seen in SBCL to `apropos`, because it's convenient.
- 0005 Adds support for setting the `file-position` on `string-output-stream`s. Might be somewhat obscure, but I stumbled upon it in some situation.
The next one could use some comments as well, but I consider it pretty well working:
- 0003 Adds a hook and simple machinery to support multiple internal disassembler backends. At the moment I've added the ObjectWeb ASM one and kept the existing JAD call. Should this somehow add an ASDF system to support loading of those libraries via Maven? At the moment a user has to have the matching JARs in their classpath for it to work.
Now the one that is not nearly done is 0004 which attempts to fix some of the issues with `jnew-runtime-class`, in particular working custom constructors. Now I've noticed that that's a *big* topic, so this is just a starting point. I'm deliberating ways of supporting a direct `super` call too, that includes fixing the supermethod calls that are still in the code.
Let me know what you think, best regards, Olof
On 2016/8/9 21:46, Olof-Joachim Frahm wrote:
Hi list,
attached are some patches (from [1]) that have been sitting around for a while; one is more of a work in progress, but it would still be great to know if it's at least going in the right direction.
- 0001 Fixes an annoying issue I had where imported nested classes (with the dollar sign in their name) weren't found via JSS.
- 0002 Adds the `external-only` option as seen in SBCL to `apropos`, because it's convenient.
- 0005 Adds support for setting the `file-position` on `string-output-stream`s. Might be somewhat obscure, but I stumbled upon it in some situation.
The next one could use some comments as well, but I consider it pretty well working:
- 0003 Adds a hook and simple machinery to support multiple internal disassembler backends. At the moment I've added the ObjectWeb ASM one and kept the existing JAD call. Should this somehow add an ASDF system to support loading of those libraries via Maven? At the moment a user has to have the matching JARs in their classpath for it to work.
Now the one that is not nearly done is 0004 which attempts to fix some of the issues with `jnew-runtime-class`, in particular working custom constructors. Now I've noticed that that's a *big* topic, so this is just a starting point. I'm deliberating ways of supporting a direct `super` call too, that includes fixing the supermethod calls that are still in the code.
Let me know what you think, best regards, Olof
The patches have been [applied as five discrete patches to abcl trunk][14682] as part of the upcoming abcl-1.4.0 release. Thanks for the bug fixes and making little things easier!
[14682]: http://abcl.org/trac/changeset/14862
On 9/4/16 09:11, Mark Evenson wrote:
On 2016/8/9 21:46, Olof-Joachim Frahm wrote:
Hi list,
[…]
- 0005 Adds support for setting the `file-position` on `string-output-stream`s. Might be somewhat obscure, but I stumbled upon it in some situation.
[…]
Apparently, this [one breaks CFFI][1]. Looking at how to fix, but my time is limited, as I am real busy with the [latest startup to use ABCL][2].
[1]: http://abcl.org/trac/ticket/413 [2]: https://minebox.io
If I can't get a fix in the next 24 hours, I'll revert this patch for further work.
yers in CONS, Mark
On 2016/9/22 20:17, Mark Evenson wrote:
On 9/4/16 09:11, Mark Evenson wrote:
On 2016/8/9 21:46, Olof-Joachim Frahm wrote:
Hi list,
[…]
- 0005 Adds support for setting the `file-position` on `string-output-stream`s. Might be somewhat obscure, but I stumbled upon it in some situation.
[…]
Apparently, this [one breaks CFFI][1]. Looking at how to fix, but my time is limited, as I am real busy with the [latest startup to use ABCL][2].
Incorrect triage on my part: the [actual offending patch][r14858] is the tres cool extension to the generation of synthetic runtime constructors contributed by Olof (https://github.com/ferada/abcl/). The patch seems to cause memory corruption (in various NNNstrcmpXXX parts of libc) in at least the currently shipping macOS ORCL JVM. More tests pending.
(lisp-implementation-version) "1.4.0-dev" "Java_HotSpot(TM)_64-Bit_Server_VM-Oracle_Corporation-1.8.0_102-b14" "x86_64-Mac_OS_X-10.12"
[r14858]: https://github.com/easye/abcl/commit/bf8c4b69d9a61fae41c7b1d0b0602714b3ec6da...
If I can't get a fix in the next 24 hours, I'll revert this patch for further work.
Well, that 24 hours has stretched, well, to this moment.
I have decided to try to release 1.4.0 in the remaining days of September.
To solicit the widest number of participants in patches to address [413](http://abcl.org/trac/ticket/413) and other problems people have with shipping the current trunk as 1.4.0, I have established Git bridges to the svn system at [github](https://github.com/easye/abcl) and [common-lisp.net](https://gitlab.common-lisp.net/mevenson/abcl).
All praise the CONS, Mark
On 2016/9/30 00:15, Mark Evenson wrote:
[…]
Apparently, this [one breaks CFFI][1]. Looking at how to fix, but my time is limited, as I am real busy with the [latest startup to use ABCL][2].
Incorrect triage on my part: the [actual offending patch][r14858] is the tres cool extension to the generation of synthetic runtime constructors contributed by Olof (https://github.com/ferada/abcl/). The patch seems to cause memory corruption (in various NNNstrcmpXXX parts of libc) in at least the currently shipping macOS ORCL JVM. More tests pending.
[…]
Good news: thanks to a tip from Anton, I have worked out the source of my problems with getting Olof's work on JNEW-RUNTIME-CLASS. The problem occurs when one is using a pre cffi-0.18.0 release, as is the case with Quicklisp 2016-09-29. Presumably, both Olof and Elias are using the "correct" version of cffi, so never saw these problems. Note to future self: provide a simple Lisp form that would transcribe how all ASDF/Quicklisp dependencies are resolved on a given installation for diagnostics in the future
For those wishing to "patch" existing Quicklisp installation one can add a functioning version of cffi-0.18.0 quickly via:
cd ~/quicklisp/local-projects && git clone -b v0.18.0 https://github.com/cffi/cffi
All ASDF definitions that are placed under file:~/quicklisp/local-projects override those defined by a given Quicklisp dist. When Quicklisp gets updated, be sure to remove this local directory.
[Olof's contributions to JNEW-RUNTIME-CLASS][r14903] have been restored to trunk in all their glory.
[r14903]: http://abcl.org/trac/changeset/14903
armedbear-devel@common-lisp.net