Hi,
I would like to announce Zodiac, the project created in response to
http://forum.world.st/WebClient-for-1-2-2-tt3485946.html#a3503921
according to the plan described in
http://forum.world.st/SSL-HTTPS-SecureSocketStream-SSLSession-for-Pharo-Squeak-and-other-Smalltalk-implementations-tc3517404.html#a3517719
You can follow the development by looking at the code in
http://www.squeaksource.com/Zodiac.html
Here is the first delivery: a new (binary) socket stream implementation.
Warning: this is of course not yet code for general consumption, use the source
and the comments. This is a proof of concept.
This package has no further dependencies and does not add anything to system
classes, it is thus safe to load.
There are four stream classes, ZdcAbstractSocketStream, ZdcSimpleSocketStream,
ZdcOptimizedSocketStream and ZdcSocketStream, inheriting from each other,
adding successively more optimized implementations of the standard Smalltalk
stream primitives. There is one helper class, ZdcIOBuffer to help in managing
read and write buffers inside the streams. The interface towards Socket is also
quite small (i.e. only a very small amount of the functionality in Socket is
used).
The 48 units tests as well as the functional test (see further) are all green
on Pharo 1.2.x and 1.3 as well as on Squeak 4.2.
The functional test is the following: Zinc HTTP Components recently got a its
ZnNetworkingUtils class turned into a socket stream factory. By loading the new
package Zinc-Zodiac from the ZincHTTPComponents repository, you can ask Zn to
use the new socket stream implementation, like this:
ZnNetworkingUtils default: ZnZodiacNetworkingUtils new.
To reset, just do:
ZnNetworkingUtils default: nil.
The cool thing is: all of Zn's 151 unit tests, most doing actual HTTP client
and server interactions (some over the internet) succeed using the new Zodiac
socket stream implementation.
Enjoy!
Sven