For the record, checking on my machine today:
Implementations that make the standard readtable read-only: allegro sbcl Implementations that don't: abcl ccl clisp cmucl ecl lispworks scl
Implementations that make the standard pprint-dispatch table read-only: ccl sbcl Implementations that don't: abcl allegro clisp cmucl ecl lispworks scl
I don't know if a CDR is needed to change that, but I'm going to bug all the respective vendors. It's just a safety issue wrt the existing standard.
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org The meeting of two personalities is like the contact of two chemical substances: if there is any reaction, both are transformed. — Carl Jung
On Wed, Feb 20, 2013 at 4:50 PM, Pascal Costanza pc@p-cos.net wrote:
You could specify an extension to Common Lisp that allows users to request read-only readtables, submit this as a CDR, and hope that CL implementations are willing to implement such an extension of the language, and then rely on that.
Pascal
On 20 Feb 2013, at 22:44, Faré fahree@gmail.com wrote:
In 2.29.9, I pushed a change whereby ASDF keeps passing around whichever value the two syntax tables are globally bound to, leaving on the user the onus to not mutate them in too destructive a way, yet without precluding a change.
Allocation is for (copy-readtable nil) and (copy-pprint-dispatch nil) is 1648 and 2192 bytes respectively on CCL 1.9 x86-64, and more like 5300 and 10300 bytes on SBCL 1.1.3 x86-64. rme suggests that 15KiB per .asd file is no big deal and we should just bite the bullet.
Others suggest that we should let users fail and keep out of the business of binding syntax variables altogether. I'd agree if I didn't want to eventually move towards "pure" .asd files in a restricted standardized syntax as per https://bugs.launchpad.net/asdf/+bug/541562
If only Common Lisp allowed to portably specify read-only tables, I would just use that, and let users fail when they try to mutate them. Unhappily, it doesn't, and therefore when some user mutates a global table, it will end up causing pain for another user, not himself. Or I could rely on SBCL being used a whole lot and indeed having immutable such default syntax tables with understandable messages to blame whoever tries to mutate those tables without rebinding them first, and push for all implementations to similarly make them read-only.
The jury is still out. Please voice your opinion.
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org Statism is the secular version of salvation through faith: it doesn't matter what bureaucrats do, only that they do it with good intentions.
On Wed, Feb 20, 2013 at 3:44 PM, Faré fahree@gmail.com wrote:
Dear Common Lisp hackers,
Inspecting with Anton Vodonosov the latest batch of cl-test-grid issues when running with asdf 2.29.x, we found an interesting case that mirrors the previous failure of iolib 0.7.3 with 2.29.
In the hope of making the semantics of asd files more deterministic, with an eye on eventually making .asd files a strict subset of Lisp, I had put in 2.27 a with-standard-io-syntax around the loading of a .asd file. However, this is specified to bind *readtable* and *print-pprint-dispatch* to standard tables that are notionally read-only, though this immutability is NOT enforced on most implementations, instead there being unspecified bad consequences if you do mutate.
So, I could conceivably (copy-readtable nil) and (copy-pprint-dispatch nil) every time, but that could be expensive on some implementations. Or I could say "it's the programmer's responsibility to ensure a proper table has been setup before he modifies it", but that would be harsh and a notable backward incompatibility (and there's no equivalent of named-readtables for pprint-dispatch). Or I could preserve the current semantics of a global table that everyone modifies causing "interesting" issues, by rebinding *print-pprint-dispatch* as well as *readtable* within the w-s-i-s, only ensuring that the other syntax variables are standard. Or I could remove the with-standard-io-syntax altogether, and say "yes, if you're doing any global modification, you suck and you're going to break something for someone, but that's none of my business".
Anton leans for the latter.
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org One can be so anxious to put his "best foot forward" that he doesn't even notice that it isn't his own foot. — Harry Browne (HIFFIAUW)
asdf-devel mailing list asdf-devel@common-lisp.net http://lists.common-lisp.net/cgi-bin/mailman/listinfo/asdf-devel
-- Pascal Costanza