* ECL's printer moves towards total independence from underlying C libraries. Not yet complete, as we still use the C library for character upcasing, downcasing, etc (a decision to be rethinked) and there are still uses of printf, sprintf, etc.<div>

<br></div><div>* Introduced read-write locks, based on POSIX read-write locks where available. Elsewhere they just use ordinary locks internally.</div><div><br></div><div>* Changed package locks to use read-write locks but also to solve some problems with some operations not really being protected.</div>

<div><br></div><div>* Several files have been split into separate directories, c/printer, c/reader, c/ffi, ... with the aim of identifying better the individual components, cleaning header dependencies, and overall better code readability.</div>

<div><br></div><div>* LOAD no longer uses a global lock. Library loading and unloading also does not. This means that in principle it is possible to load files from different threads at the same time, even when the compiler is running. In practice you will still have to be careful, for if two threads attempt to create the same package there may be conflicts (and other problems you may think of).</div>

<div><br></div><div>On a second phase ECL will incorporate atomic operations (libatomic, already included but not used), to speed up the way we handle core structures. I still have to learn how to do this and it is not going to be the holy grail (some operations such as package handling set up locks around huge lists of forms, not trivial ones), but it should help in cleaning up how slots, structures and objects in general are modified.</div>

<div><br></div><div>This is also one of the reasons why I would like to solve once and for all the issues with signals and unwanted interrupts.</div><div><br></div><div>Juanjo<br clear="all"><br>-- <br>Instituto de Física Fundamental, CSIC<br>

c/ Serrano, 113b, Madrid 28006 (Spain) <br><a href="http://juanjose.garciaripoll.googlepages.com">http://juanjose.garciaripoll.googlepages.com</a><br>
</div>