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: