<div dir="ltr">IMHO, anything we can do, as quickly as possible, to eliminate "<span style="font-size:12.8px">It is a minor miracle that our compiler--which only outputs JVM 5</span><br style="font-size:12.8px"><span style="font-size:12.8px">bytecode--continues to work" is deeply appreciated.</span><div><span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px">Blake McBride</span></div><div><span style="font-size:12.8px"><br></span></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Nov 18, 2016 at 3:46 AM, Mark Evenson <span dir="ltr"><<a href="mailto:evenson@panix.com" target="_blank">evenson@panix.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I have finally found the time to trace down the source of errors for<br>
CL-TEST-GRID running abcl-1.4.0 tests.  In short, the problem arises<br>
from the fact that SYS:RUN-PROGRAM does not run pre-Java7. This does not<br>
affect core ANSI CL behavior, but it does cause the ABCL-ASDF contrib to<br>
fail, which is used to locate and load the JNA artifact needed by CFFI.<br>
<br>
>From [the ticket I just filed][422]:<br>
<br>
[422]: <a href="http://abcl.org/trac/ticket/422" rel="noreferrer" target="_blank">http://abcl.org/trac/ticket/<wbr>422</a><br>
<br>
<br>
In chasing down the errors with CFFI on CL-TEST-GRID<br>
<​<a href="https://mailman.common-lisp.net/pipermail/armedbear-devel/2016-October/003719.html" rel="noreferrer" target="_blank">https://mailman.common-lisp.<wbr>net/pipermail/armedbear-devel/<wbr>2016-October/003719.html</a>>,<br>
I have found that the [java.lang.ProcessBuilder?$<wbr>Redirect][] interface<br>
used by Elias and Olof to extend SYS:RUN-PROGRAM for different types of<br>
I/O abstractions was introduced with Java 7, and will hence not work on<br>
earlier Java implementations.<br>
<br>
[java.lang.ProcessBuilder?$<wbr>Redirect]:<br>
​<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ProcessBuilder.Redirect.html" rel="noreferrer" target="_blank">https://docs.oracle.com/<wbr>javase/8/docs/api/java/lang/<wbr>ProcessBuilder.Redirect.html</a><br>
<br>
Invoking ABCL-ASDF:ENSURE-MVN-VERSION, the following form causes the error<br>
<br>
(JFIELD "java.lang.ProcessBuilder$<wbr>Redirect" "INHERIT")<br>
<br>
TODO: investigate the Java 6 APIs to see if there is a way to do I/O<br>
redirection with backwards compatibility. I currently suspect that there<br>
is no way to support Java 5/6 for this usage, which is why we never<br>
implemented I/O redirection previously.<br>
<br>
There is undoubtedly a way re-write the SYS:RUN-PROGRAM interface so<br>
that we may invoke a process to read its output as a string in Java<br>
5/Java 6, as it worked before. But we will have to figure out a way to<br>
advertise the different features of SYS:RUN-PROGRAM depending on the<br>
hosting VM.<br>
<br>
Longer term, we may want to deprecate Java 5/6, but I would really have<br>
the compiler emit Java 7-compatible bytecode (mainly by passing the Java<br>
6 verification process) before we begin that.<br>
<br>
----<br>
<br>
As a general survey question:  would any current ABCL user be impacted<br>
if we dropped Java5/Java6 support?  i.e. is there anyone "stuck" on<br>
pre-Java7 for some organizational reason?<br>
<br>
Historically, when ORCL was absorbing SUNW from 2009-2011, there was<br>
quite a bit of uncertainty as to how available an FOSS JVM was going to<br>
be going forward, which is why we have hung onto Java5 compatibility as<br>
there was at least publicly available source to build it.  Since then,<br>
ORCL has seem to commit to not only allowing openjdk-[678] to exist, but<br>
actually has synchronized their patching of their redistributed JVMs to<br>
the relevant OpenJDK version.  In addition, ORCL has started to<br>
aggressively EOL previous JVMs (Java7 was EOL'd in 2015).  Therefore,<br>
there is no apparent reason that end-users cannot freely use Java8 JVMs<br>
other than per-application "local ecosystem" restrictions.<br>
<br>
It is a minor miracle that our compiler--which only outputs JVM 5<br>
bytecode--continues to work.<br>
<br>
Comments solicited.<br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
"A screaming comes across the sky.  It has happened before, but there<br>
is nothing to compare to it now."<br>
<br>
</font></span></blockquote></div><br></div></div>