home *** CD-ROM | disk | FTP | other *** search
/ Peanuts NeXT Software Archives / Peanuts-Update.iso / CDROM / Contents / READMEs / Peanuts-U / OpenStep / implementation / gnustep / sources / libFoundation.README
Encoding:
Text File  |  1998-03-08  |  5.3 KB  |  128 lines

  1. libFoundation Library README
  2. ============================
  3.  
  4.  
  5. History
  6. =======
  7.  
  8.     This library is derived from an old library we wrote and used for
  9.     developing a commercial application during 1995.
  10.  
  11.     That time we needed a small library that has some general containers and
  12.     strong support for distributed objects. We needed to write code that runs
  13.     on different machines, not only on NeXT.
  14.  
  15.     Also we needed to write programs that communicates via general Unix IPC
  16.     channels. We wanted to use this kind of things because often we had
  17.     parent-child processes that discuss over socketpair channels.
  18.  
  19.     So we designed a library that had support for distributed objects on
  20.     different channels of communication like Internet or Unix domain stream
  21.     sockets or socketpairs.
  22.  
  23.     We also experimented some ideas, such as calling the exception handlers as
  24.     functions and returning from them, choosing the best communication channel
  25.     when a connection is established and some other interesting ideas.
  26.  
  27.  
  28. The current status
  29. ==================
  30.  
  31.     The library is not currently finished. Now it lacks Unicode strings and
  32.     Distributed Objects. We do have a lot of classes specified by the OpenStep
  33.     specification.
  34.  
  35.     We wanted some things to work very well so we insisted on them. For example
  36.     the NSInvocation and NSMethodSignature classes so now you can work with
  37.     them at the full capacity. You can use the forwardInvocation: method to
  38.     implement forwarding to another objects. This method works with all the
  39.     Objective-C types, even with structures less than 8 bytes on
  40.     m68k-next-nextstep3 and i386-next-nextstep3 either with NeXT or GNU
  41.     runtime. (At least in NeXTStep 3.3, returning of structures less than 8
  42.     bytes was a problem.) The NSMethodSignature class allows you to construct
  43.     method signatures giving only the types of the methods. It will determine
  44.     the correct position of arguments in the arguments frame. This feature will
  45.     allow the Distributed Objects stuff to work with the NeXT runtime.
  46.  
  47.     For the current status of the library you can take a look to the TODO file.
  48.     This details the things we still have to implement and the current status
  49.     of existing classes.
  50.  
  51.  
  52. The design of the library
  53. =========================
  54.  
  55.     We have followed two important points in designing this library. The first
  56.     is runtime independence. The second is to write the code without using
  57.     extensions to the OpenStep spec, or if we are using such extensions,
  58.     we want to provide a separate library that allows porting of the code
  59.     written for this library to another implementation of Foundation.
  60.  
  61.     We want to give the people a library that compiles and runs in the both
  62.     worlds of Objective-C: NeXT and GNU. This will allow one to write programs
  63.     that mix together the code that exist for NeXT and the code that runs only
  64.     on the GNU runtime. Our library compiles with both runtimes using
  65.     different compilers. If all the other GNUstep work would be done to allow
  66.     easy porting of programs, then one can move easily from NeXT's OpenStep or
  67.     Sun's OpenStep to GNUstep.
  68.  
  69.     The library includes a header file that allows you to write the programs
  70.     portable across runtimes. You write the programs using only the GNU API
  71.     without some functions and your program runs without modification on
  72.     both runtimes.
  73.  
  74.     The actual extensions are the exception handling mechanism and the garbage
  75.     collector. The exception handling mechanism offers a better approach to
  76.     exception handling than that found in the OpenStep specification. It
  77.     provides a better localization of code in handlers and a more intuitive
  78.     syntax. Because the exception handler is called as a function you can see
  79.     in debugger where the exception was generated from.
  80.  
  81.     The garbage collector works in conjunction with the reference
  82.     counting mechanism and releases you from thinking on how to solve the
  83.     cycles in your program, thus saving time and code to write and maintain.
  84.  
  85.     For all these extensions we provide a separate library that compiles with
  86.     other implementations of Foundation.
  87.  
  88.  
  89. Ports
  90. =====
  91.     This package was compiled and tested on these machines:
  92.  
  93.     i386-next-nextstep3
  94.  
  95.     The package was compiled and tested successfully using the 2.6.3 and
  96.     2.7.2 versions of compiler and with both NeXT and GNU runtimes.
  97.     Returning of aggregates of all sizes works well with both runtimes.
  98.  
  99.     m68k-next-nextstep3
  100.  
  101.     The package was compiled and tested successfully using the 2.6.3 and
  102.     2.7.2 versions of compiler and with both NeXT and GNU runtimes.
  103.     Returning of aggregates of all sizes works well with both runtimes.
  104.  
  105.     i386-next-nextstep4
  106.  
  107.     The package was compiled and tested successfully using the 2.7.2.1
  108.     version of compiler with GNU runtime. The port of GNU compiler on this
  109.     machine does not work with nested functions so parts of exception
  110.     handling facility don't work.
  111.  
  112.     i586-unknown-linux
  113.  
  114.     The package was compiled on linux with ELF using the 2.7.2.1 compiler.
  115.     All the tests ran successfully.
  116.  
  117.  
  118.     Some preliminary work has been done on Sparc Solaris and HPUX 9, but we
  119.     no longer have access to such machines. If you need support for them please
  120.     contact us.
  121.  
  122.  
  123.     Happy hacking,
  124.  
  125.     Ovidiu Predescu <ovidiu@bx.logicnet.ro>
  126.     Mircea Oancea <mircea@pathcom.com>
  127.  
  128.