Hi, Terje
First, thank you for adjust MCL for this!
The logical pathname definitions in usocket wasn't used by other part of usocket source code, it's purely used for developers like me to quickly switch the current working directory. However, I have another project (cl-net-snmp), which heavily depends on the logical pathname facility when locating some data files in source code directory.
I think my usage of logical pathname should fall into CL standard (I'm not 100% sure about this, but apparently it works on most CLs). However, the logical pathname implementation differ between CL implementations, the ".NEWEST" translation was added for maximum portability, especially needed by SBCL. Below is how LispWorks and SBCL differently treat logical pathnames:
In LispWorks:
CL-USER 4 > (translate-logical-pathname "usocket:backend;sbcl.lisp")
#P"/Users/binghe/Lisp/usocket/branches/0.5.x/backend/sbcl.lisp"
CL-USER 5 > (pathname-version *)
NIL
CL-USER 6 > (translate-logical-pathname "usocket:backend;sbcl.lisp.newest")
#P"/Users/binghe/Lisp/usocket/branches/0.5.x/backend/sbcl.lisp"
CL-USER 7 > (pathname-version *)
:NEWEST
In SBCL:
* (translate-logical-pathname "usocket:backend;sbcl.lisp")
#P"/Users/binghe/Lisp/usocket/branches/0.5.x/backend/sbcl.lisp"
* (pathname-version *)
:NEWEST
See, SBCL treat every logical pathname without a explicit version as "newest" version, and automatically fill the version component of translated pathname instance. If I didn't add the ".NEWEST" translation rule, a normal logical pathname cannot be translated correctly in SBCL.
Clozure CL also fill the version component as :NEWEST, but the translation can work without the ".NEWEST" rule.
I don't know how MCL handle this before, and not sure if MCL's previous behavior obey CL standard ...
Regards,
Chun Tian (binghe)
在 2011-5-18,05:26, Terje Norderhaug 写道:
Post by Terje Norderhaughttp://code.google.com/p/mcl/issues/detail?id=46&can=1
http://code.google.com/p/mcl/source/detail?r=045681d521e5
Post by Terje NorderhaugI have updated the Portability wiki page for MCL with a link to the USocket TCP/IP socket interface, which supports MCL.
http://code.google.com/p/mcl/wiki/Portability
USocket provides a portable alternative to using OpenTransport directly in your MCL applications or modules.
Using the portable libraries in place of MCL-specific interfaces facilitates that your code can be used with other Common Lisp implementations.
Thanks to Chun Tian (binghe) for bringing USocket to MCL. I have found good use for it in MCLIDE and elsewhere.
Any other portable libraries that should be added to the list?
-- Terje Norderhaug
-- Terje Norderhaug
_______________________________________________
info-mcl mailing list
http://clozure.com/mailman/listinfo/info-mcl