Re: Snapshot 2015-06
Carl Shapiro <[email protected]> Fri, 12 Jun 2015 13:57:40 -0700
| Newsgroups | gmane.lisp.cmucl.devel |
|---|---|
| Message-ID | <CANVK_Qh_rqexwTT1inRMXegAm-7s3vLiSzjgYvUc416_SU_rGg@mail.gmail.com> |
On Fri, Jun 12, 2015 at 6:52 AM, Stelian Ionescu <[email protected]> wrote: > You can have both, which IMO is the right thing wrt. to > backwards-compatibility with C programs. > Interesting. But, how exactly would this work? The C library provides no signal to invalidate a cache when its copy of the environment changes As such, it seems impossible to efficiently keep a copy of the environment in Lisp consistent. Without consistency, I am not sure how backward compatibility is maintained. > With IOlib one can query the process-level environment or turn that into > an object, manipulate it and pass it to CREATE-PROCESS. See > https://github.com/sionescu/iolib/blob/master/src/os/os-unix.lisp#L10. > Thanks for the pointer. I noticed that your hash-table construction does not check for the preexistence of a value when doing inserts from the environment list (on line 101). While uncommon, this nevertheless is a discrepancy between the behavior of getenv in your library and the and getenv in the C library. This can create a security issue. > Additionally, since a C environment is an array of pointers, it's > probably still faster to query if speed is a concern. > An array of pointers will certainly remove the overhead of the linked-list traversal. However, the EQUAL compare of the referent might eliminate the savings. This would have to be measured. _______________________________________________ cmucl-imp mailing list [email protected] http://lists.zs64.net/mailman/listinfo/cmucl-imp