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