#402: Start publishing abcl binary maven artifacts
----------------------+----------------------------
Reporter: mevenson | Owner:
Type: defect | Status: new
Priority: major | Milestone: 1.3.4
Component: other | Version: 1.4.0-dev
Keywords: | Parent Tickets:
----------------------+----------------------------
We should figure out how to get the abcl binary artifacts back into the
public Maven repository system
--
Ticket URL: <http://abcl.org/trac/ticket/402>
armedbear <http://abcl.org>
armedbear
#420: Add ability to optimize function calls with lambda in function position.
Use it to optimize jss
--------------------------+----------------------------
Reporter: mevenson | Owner:
Type: enhancement | Status: new
Priority: major | Milestone: 1.5.0
Component: compiler | Version: 1.5.0-dev
Keywords: github-issue | Parent Tickets:
--------------------------+----------------------------
Precompiler: When compiling a form with a lambda in the function
position, possibly optimize it
Case 1: If the lambda has a single form in it, let someone define a
transform using:
define-function-position-lambda-transform (body-function-name (arglist
form args) &body body)
body-function-name is the car of the single form in the lambda
arglist is the arglist of the lambda
form is the single form within the lambda
args are the arguments to which the lambda will be defined.
The function should check whether it can do a transform, and do it if
so, otherwise return nil signalling it couldn't
Case 2: If case 1 is not successful then if the arglist is a simple
one (no &key, &rest, &optional) then do a standard beta-reduction
binding the args to arglist using let
(https://wiki.haskell.org/Beta_reduction)
If not, return and do the usual thing.
An example is in contrib/jss/optimize-java-call.lisp
To see benefits, (compile-file contrib/jss/test-optimize-java-call.lisp)
and then load the compiled file. You should see something like the below
which reports the timings for the optimized and unoptimized version of
10000 calls of (#"compile" 'regex.pattern ".*")
--
With optimization: (INVOKE-RESTARGS-MACRO "compile" (QUOTE REGEX.PATTERN)
(LIST ".") NIL T)
Without optimization: ((LAMBDA (#:G85648 &REST #:G85649) (INVOKE-RESTARGS
"compile" #:G85648 #:G85649 NIL)) (QUOTE REGEX.PATTERN) ".")
JUST-LOOP
0.0 seconds real time
0 cons cells
OPTIMIZED-JSS
0.011 seconds real time
0 cons cells
UNOPTIMIZED-JSS
0.325 seconds real time
800156 cons cells
See:
https://mailman.common-lisp.net/pipermail/armedbear-
devel/2016-October/003726.html
https://mailman.common-lisp.net/pipermail/armedbear-
devel/2016-November/003733.html
--
Ticket URL: <http://abcl.org/trac/ticket/420>
armedbear <http://abcl.org>
armedbear
#390: ABCL-ASDF:RESOLVE not working
--------------------------+----------------------------
Reporter: mevenson | Owner:
Type: defect | Status: new
Priority: critical | Milestone: 1.4.0
Component: abcl-contrib | Version: 1.4.0-dev
Keywords: abcl-asdf | Parent Tickets:
--------------------------+----------------------------
Without the presence of a <file:~/.m2/> directory, populated by command
line mvn usage, the ABCL-ASDF mechanism is not working:
{{{
CL-USER> (ABCL-ASDF:RESOLVE-DEPENDENCIES "net.java.dev.jna" "jna" :VERSION
"4.1.0")
}}}
{{{
Java exception
'org.eclipse.aether.collection.DependencyCollectionException: Failed to
read artifact descriptor for net.java.dev.jna:jna:jar:4.1.0'.
[Condition of type JAVA-EXCEPTION]
Restarts:
0: [RETRY] Retry compiling #<ASDF/INTERFACE:MVN "jna"
"net.java.dev.jna/jna/4.1.0">.
1: [ACCEPT] Continue, treating compiling #<ASDF/INTERFACE:MVN "jna"
"net.java.dev.jna/jna/4.1.0"> as having been successful.
2: [RETRY] Retry ASDF operation.
3: [CLEAR-CONFIGURATION-AND-RETRY] Retry ASDF operation after resetting
the configuration.
4: [RETRY] Retry SLIME REPL evaluation request.
5: [*ABORT] Return to SLIME's top level.
}}}
Switching between Maven versions 3.2.5 and 3.3.3 seems to give the same
problems.
--
Ticket URL: <http://abcl.org/trac/ticket/390>
armedbear <http://abcl.org>
armedbear
#418: maven-embedder needs maven on classpath in order to compile
------------------------------------+------------------------
Reporter: mevenson | Owner:
Type: defect | Status: new
Priority: major | Milestone: 1.5.0
Component: abcl-contrib | Version:
Keywords: github-issue abcl-asdf | Parent Tickets:
------------------------------------+------------------------
From Alan <https://github.com/armedbear/abcl/issues/10>:
[…] maven-embedder.lisp needs to be recompiled when abcl-asdf is required.
Periodically I tear my hair out trying to figure out how to make an
initial test run of abcl.jar how to know that.
What do you think of wrapping the first part (up until init is defined)
and then calling init inside an eval-when?
Might be nice to add a build target that installs maven if mvn isn't on
PATH.
{{{
@@ -41,6 +41,7 @@ Test:
|#
+(eval-when (:compile-toplevel :load-toplevel :execute)
(defparameter *maven-verbose* t
"Stream to send output from the Maven Aether subsystem to, or NIL to
muffle output")
@@ -222,7 +224,10 @@ of the mvn executable with an explicit value."
(error "Please obtain and install maven-3.0.3 or later locally from
<http://maven.apache.org/download.html>, then set ABCL-ASDF:*MVN-LIBS-
DIRECTORY* to the directory containing maven-core-3.*.jar et. al."))
(unless (ensure-mvn-version)
(error "We need maven-3.0.3 or later.")) (add-directory-jars-to-
class-path *mvn-libs-directory* nil)
- (setf *init* t))
+ (setf *init* t))
+
+(init))
+
}}}
--
Ticket URL: <http://abcl.org/trac/ticket/418>
armedbear <http://abcl.org>
armedbear