home *** CD-ROM | disk | FTP | other *** search
- 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>
-
-