Share

Integratis Web Development Framework

File Release Notes and Changelog

Release Name: 0.4

Notes:
Integratis 0.4 (1.0x) Release Notes
May 14, 2002

This is a stability release. The Application Server has been
extensively load-tested under both Solaris and Linux. Database glue
(both Oracle and MySQL) has been used in production. There have been
many improvements to the Python glue. DFP is now thread-safe, and can
be safely used within the server.

PROCESS-SHARED MUTEXES AND SPIN-LOCKS

   Our ./configure script issues an error on systems having neither
   process shared mutexes nor spin locks. It exits with the message
   "Couldn't find process shared mutexes please see README for more
   info". If you encounter this message during configuration, the
   system you are running on supports neither pthread process shared
   mutexes nor pthread spin locks.  If you are running on Linux, this
   may be fixed by upgrading your glibc.

SETUID BIT

   For certain installations of Integratis, you may wish to have the
   executables run as a specific user.  This can be configured via
   client.cfg and server.cfg.  However, if you want these to work
   without the use of sudo, some additional steps are required.  For
   example, if you want to create an integratis user and have the
   programs run as integratis, after running make install cd to the 
   binary install directory (usually /usr/local/bin) and do the
   following:

     chown integratis hdctl
     chmod ugo+s hdctl

   Do the same for hdd, hdcgi, and twine.

   CAVEATS

    - If a user wishes to run the programs as themselves, they should
      define HD_USER as their own user name in client.cfg and server.cfg.

    - The setuid bit must be treated with caution.  For example, if
      you want users to be able to switch to any user via client.cfg
      and server.cfg settings, you might be tempted to set the owner of
      the executables to root.  This can introduce the problem of users
      setting up their servers to run as root, which is usually a bad
      idea.  For some general information on this topic, we recommend 
      reading The World Wide Web Security FAQ:

        http://www.w3.org/Security/Faq/www-security-faq.html

----------------------------------------------------------------------

Integratis 0.2.3.1 (0.6x) Release Notes
December 21, 2001

This release builds and runs on the following platforms:

- Solaris 2.6
- Solaris 8
- Linux 2.2 kernel
- Linux 2.4 kernel

The Linux ports have been tested under Redhat Intel installs. The 2.4
kernel test was on a 2-CPU machines.

This release includes glue for MySQL.so, which works with ORMap, and
has been tested on all of the above platforms.

Twine is still the only supported scripting language, but Python
support will be made available as soon as we fix all the bugs (that we
know of).

----------------------------------------------------------------------

Integratis 0.2.3 (0.5x) Release Notes
December 5, 2001

This release incorporates many bug fixes and functionality
improvements. Notably, the high-contention stability bug has been
addressed.

This release uses automake/libtool, but still only really works under
Solaris. It works under Linux in local mode.


NEW STUFF:

 - Oracle (Oracle.so in packages/Oracle)

 - Object-Relational Mapping (ORMap.tw in packages/db)

 - A graphical Method Profiler (MethodProfiler.so, ProfileData.tw in
   packages/MethodProfiler)

 - An emacs mode for Twine (in twine/twine_mode/twine-mode.el(c))

 - Foundation Classes for session and user tracking, authentication,
   and the beginnings of an e-commerce suite (in packages/IFC)

