Changes (for detailed list, see FIXES which is part of distribution):
* various bugfixes
* allow \n explicitly in character classes
* some 8bit cleanups
- It can be bootstraped with Sun Workshop.
- It goes to "${LOCALBASE}" directly because there is no possible conflict
with the system's GNU C compiler.
out of date - it was based on a.out OBJECT_FMT, and added entries in the
generated PLISTs to reflect the symlinks that ELF packages uses. It also
tried to be clever, and removed and recreated any symbolic links that were
created, which has resulted in some fun, especially with packages which
use dlopen(3) to load modules. Some recent changes to our ld.so to bring
it more into line with other Operating Systems also exposed some cracks.
+ Modify bsd.pkg.mk and its shared object handling, so that PLISTs now contain
the ELF symlinks.
+ Don't mess about with file system entries when handling shared objects in
bsd.pkg.mk, since it's likely that libtool and the BSD *.mk processing will
have got it right, and have a much better idea than we do.
+ Modify PLISTs to contain "ELF symlinks"
+ On a.out platforms, delete any "ELF symlinks" from the generated PLISTs
+ On ELF platforms, no extra processing needs to be done in bsd.pkg.mk
+ Modify print-PLIST target in bsd.pkg.mk to add dummy symlink entries on
a.out platforms
+ Update the documentation in Packages.txt
With many thanks to Thomas Klausner for keeping me honest with this.
Version 0.0.17
* Delay the parsing of the function specs until the function
is used for the first time - speed and efficiency win (Frank)
* Date functions fixed up (Ravi)
* For Each implemented
* UBound, LBound
* More constants added
* Screen's mouse pointer stuff impl
* Object referencing grammar fixed
* User defined constants implemented
* Exit [Sub, Function, For etc.] impl.
* Fix function invocation with Option Explicit
* Parse Declare statements
* ReDim implemented
* Correct spelling of indices discovered.
* Options setup and honoured (Ken Guest)
* Lots of Command button signals added (Almer Tigelaar)
* New object globalization logic
* Build fix (Boszormenyi Zoltan)
Version 0.0.16
* Implement CallByName
* Port Frame to new object system (Frank)
* Improve parser / lexer flexibility.
* Implement Eval, Execute.
* Implement user defined Types
* Update project logic and form object referencing.
* Add (evily hacked) up ASP runtime ( gb test/web.asp )
* Install 'gb' by default to aid use.
2/24/99 (version 0.53)
Additions:
DEFINE-FINITE-TYPE and DEFINE-ENUMERATED-TYPE (in structure
FINITE-TYPES; documented in doc/utilities.ps and
doc/html/utilities.html.
Added CHAR-SOURCE->INPUT-PORT, CHAR-SINK->OUTPUT-PORT,
MAKE-STRING-OUTPUT-PORT, STRING-OUTPUT-SOURCE-OUTPUT to
the extended-ports structure.
The structure BYTE-VECTORS is the same as CODE-VECTORS with `byte'
replacing `code' in all the names. The underlying datatype is the
same for both, and uses `byte' when printing.
There is a new and much improved interface to C code, thanks to
Mike Sperber. It is documented in in doc/external.ps and
doc/html/external.html.
Bug fixes:
Session-data and user-context records are no longer in the fluid env.
Lexical environments can now be nested up to 65k deep.
,expand no longer prints `definition in expression context' warnings.
Added ARRAY? and SEARCH-TREE? to the array and search tree structures.
Flat environments work again.
Templates of the form `var ... ...' now work in syntax rules.
Reinstated caching of SCHEMIFY results to greatly reduce the space
used by debugging info.
Added argument checking to STRING->NUMBER and NUMBER->STRING.
Fixed space blow-up in LOAD.
Unused ports are closed more reliably.
Changes:
The heap, gc, and image code is now in three separate modules.
The symbol table is now held in a VM register.
Inlined SHOWING-FOCUS-VALUES into the main command loop and moved
the sentinal call to reduce the noise at the base of ,preview output.
The tables returned by MAKE-TABLE now use EQV? for comparison (instead
of EQ?). This makes these tables about 50% slower when numbers are
used as keys, but significantly more accurate.
Floating-point numbers are no longer double boxed.
The channels structure has been split into channels and low-channels.
Brandy is an interpreter for BBC Basic (or Basic V as it is refered
to here) that runs under a variety of operating systems. Basic V
is the version of Basic supplied with desktop computers running
RISC OS. These were originally made by Acorn Computers but are now
designed and manufactured by companies such as RiscStation and
MicroDigital.
User-visible changes between 0.4.0 and 0.5.0:
Changes in behaviour:
There are now two engines: the fast engine (gforth-fast) is at least
as fast as gforth in earlier releases; the debugging engine (gforth)
supports precise backtracing for signals (e.g., illegal memory
access), but is slower by a factor of 1-2.
Block files now start at block 0 by default (instead of block 1). If
you have block files around, prepend 1024 bytes to convert them, or
do a "1 OFFSET !" to establish the old behaviour.
Gforth now does not translate newlines to LFs on reading. Instead,
READ-LINE now interprets LF, CR, and CRLF as newlines. Newlines on
output are in the OSs favourite format.
SEE now disassembles primitives (or hex-DUMPs the code if no
disassembler is available).
>HEAD (aka >NAME) now returns 0 (instead of the nt of ???) on failure.
Syntax of prim changed: stack effects are now surrounded by
parentheses, tabs are insignificant.
Operating environment:
Gforth now produces a backtrace when catching an exception.
On platforms supporting the Unix 98 SA_SIGINFO semantics, you get more
precise error reports for SIGSEGV and SIGFPE (e.g., "stack
underflow" instead of "Invalid memory address").
Gforth now produces exit code 1 if there is an error (i.e., an
uncaught THROW) in batch processing.
You can use "gforthmi --application ..." to build an image that
processes the whole command-line when invoked directly (instead of
through gforth -i).
Ports:
AIX.
20% speedup on 604e under powerpc-unknown-linux-gnu,
19%-29% speedup on Celeron with gcc-2.95.
New words:
Missing ANS Forth words: EKEY EKEY? EKEY>CHAR
Timing words: CPUTIME UTIME
Vector arithmetic: V* FAXPY
FP comparison: F~ABS F~REL
Deferred words: <IS> [IS]
Nested number output: <<# #>>
Exception handling: TRY RECOVER ENDTRY
Directory handling: OPEN-DIR READ-DIR CLOSE-DIR FILENAME-MATCH
Other: ]L PUSH-ORDER
Miscellaneous:
Significant extensions to the manual (added an introduction, among
other things), many of them due to a new team member: Neal Crook.
Added assemblers and disassemblers for 386, Alpha, MIPS (thanks to
contributions by Andrew McKewan, Bernd Thallner, and Christian
Pirker). Contributions of assemblers and disassemblers for other
architectures are welcome.
The patch against regcomp.c (uninitialized variable) has been fed back
to the perl maintainers. The others are more like workarounds for known
toolchain problems and not fed back (for now).
The hints/netbsd.sh file has an additional change: the perl buildin malloc
(which is disabled in pkgsrc builds via configure arguments anyway) is now
disabled in the hints file as well. This makes it possible to build a
working perl outside of pkgsrc with this hints file. Wheter this hints file
should be fed back is subject to further discussion.
Make perl not build against a dynamic libperl.so.
There are two reasons: (a) the dynamic libperl.so version does not work
at all on sparc64, and (b) the static linked version is said to have a
significant performance improvement on some platforms (i.e. sparc). I think
the libperl.so was enabled by accident when switching from perl 5.0.4 to
5.6.0.
Other packages using libperl.so should not depend on perl5-base but on
../libperl.
* Fix `define' so that it tracks bound variables and ignores
shadowed keywords when traversing code
* Added checks to compilation process for the kind of missing
shared-library problems that many people see
* Fixed the `install-aliases' shell script
libintl for i18n needs. Changes since version 0.12.4 are *lots* of bug
fixes, module namespace reorganization, several _incompatible_ VM changes,
and the addition of several new modules, including a safe-interpreter for
untrusted bytecodes.
lang/python upgraded to 2.0
lang/py-html-docs upgraded to 2.0
misc/py-readline upgraded to 2.0
databases/py-gdbm upgraded to 2.0
x11/py-Tk upgraded to 2.0
devel/py-curses upgraded to 2.0
lang/py-extclass upgraded to 2.2.2 and for Python 2.0
textproc/py-dtml upgraded to 2.2.2 and for Python 2.0
www/py-zpublisher upgraded to 2.2.2 and for Python 2.0
print/py-reportlab upgraded to 1.01 and for Python 2.0
More coming...
doesn't enable any functionality. It is here as a marker, so people building
binary packages know that these packages have version-specific features
that would make them incompatible with other point releases.. (such as
LKM's)
The somewhat bizarre "patching" method was used because I rewrote the
routine which grabs global text symbols from an object file, and this
should be independent of a.out or ELF. The result bears no similarity
to what was there before, so I decided to keep the original file with
a "-dist" suffix.
* pull comments from head of patch files into the files they patch
That way they don't get overwritten, don't need manual work to be
included in the next update, and are visible in the patched files.
- Install into "${LOCALBASE}/gcc-2.95.2" to avoid that e.g. "bsd.pkg.mk"
picks up the new compiler by accident.
- Add a file "${LOCALBASE}/etc/gcc-2.95.2.mk" which makes it possible to
use the new "gcc" like this:
make MAKECONF=/usr/pkg/etc/gcc-2.95.2.mk
interpreter with both tk and tclX extensions built in.
It is expected that many users will prefer to do the following:
#!/usr/pkg/bin/wish
package require Tclx
This package also installs tclhelp, a graphical browser for the Tcl and
Tclx documentation which comes with tcl-tclX and tk-tclX.
tk-tclX-8.2.0 supplant pkgsrc/lang/tclX80 (tclX-8.0.4).
Changes to the tclX package since tclX-8.0.4:
* This package is now split into two packages, tcl-tclX, and
tk-tclX. tcl-tclX can be installed on systems without
X11 (and by extension, without tk).
Changes to tclX itself since tclX-8.0.4:
===============================================================================
19 Sept 98:
o Fixed TclX copy of Tcl auto_load proc out of sync; this broken ITcl.
-------------------------------------------------------------------------------
20 Sept 98:
o Include several Windows build fixes from Viktor Dukhovni <viktor@nyc.deshaw.com>.
o Renamed --with-tk configure option to --enable-tk.
Supplied by Viktor Dukhovni <viktor@nyc.deshaw.com>.
-------------------------------------------------------------------------------
28 Sept 98:
o Handle systems that don't implement restart of system calls on signal.
Added infox have_signal_restart.
-------------------------------------------------------------------------------
5 May 99:
o Ported most commands work with 8.1 Unicode.
o Completed port to 8.1.
===============================================================================
5 May 99: Released TclX 8.1.0
===============================================================================
10 May 99:
o Fixed tests to build when threads are enabled.
o Pickup TK_LD_SEARCH_FLAGS in configure.
-------------------------------------------------------------------------------
22 June 99:
o Moved TclX_AppendObjResult to be an external API for testing
o Upgraded the patch levels to be "8.1.2"
o Defined TclX_MainEx to take an interp as an argument. TclX_Main is
now a macro that calls TclX_MainEx. When passing the interp argument,
Tcl_CreateInterp() is called. This is done so TclX can use stubs.
-------------------------------------------------------------------------------
25 Jun 99:
o TclX version numbering and library naming change. The third number is
now the patch level.
===============================================================================
25 Jun 99: Released TclX 8.1.1
===============================================================================
4 Jul 99:
o Cleaned up configuration to work better with new Tcl autoconf macros.
Deleted Config.mk, all configration variables are set in Common.mk.
o --with-tcl and --with-tk now work.
===============================================================================
25 Jun 99: Released TclX 8.1.1
===============================================================================
===============================================================================
6 Feb 2000: Released TclX 8.2.0
===============================================================================
tcl interpreter with both tk and expect extensions built in.
It is expected that many users will prefer to do the folowing:
#!/usr/pkg/bin/wish
package require Expect
Changes to the expect package since expect-5.25:
* This package is now split into two packages, tcl-expect, and
tk-expect. tcl-expect can be installed on systems without
X11 (and by extension, without tk).
* the copious expect examples and their man pages are now installed
into ${PREFIX}/share/examples/tcl/expect instead of into
${PREFIX}/bin and ${PREFIX}/man. If any of them are determined
to be worth separate use, they should be split out into a
separate package.
Changes to expect itself since expect-5.25:
** SUMMARY
Expect 5.31 now works with Tcl 8.2. Expect 5.31 does NOT work with
prior releases of Tcl. Thanks to an incredible amount of work by
Scott Stanton, Henry Spencer, Melissa Hirschl, and funding from
Scriptics for making this possible.
** NEW FEATURES
What? You mean that working with Tcl 8.2 isn't enough?????
Expect supports Tcl's new regexp engine.
Expect supports null bytes in strings directly. (You no longer have
to use the "null" keyword to send or match nulls. Of course, the
"null" keyword will continue to be supported.) Null removal (on
input) is still enabled by default since nulls are almost never
intended for end-user consumption in interactive dialogues.
** CHANGES IN BEHAVIOR (POTENTIAL INCOMPATIBILITIES)
The interpreter command used to exit upon eof. Now it uses "-eof
script" to control this behavior. The default behavior is to return.
(This change was required because Expect now gives control to Tcl upon
exit and Tcl waits (potentially forever) for all processes to die on
exit.) Explicit calls to interpreter are almost non-existent.
However, you should look for *implicit* calls via interact commands
with a pattern but no action. This required changes in the examples:
dislocate, dvorak, kibitz, and xkibitz.
Indirect variables can no longer start with "exp". Such variables
will be interpreted as channel names.
Old-style regexps may need conversion. If you have been protecting
regexps containing backslashes with {}, then you need to examine all
your backslashes since the new regexp engine interprets backslash
sequences (such as \n) itself. For example:
expect "\n" (works the same in Tcl 8.0 and 8.1)
expect {\n} (works differently in Tcl 8.0 and 8.1)
Scriptics has also created a new-regexp-features page which you should
read: http://www.scriptics.com/support/howto/regexp81.html. Some of
the new features allow much more efficient regexps than before. For
example, non-greedy quantifiers can replace [split] looping
constructions with a single regexp, enabling Tcl to parse very
efficiently. For the whole story, read the re_syntax man page.
The interact command's regexp matching no longer skips nulls. (I'd be
surprised if anyone misses this. At least I hope ....)
Expect's C library now reports failures in spawn's underlying exec
directly (by returning -1) rather than the way it used to (as data in
the pty). This makes user code more robust. However, it requires you
to simplify your code, alas. See the chesslib.c example.
Linking with Expect's C library no longer requires the Tcl library
(unless, of course, you make Tcl calls yourself). Tcl is still
required to build the library in the first place, however.
** CHANGES IN BEHAVIOR (SHOULD NOT CAUSE INCOMPATIBILITIES)
The match_max command now controls by bytes, not chars. This won't
cause problems unless your existing scripts are interacting using
sizeable chunks of multibyte characters. (If you don't know what I'm
talking about, ignore this.)
The Make/configure suite now corresponds to the TEA conventions (at
least in theory; the conventions are changing regularly so it's hard
to be less vague on this point). Significantly, this means that you
should be able to use the same configure flags as when compiling Tcl
or any other TEA-compatible extension. (See the INSTALL file.)
The values of special variables such as exp_spawn_id_any have changed.
(The values were never documented so you shouldn't have been using
them anyway.)
Spawn ids now appear as "exp...". (They used to be small integers.)
Do not assume that spawn ids will continue to be represented in any
particular way (other than unique strings).
** OTHER NOTES
Expect uses channels. There is an Expect channel type. It is
possible to use Tcl's channel commands, such as fconfigure, to change
the encoding. However, Expect layers its own buffering system on top
of Tcl's channel handler so don't expect intuitive behavior when using
commands such as gets and puts. Unless you know what you're doing, I
recommend manipulating the Expect channels only with the expect
commands.
Some effort was made to make Expect support threads, however it is not
complete. You can compile Expect with threads enabled but don't run
Expect in multiple threads just yet.
So much code has changed, there are bound to be bugs in dark corners.
Please let me know of such cases. The best response will come by
supplying a simple test case that can be added to Expect's test suite.
In places where the behavior of Expect was not precisely documented,
full advantage was taken to do something different :-)
Several esoteric bugs were fixed.
Although Expect itself uses Henry Spencer's new regexp engine,
Expect's C library still uses his original regexp engine.
No testing has been done of the poll and non-event subsystems. (These
are used on systems which don't support select on ptys or ttys. Some
minor work needs to be done on them (because the event subsystem was
rewritten) which I'll probably do only if anyone requests it.
Many deprecated features (deprecated for many years!) have been
removed. All such features were deprecated prior to Exploring Expect
so if that's how you learned Expect, you have nothing to worry about.
For example, Expect's getpid command predates Tcl's pid command and
it's been deprecated for, oh.... 6 years - wow! Other deprecated features
include:
expect -timestamp (flag only; behavior itself was removed years ago)
expect -iwrite (flag only; behavior occurs all the time)
expect_version (use "exp_version" command)
expect_library (use "exp_library" global variable)
interact -eof (use "eof" keyword)
interact -timeout (use "timeout" keyword)
interact -timestamp (use "clock" command)
getpid (use "pid" command)
system stty (use "stty" command)
With this release, the following are deprecated:
timestamp (use "clock" command)
debugger (use a different one; there are very nice replacements
around. Fortunately the Expect debugger is not something anyone
is wiring into their scripts, so for now, consider it on the
endangered species list. Anyone still want this debugger?)
From now on, the most current snapshots of Expect will be found in the
Scriptics CVS repository. Not all snapshots are official releases.
For more, see the ChangeLog file in the expect distribution.
with
BROKEN= This package has not yet been updated to work with tcl-8.3.2.
in order to make bulk builds quieter. These packages will be updated over the
weekend.