f2cl issueshttps://gitlab.common-lisp.net/f2cl/f2cl/-/issues2017-03-30T21:22:53Zhttps://gitlab.common-lisp.net/f2cl/f2cl/-/issues/1Does not build properly - missing files?2017-03-30T21:22:53ZZach BeaneDoes not build properly - missing files?http://report.quicklisp.org/2017-03-30/failure-report/f2cl.html has a build log of a number of systems that seem to be missing input files.
For example: Failed to find the TRUENAME of /home/quicklisp/quicklisp-controller/dist/build-cac...http://report.quicklisp.org/2017-03-30/failure-report/f2cl.html has a build log of a number of systems that seem to be missing input files.
For example: Failed to find the TRUENAME of /home/quicklisp/quicklisp-controller/dist/build-cache/f2cl/6b4add8520afe4b848041272be5d188ae228db92/f2cl-20170330-git/packages/toms/717/dv7cpy.lisp: No such file or directoryFrançois-René RideauFrançois-René Rideauhttps://gitlab.common-lisp.net/f2cl/f2cl/-/issues/6f2cl miscompiles dlamrg.f from lapack.2018-11-22T18:34:49ZRaymond Toyf2cl miscompiles dlamrg.f from lapack.f2cl compiles dlamrg.f incorrectly. It thinks the array `index` is a statement function. It's just an array.
(From https://trac.common-lisp.net/f2cl/ticket/5)f2cl compiles dlamrg.f incorrectly. It thinks the array `index` is a statement function. It's just an array.
(From https://trac.common-lisp.net/f2cl/ticket/5)https://gitlab.common-lisp.net/f2cl/f2cl/-/issues/8Probably unintentional leaking of optimization changes2023-07-16T14:10:59ZRaymond ToyProbably unintentional leaking of optimization changes[f2cl/src/f2cl2.l#L16](src/f2cl2.l#L16)
The **eval-when** when includes load evaluates the form at load time, which in this case means doing the call ** (proclaim '(optimize (speed 3) (safety 1)))** at load time. That is a bad idea, beca...[f2cl/src/f2cl2.l#L16](src/f2cl2.l#L16)
The **eval-when** when includes load evaluates the form at load time, which in this case means doing the call ** (proclaim '(optimize (speed 3) (safety 1)))** at load time. That is a bad idea, because it means that after loading this fiile, anything that doesn't explicitly sets the **optimize safety** and **speed** level will be compiled with these setting rather than the default settings.
The other sub-form in the same **eval-when** form, the call to optimize with special, should happen at load time. So the right fix is to split these to two forms:
```
(eval-when (compile) (proclaim '(optimize (speed 3) (safety 1))))
(eval-when (compile load eval)
(proclaim '(special *intrinsic-function-names* *external-function-names*
*subprog_name* *subprog-stmt-fns*
*functions-used*)))
```Raymond ToyRaymond Toy