FIXED BUGS

 - Server no longer crashes under high loads. There was a bug in
   hd_lock.c, having to do with unlocking recursive mutexes.

 - DFP.so now encodes all the characters in URL query strings that it
   is supposed to according to the standard.

 - Request.so can now deal with all URL-encoded characters, not just
   some.

 - Request.so can now deal with multipart types other than file.

 - libhd, Twine.so: "" ~ no longer produces "/"; it produces ""
   instead. Works nicely with the fix to Root.exists.

 - Twine.so: "" destroy no longer attempts to destroy root, wedging
   the server.

 - libhd.so: External API no longer allows you to destroy root, wedging
   the server.

 - DFP.so can now print to the same file from both client and server
   without making a hash of it. (But there is still a known problem
   with DFP.reset.)

 - All executables that use Twine.so: We are currently using the
   compatibility API of libpcre, which only works if the executable is
   linked against libpcreposix. Otherwise what one gets is the default
   regex, which causes infinite loops and other bad behavior. We will
   be cutting it over to the native libpcre API, making the use of
   libpcreposix unnecessary. Currently, all executables are linked
   against libpcreposix. In the future, only Twine.so will need to be
   linked against libpcre.

 - Twine.so: If a .twc file exists but is not readable by the user,
   Twine used to print out the string TWINE NOT FOUND. This is really
   debugging output, not an error. Since it did not look like an HTTP
   header, it would give server errors when run through the
   browser. Twine now does not complain when it can't use a .twc.

 - Twine.so: unstack miscounted number of arguments, resulting in
   spurious errors for methods defined with an empty argument list
   (rather than no argument list at all).

 - hdctl: hdctl cleanup no longer leaves an hdd process around which
   eats up 100% of CPU.

 - Twine.so: Twine.eval had an arbitrary limit for the size of
   if-then-else expressions.

 - Twine.so: replace now works with floats

 - Twine.so: foreach now works with return values from method calls in
   all cases. The expression foreach 'x () &y.keys % : ... used to
   fail where there was only one key.

 - libhd.so: The path root.class.class used to dump core because the
   class pointer of the root class was null.

 - libhd.so: HD_getPath used to return the path of the root class as
   root.class.Root, which was wrong because root.class is Root, and
   root.class.Root is actually Root.Root. It now returns root.class.

 - Twine.so: Error reporting in client-server mode has been
   fixed. Error stack now propagates from server to client as it
   should.

 - Twine.so: Method reloading no longer leaks memory.

 - Twine.so: Argument checking now returns location as something
   meaningful, rather than 0:0.

 - libhd.so: call to Root.exists with null object name now correctly
   reports that it doesn't exist.

FEATURE CHANGES:

 - HD_increment and HD_decrement now work on the last item in a list
   rather than each element in the entire list. This is far more
   useful than the previous behavior.

 - Classes coded in C no longer need to call HD_releaseHandle() on the
   context handle they are passed. This is done for them in
   HD_callMethod(). This averts many potential memory leaks.

 - After fixing a typo, DFP.spool is now an order of magnitude faster.

 - DFP.so now has DFP.reset (still slightly buggy), and
   DFP.redirect. We plan to add DFP.exit.

KNOWN BUGS:

 - DFP.reset: If a client proxies a call to DFP.reset to the server
   from a DFP template, when it exits from the script in the template,
   its output does not go there, because it doesn't recheck that its
   output file still exists.

 - Twine.so: It currently uses usleep(), which is buggy on most
   systems. The bug manifests itself in local mode, and causes Twine
   to print the string "Alarm clock" and quit. We will change it over
   to setitimer() or nanosleep().

----------------------------------------------------------------------

Integratis 0.2.1 (0.1x) Release Notes
September 27, 2001

This is the first public, open source release of Integratis. It
includes the Hyperdata Application Server, Twine scripting language,
hdctl control program, hdcgi CGI shell, testsuites, and a demo web
site. We are also redistributing PCRE Perl-Compatible Regular
Expression Library, which is used by Twine.

This release has known stability problems, which are encountered only
at relatively high server loads (above 6). The cause or causes of
these problems has to do with subtleties of memory visibility. We will
be addressing these problems in the coming weeks, and will make
patches available as soon as everything is tested. These problems
should not prevent developers from testing out Integratis, and they
will be fixed before anyone is ready to put Integratis into
production.

The next release will include as many as possible of the following:
Oracle and MySQL glue; e-commerce classes; Python support; and Perl
support.

Please report bugs, feature requests via

  http://www.sourceforge.net/projects/integratis

----------------------------------------------------------------------


Changes: