libera/#commonlisp - IRC Chatlog
Search
14:13:55
fe[nl]ix
Shinmera: I have an SBCL statically linked with libfixposix and openssl: https://github.com/sionescu/sbcl-goodies
14:33:22
younder
Is there any spec on what libfixposix does? All I see is fix problems moving between *NIX platforms.
17:01:53
cage
someway I was able to remove the osicat ad dependency of the project, seems to works so far 🙂
0:30:13
nij-
Question. When the compiler must evaluate a form at compile time, how does it evaluate? Must it compile the form and execute the compiled result? Or could it use an interpretter? Is this behavior specified in the standard?
0:54:06
yitzi
Please note in the definition of evaluation: "...such execution might be implemented directly in one step by an interpreter or in two steps by first compiling the form and then executing the compiled code; this choice is dependent both on context and the nature of the implementation, but in any case is not in general detectable by any program. ..."
0:56:44
pillton
From CLHS 3.1: Evaluation: "Evaluation is the process by which a program is executed in Common Lisp. The mechanism of evaluation is manifested both implicitly through the effect of the Lisp read-eval-print loop, and explicitly through the presence of the functions eval, compile, compile-file, and load. Any of these facilities might share the same execution strategy, or each might use a different one. The behavior of a conforming program
0:56:44
pillton
processed by eval and by compile-file might differ; see Section 3.2.2.3 (Semantic Constraints)."
0:57:12
pillton
Years ago you could type clhs 3.1 and a link to the standard would be posted in the channel by a bot.
1:02:53
nij-
For example, I would expect that (funcall (compile-file (lambda () FORM)) should have the same behavior of (eval FORM).
1:03:05
pillton
Of course it specifies their semantics. It has a definition of a conforming program.
1:03:48
yitzi
In general, the spec leaves ambiguity where optimization is possible by an implementation.
1:05:46
yitzi
The spec wasn't written like the w3 specs, as documentation of "existing practices," but as a comprimise by actual implementers, i.e. companies and researchers that had actual experience with the difficulties and issues associated with writing an efficient LISP implementation.
1:08:58
yitzi
The committee and the industry reps, in other words. It was very expensive to do at the time.
1:12:32
pillton
nij-: I think EVAL and COMPILE differ in their requirement to apply compiler macros so I don't think they would be the same.
1:13:45
pillton
Also, (compile nil (lambda () FORM)) is different to (compile nil '(lambda () FORM)).
1:15:10
nij-
But forming such a committee is quite expensive. There must be some main funders behind.
1:15:58
nij-
pillton The compiler macros are supposed to have the same effect of the corresponding function. So except this, the rest shoudl still be the same?
1:20:04
pillton
It depends on your definition of same. A compiler macro may cache a value in the global environment for example. The cached value may have no effect on the result of the form, but the environment is certainly impacted.
1:26:30
pillton
I would see the most differences between the interpreter and compiler in CMUCL. I know SBCL has an interpreter but I don't know enough to know when it is used in preference to the compiler.