This is the README for libFoundation.0.7.tgz [Download] [Browse] [Up]
libFoundation Library README ============================ History ======= This library is derived from an old library we wrote and used for developing a commercial application during 1995. That time we needed a small library that has some general containers and strong support for distributed objects. We needed to write code that runs on different machines, not only on NeXT. Also we needed to write programs that communicates via general Unix IPC channels. We wanted to use this kind of things because often we had parent-child processes that discuss over socketpair channels. So we designed a library that had support for distributed objects on different channels of communication like Internet or Unix domain stream sockets or socketpairs. We also experimented some ideas, such as calling the exception handlers as functions and returning from them, choosing the best communication channel when a connection is established and some other interesting ideas. The current status ================== The library is not currently finished. Now it lacks Unicode strings and Distributed Objects. We do have a lot of classes specified by the OpenStep specification. We wanted some things to work very well so we insisted on them. For example the NSInvocation and NSMethodSignature classes so now you can work with them at the full capacity. You can use the forwardInvocation: method to implement forwarding to another objects. This method works with all the Objective-C types, even with structures less than 8 bytes on m68k-next-nextstep3 and i386-next-nextstep3 either with NeXT or GNU runtime. (At least in NeXTStep 3.3, returning of structures less than 8 bytes was a problem.) The NSMethodSignature class allows you to construct method signatures giving only the types of the methods. It will determine the correct position of arguments in the arguments frame. This feature will allow the Distributed Objects stuff to work with the NeXT runtime. For the current status of the library you can take a look to the TODO file. This details the things we still have to implement and the current status of existing classes. The design of the library ========================= We have followed two important points in designing this library. The first is runtime independence. The second is to write the code without using extensions to the OpenStep spec, or if we are using such extensions, we want to provide a separate library that allows porting of the code written for this library to another implementation of Foundation. We want to give the people a library that compiles and runs in the both worlds of Objective-C: NeXT and GNU. This will allow one to write programs that mix together the code that exist for NeXT and the code that runs only on the GNU runtime. Our library compiles with both runtimes using different compilers. If all the other GNUstep work would be done to allow easy porting of programs, then one can move easily from NeXT's OpenStep or Sun's OpenStep to GNUstep. The library includes a header file that allows you to write the programs portable across runtimes. You write the programs using only the GNU API without some functions and your program runs without modification on both runtimes. The actual extensions are the exception handling mechanism and the garbage collector. The exception handling mechanism offers a better approach to exception handling than that found in the OpenStep specification. It provides a better localization of code in handlers and a more intuitive syntax. Because the exception handler is called as a function you can see in debugger where the exception was generated from. The garbage collector works in conjunction with the reference counting mechanism and releases you from thinking on how to solve the cycles in your program, thus saving time and code to write and maintain. For all these extensions we provide a separate library that compiles with other implementations of Foundation. Ports ===== This package was compiled and tested on these machines: i386-next-nextstep3 The package was compiled and tested successfully using the 2.6.3 and 2.7.2 versions of compiler and with both NeXT and GNU runtimes. Returning of aggregates of all sizes works well with both runtimes. m68k-next-nextstep3 The package was compiled and tested successfully using the 2.6.3 and 2.7.2 versions of compiler and with both NeXT and GNU runtimes. Returning of aggregates of all sizes works well with both runtimes. i386-next-nextstep4 The package was compiled and tested successfully using the 2.7.2.1 version of compiler with GNU runtime. The port of GNU compiler on this machine does not work with nested functions so parts of exception handling facility don't work. i586-unknown-linux The package was compiled on linux with ELF using the 2.7.2.1 compiler. All the tests ran successfully. Some preliminary work has been done on Sparc Solaris and HPUX 9, but we no longer have access to such machines. If you need support for them please contact us. Happy hacking, Ovidiu Predescu <ovidiu@bx.logicnet.ro> Mircea Oancea <mircea@pathcom.com>
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.