Fnorb 1.3 --------- 1) Fnorb now supports CORBA 2.1, including wchar, wstring, fixed, and long double. 2) The C cdr module has been removed. 3) A pure-Python preprocessor has been added. 4) The corbaloc and corbaname IOR schemes have been implemented. 5) A unit testing framework and tests for all CORBA 2.1 data types. 6) A set of interoperability tests for testing against Orbacus, OmniORB and TAO. CREDITS for Fnorb 1.3 --------------------- Derek Thomson provided the GIOP 1.1/1.2 support, and the wchar/wstring implementation for UTF-8 and UTF-16. Martin Von Loewis then extended this to support many more character sets. Martin added the corbaloc and corbaname support, the pure-Python preprocessor, and also added the fixed and long double implementations. Martin also updated the documentation for this release. Derek added the unit testing framework, the initial unit tests for CORBA 2.1 data types, and the interoperability tests and framework. Raymond Smith handling the ongoing administration and support, and release testing and packaging. Grzegorz Makarewicz, Martin Olveyra, Harri Pasanen, and Akos Polster have helped to identify numerous problems in Fnorb 1.2, which are now fixed. Fnorb 1.2 --------- This release candidate incorporates a number of changes required to make Fnorb a truly pure-Python based ORB including a pure Python IDL parser and pure Python CDR processing. In detail: 1) changed to work out of the box with Python 2.1 and added support for distutils. 2) replaced the old C/bison IDL compiler with a Yapps2 pure-Python IDL compiler. While it does parse IDL and allows Fnorb to generate appropriate code, it is not complete, yet. In particular, the following parts are missing: - there is no pure-Python preprocessor (an external prepocessor is required) - the exact rules of tokenization are incorrect. In particular, the _ escaping of identifiers is not performed. 3) added pure-Python CDR processing with comparable speed to the 'optimised' C modules. (The older C modules are roughly 16% faster than the new pure-Python CDR.) The older C modules are still available in CVS but are not part of this release candidate. 4) the interface repository has been updated to support CORBA 2.6 types. Some of it won't function correctly until the corresponding typecodes are implemented, but those problems will only show up if the relevant IR routines are actually used. 5) as a consequence of 1, 2, 3 and some tweaking, Fnorb may now be used from Jython. (See README.jython file for more details) 6) distutils does not support the installation of Windows batch files. Instead, the commandline utilities are now provided as .py files which may be executed directly if appropriate associations have been setup. The older batch files are still provided with the source distribution but are not installed by default. 7) Fnorb has been made Open Source under its own license (see LICENSE.HTML in your distribution) and ongoing development has been moved to SourceForge. 8) Improved handling of C++ pre-processor under Windows. CREDITS for Fnorb 1.2 --------------------- Derek Thomson did all the work on Python 2.1 support, Jython, pure Python CDR processing, and integrating everyone else's work. Martin Von Loewis provided the new IDL compiler, distutils support, and patches to the interface repository and IIOP/GIOP modules. Grzegorz Makarewicz provided patches and good ideas with an alternate CDR processing scheme. Frederic Giacometti and Bertram Neubauer provided valuable feedback on Fnorb 1.2 RC1. Raymond Smith handled the administrivia and DSTC provided the original source. Fnorb 1.1 --------- 1) added extensive type checking to TypeCode.py which should stop fnorb core dumping - will throw exceptions instead. This was done mostly by Derek Thomson the outgoing Fnorb guy. Thanks for this and for all your help. 2) changed example/threaded/{server,client}.py to override the default reactive mode ORB to use threaded mode (as suggested by Jeff Rush). 3) Deal better with attempt to import new - added more useful error mesg. 4) fixed --OAhost option to correctly restrict the hostname in the produced IORs (patch from Jeff Rush). 5) incorporated Keith Dart's patch to better deal with forwarded references 6) incorporated Stephen J Turner's patch to CORBA.py for optimisation and better interoperability 7) fixed problem in IIOPAcceptor.py & Nudger.py with the use of socket.gethostbyaddr() instead of socket.gethostname() [Thanks to Bertram Neubauer & Matthew Vranicar for reporting this] {patch previously released} 8) added support for a command line option to fnaming to allow specification of a file to write the naming service ior to. {patch previously released} 9) added README files to the examples, particularly to alleviate the common problems encounted when using the naming and threaded examples. Fnorb 1.01 ---------- 1) corrected IOR unmarshalling. 2) added handling of memory allocation errors during unmarshalling. Fnorb 1.0 --------- 1) The Windows NT/95 installation has been changed to make the setting of the FNORB_HOME, PATH and PYTHONPATH environment variables up to the user (ie. the installation no longer updates the registry or autoexec.bat). For convenience, an additional batch file ('...\Fnorb\script\fnvars.bat') is created which can be run from a command prompt to set the variables appropriately. To repeat, this is for convenience only - it works on NT with Python 1.5.2c1 - but there are no guarantees beyond that! Win 95 users need to edit the file, remove any spaces in directory names, and wish they had a decent shell ;^) 2) The CORBA type 'unsigned long' is now mapped (as per the draft) to the Python *long* integer type. This has some effect as Python sequences cannot be indexed with these values without an explicit conversion (int(x)). 3) Added support for the CORBA 'long long' and 'unsigned long long' (64-bit integer) types - they are also mapped to Python long integers. 4) The stubs and skeletons generated by 'fnidl' now reference all Fnorb modules explicitly, hence removing possible name clashes with user IDL files. 5) Ugly bug in the parsing/marshalling of recursive types fixed. 6) Locking bug in '_narrow' fixed. 7) Bug in interface repository fixed so that 'fnfeed' now works as expected! 8) A few other minor bug fixes from 1.0b1! Fnorb 1.0b1 ----------- 1) Fnorb now (OPTIONALLY) supports multi-threaded applications, with a thread pool servicing operation requests on the server-side (for details on how to configure the ORB to use threads, see the user guide). 2) Fnorb UOL's can now be:- - a standard CORBA IOR: ('IOR:...') - the name of a file containing a UOL ('file:...') - the URL of a document containing a UOL (http://...) **** New **** - a naming service name ('name:...') 3) ORB configuration options can now be specified via:- - a configuration file **** New **** - environment variables - the command line See the user guide for more details. 4) CORBA 'nil' object references are now represented in Python as 'None'. 5) Addition of '_narrow' method on CORBA.Object to allow you to convert an object reference into a reference to a derived type. 6) 'CloseConnection' messages are now handled a little more sensibly ;^) 7) Implementation of '_is_a' changed to allow implementations to inherit from classes that are not Fnorb skeletons. 8) Added '_non_existent' to the Object interface. 9) Types that are generated automagically by Fnorb for structs, exceptions and unions are now added to the type manager and therefore available to the programmer (this only occurs if an 'any' type is unmarshalled and no stub has been loaded for the struct, exception or union). 10) When sequences and arrays are unmarshalled, a Python list of the appropriate size is now created and filled in. In previous versions of Fnorb, an empty list was created, and then appended to! 11) Bug in Object_skel re: the __initialised attribute fixed. 12) Bug in 'create_union_tc' fixed. 13) Bug in the interface repository 'lookup_id' method fixed. 14) New Fnorb logo ;^) Fnorb 0.8 --------- 1) Format of stubs and skeletons changed, so you will need to recompile 8^( 2) Recursive structures/unions now fully supported. 3) Additional options for 'fnidl' to control the location of generated files (see the user guide for more details). 4) Stubs and skeletons for IDL definitions at the global scope are now placed by default in the packages '_GlobalIDL' and '_GlobalIDL_skel' instead of in packages with the same base name as the IDL file. This can be overridden however, using the new '--globals=' option on fnidl. 5) Typecode factory methods added to the ORB interface as per the spec. e.g. create_enum_tc, create_sequence_tc etc. 6) Functions 'octet_to_ASCII' and 'ASCII_to_octet' moved from Util.py and re-implemented in 'C' in the 'cdr' module. Faster compilation and faster runtime performance! 7) All GIOP types now available to the programmer. 8) Serious bug in the marshalling of arrays fixed (many thanks to Martin von Loewis for spotting this one). 9) Memory leak client-side fixed (thanks to Chris Wright). 10) Numerous more minor bug fixes (thanks to Timothy Docker and everybody else who submitted bug reports!). Fnorb 0.7.1 ----------- 1) Finished the renaming of 'id.py' to 'uuid.py' (ie. fixed the import statements that I missed last time ;^) 2) Memory-leak in the 'cdr' extension module fixed. 3) Import bug in DII.py fixed (thanks to Timothy Docker!). 4) Bug in reactor fixed so that recursive calls now work properly! 5) Some tweaks to the Win95/NT distribution to make it work a bit easier! 6) Two new utilities 'fnmkior' to construct IORs, and 'fnfeed' to parse IDL and store the definitions in a remote interface repository. Fnorb 0.7 --------- 1) Fnorb now has its own IDL parser (written using flex, and bison but with all semantic actions implemented in Python!). This means that you are no longer required to download and install OmniBroker. 2) Installation on Win95/NT is now done via a WISE double-clicky installation program. 3) Unfortunately, the powers that be have decided that since Fnorb is now a standalone piece of software, the licencing has to be changed to being free for *non commercial* use only. Please see the LICENCE.HTML file on the download page (and in the distribution) for more details. 4) A couple of bug fixes in the Interface Repository. Fnorb 0.6 --------- 1) The distribution has been packagised to help stop module name clashes with other applications (e.g ILU). 2) Interface Repository (fnifr) implemented and used in IDL compilation. 3) Naming service (fnaming) implemented. 4) DII/DSI implemented. 5) Large (up to 33%!) reduction in stub and skeleton sizes! Stubs and skeletons now use the DII/DSI. 6) The name of the base class for CORBA exceptions changed from 'Exception' (which could cause confusion with the standard base class of Python 1.5 exceptions) to 'CORBAException'. 7) The building of the extension module has been made cleaner thanks to Guido's generic Makefile. 8) Fixed some (relatively obscure) bugs in the TypeCode module! Fnorb 0.5 --------- 1) First draft of the user guide - .../Fnorb-0.5/doc/Fnorb-Guide.ps (postscript) - .../Fnorb-0.5/doc/Fnorb-Guide.doc (Word 97) 1) Fixed a bug in raising exceptions with multiple attributes. 2) Fixed a bug in code generated for string constants. Fnorb 0.4 --------- There are quite a few changes in this release - hopefully all for the better! 1) Quite a few bug fixes - thanks to everybody that sent them in! 2) Fnorb no longer requires the 'thread' module. 3) The built-in module 'new' *is* now required (and IMHO is so useful it should be included at Python build-time by default!). 4) Fnorb now uses the Reactor pattern (from Douglas Schmidt) to dispatch events. Amongst other things this means that:- - Fnorb now supports nested invocations! - Using the TkReactor (see the 'examples/tkinter' directory) Fnorb can now co-exist with Tkinter!!!!! - All Fnorb programs must call the '_fnorb_mainloop()' method on the BOA to start dispatching events (see any of the examples). 5) The IDL/Python language mapping is now up to date with the current draft of the document that is to be presented to the OMG. This means that:- - IDL modules are now mapped to Python *packages* (previously top level modules were mapped to Python modules, and nested modules mapped to Python classes). - IDL unions are now mapped to a Python class with two member variables; 'd' for the discriminator, and 'v' for the value (previously unions were mapped to tuples in the form (discriminator, value)). Fnorb 0.3 --------- 1) The CDR extension module is now provided pre-built for Windows 95/NT!!!!! 2) The IDL 'compiler' fnidl now works on Win 95/NT (although it leaves an IR process around after each compilation - Windows gurus might like to tell me how to fix this!!!!) **** IMPORTANT NOTICE **** It is worth noting that you only need to install the Fnorb IDL compiler on one platform. The generated stubs and skeletons will work on ANY other platform that has the 'cdr' module installed! Cool huh?!?!?!? **** END OF IMPORTANT NOTICE **** 2) IDL prefixes now supported. 3) IDL chars now mapped to Python strings of length 1 (instead of Python integers). 4) Embarassing bugs in CDR marshalling code fixed ;^) 5) 'bin' directory renamed 'script' (there are no binaries - just Python scripts so it seemed to make sense!!!!! 6) Skeleton modules that contain derived interfaces now import the correct modules! 7) An extra set of examples has been added (for IDL unions). 8) Socket module renamed to FnorbSocket to prevent a name clash with the built-in module on Win95/NT! Duh! 9) The '_is_a' and '_interface' operations are now implemented server-side. 10) On Unix platforms, the 'fnidl' script's method of closing down the IR process has been somewhat refined (ie. 'fnidl' can now work within Makefiles properly!) 11) Missing file LICENSE.DOC now present! This gives you explicit right to freely use, and distribute Fnorb (I just plain forgot to include it in 0.2). Fnorb 0.2 --------- This was the initial release made publicly available!