On 29 Mar 2014, at 19:47, Faré <fah...@gmail.com> wrote: >>> (1) guaranteeing a value of *read-default-float-format* >>> and other syntax variables when compiling a library. >>> I still argue that (1) is essential for build determinism, >>> and enabling users to change syntax at the REPL. >> >> Are you also considering the following use case? >> >> - Assume I’m developing a library for a specific Common Lisp implementation. >> Let’s choose LispWorks as an example, although it could be any other. (I’m >> just choosing LispWorks as an example because I happen to use it myself most >> often.) LispWorks comes with its own system definition facility, and with >> its own default values for pre-defined global variables in the CL package >> that may or may not be the same as those of other CL implementations. Since >> I’m also maintaining portable libraries, I prefer to use ASDF even for >> LispWorks-only libraries, so I don’t have to change tools on a regular >> basis. However, I would also like to make sure that LispWorks users can use >> the LispWorks system definition facility for my library as an alternative. >> Will it be possible to use ASDF without it messing with the default values >> for pre-defined global variables, so that I have a guarantee that I get the >> same result no matter whether I use ASDF or some other system definition >> facility? (I’m fine with doing extra work in the system definitions, but I’m >> not sure I’d be fine with adding extra headers to the lisp files.) >> > I admit I have only limited knowledge of LispWorks's defsystem — but > that it made me appreciate Dan Barlow's design better (though not his > implementation). Writing LW defsystem rules to process dependencies > correctly is *possible*, but by no means trivial. I don't know what > guarantees the LW defsystem does or does not provide in terms of > variable bindings — if you know it, it would be great of you to > explain what they are (or just link to a page that does, if there is > one). Indeed, if these assumptions differ from those of ASDF today or > tomorrow, it would be nice to have a simple way to declare around > wrappers that provide the alternative assumptions.
…same for mk-defsystem, same for Allegro’s system definition facility, and so on. Or maybe, alternatively, such things don’t belong in a system definition facility, but should be covered by some other tool? >>> That's not how it works, unless you include a bit for *rdff* in the >>> name of the fasl cache directory — and since the planning is done >>> based on pathnames before the compilation happens, that should still >>> be *rdff* at the beginning of compilation. Otherwise, the build is not >>> deterministic, and two different toplevel programs will poison each >>> other's builds. >> >> …not even if you :force t? >> > If you make :force t the default, you lose incrementality, and fast > startup time for end-user scripts. If you say "things are unsafe by > default", you lose modularity and you make it impossible to distribute > scripts to end users. Either way, if you don't have a deterministic > build *by default*, easy deployment of scripts to end-users is not > possible anymore. I understand your desire for deterministic builds. I don’t understand your desire for deterministic builds being the default. >>>> You also have the option to fork a particular Common Lisp implementation >>> So do you. That's a non-argument that assumes you're the dictator of CL. >> Huh?!? > The common "love it or leave it" slogan is assuming the utterer owns > the domain at stake. Otherwise, why should YOU not be the one to leave > when we disagree what "love it" means? I believe you are reading too much into what I wrote. I prefer the defaults of the CL implementation of my choice not to be overridden by some tool whose primary purpose is something unrelated to those defaults. That’s all. Pascal -- Pascal Costanza The views expressed in this email are my own, and not those of my employer.