Hi,
The new SWI-Prolog that performs stack-expansion using a traditional
stack-shifter instead of sparse-memory management is ready for people
who like the bleeding edge. What does it bring:
* No limit on the number of threads. I ran 50,000 of them
on my 64-bit Ubuntu machine (8Gb memory) :-) This comes very
handy for agent simulation, network-servers, etc. It is
particularly handy if you need to run multi-threaded servers
on 32-bit systems.
* Better portability because it now simply relies on malloc()
and friends for memory management.
* Less memory usage (for stacks). Also somewhat better trail
management.
* Better implementation of setup_call_cleanup/3, allowing GC
and shifts in the cleanup handler. This current implementation
should be fully compatible to Ulrich's specs.
Downside? It is currently a bit aggressive in GC timing, which can
cause some slowdown in applications where GC reclaims most of the
memory. For now I leave it like that because this finds possible
problems quicker. GC is a bit too active sometimes, causing variables
to disappear from the graphical debugger a bit too often (execution
is normal; this is just a debugger issue.
How to install?
Only from git:
% git clone git://www.swi-prolog.org/home/pl/git/pl-devel.git
% git checkout -b shift --track origin/shift
% ./prepare
% cp build.templ build
% <edit build to suit your needs>
% ./build
If you are already compiling from git, this should do the trick to
upgrade:
% git fetch
% make distclean
% git checkout -b shift --track origin/shift
% ./prepare
% ./build
This is for all except Windows users. Degski is working on scripts to
make installation on Windows easier. Be patient.
Don't be too surprised if it crashes. You can help by sending a program
to reproduce the crash. If you are familiar with GDB, send a
stack-trace!
Enjoy --- Jan
_______________________________________________
SWI-Prolog mailing list
SWI-Prolog@...
https://mailbox.iai.uni-bonn.de/mailman/listinfo.cgi/swi-prolog