Greetings! If anyone has comments on the following release notes I'd be appreciative!
============================================================================= <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title></title> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"> </head> <body style="width: 1000px;"> <br> <br> <div align="center"><font size="+2"><b>GCL 2.7.0 RELEASE NOTES<br> </b></font></div> <font size="+2"><br> </font> <p> Greetings! The GCL team is happy to announce the release of version 2.7.0, the culmination of many years of work and a major development in the evolution of GCL. Please see http://www.gnu.org/software/gcl for downloading information.</p> Of note: <p> The GNU build system has been installed.</p> <p> The git repository hosts the sources at the maintainer-clean level, plus some packaging files for various systems. When building from a git checkout, you should not need autotools, but you may need to touch the following files in order, as git does not preserve timestamps: aclocal.m4 configure.in configure Makefile.am Makefile.in. <p> When building from the distributed tarball this will never be necessary. Furthermore, as is customary this tarball will include in addition pre-built documentation, so the user will not need texinfo unless building the optional standard targets dvi, pdf, and html. </p> <p> The check target will run the ansi-tests and some timing benchmarks. </p> <p> The dist target will recreate the distribution tarball, and distcheck will test it. </p> <p> Parallel builds are supported, but you should note that GCL will work in available system memory be default, and if multiple processes do not coordinate allocation, the effects could be negative. The environment variables GCL_MEM_MULTIPLE and GCL_MEM_BOUND can limit the memory each process sees, and GCL_MULTIPROCESS_MEMORY_POOL will instruct multiple processes to manage the memory collectively. These variables and more are documented in the info pages. </p> <p> Configure enable/disable options for gprof, xgcl, and gcltk will govern whether these features are built and installed. </p> <p> All known ANSI issues have been resolved, as reflected in the testsuite run via 'make check'. Both traditional and ANSI images are built and installed. The ANSI image is selected by {prefix}/bin/gcl if the environment variable GCL_ANSI is set to any value. </p> <p> This has required some backward non-compatible changes in all images, most notably that functions are no longer lists describing the source. One can typically upgrade code generating old `(lambda ...) functions with the simple modification (eval `(lambda ...)). </p> <p> GCL functions carry a lot of extra information by default, including the call signature, the assumed signatures of fast-link callees, the compressed-string version of the source, and the file from which it was loaded. This enables some useful features: <ul> <li>All functions not referencing static data (i.e. closures, load-time-value) can be inlined regardless of the (declaim (inline)) status at function definition. The static data limitation will hopefully be removed in the future.</li> <li>GCL fully implements 'function-lambda-expression, usefully abbreviated with 'si::fle.</li> <li>GCL provides a utility 'si::do-recomp to identify signature conflicts and recompile the original source files. The older utility using optional .fn files to generate a sys-proclaims.lisp is still supported, but is trumped by the signature information accompanying the function itself. The old system tried to handle this on a per-file basis, which was limited as the produced signatures implicitly depended on signatures in other files. The new system analyzes all conflicts at once, iterating until consistency is achieved.</li> <li>Self-explanatory functions 'si::file and 'si::signature.</li> <li>GCL provides 'compiler::interpret to reverse 'compile.</li> <li>Functions 'compile and 'compiler::interpret are idempotent and can be invoked multiple times.</li> <li>Heavy use of automatic inlining is used by the compiler.</li> </ul> </p> <p> Limited profiling is available in all images, when supported, by adding the :prof-p t arguments to compile-file. The corresponding 'compiler::*default-prof-p* can make this the default in any image. Only functions thus compiled will appear in the output of (si::gprof-start)(...)(si::gprof-quit). To profile all of GCL, the profiling images can be run by setting the GCL_PROF environment variable to any value before invoking {prefix}/bin/gcl. The startup banner will let you know which image you are running. </p> <p> On many systems, notably x86_64, the standard code produced by gcc (the 'medium model') must lie within the first 2Gb of memory. The variabe 'si::*code-block-reserve* can allocate space for this early on if needed, for example before running a large job on a machine with many Gb of available memory. On startup all images come with an extra 30Mb of space in this variable. Usage is documented in the info pages. </p> <p> If the heap has grown too large and there is no longer any space below 2Gb, code can be compiled and loaded for the 'large' memory model at about a 10% performance penalty. The options :large-memory-model t to compile-file, or the corresponding 'compiler::*default-large-memory-model-p*, can control this behaviour. At the moment this support is limited to x86_64 systems. </p> <p> The function 'compiler::watch can take any variable or function name in addition to several special symbols to trace the compiler's logic. Some useful special symbols are 'compiler::type-inference, 'compiler::branch-elimination, 'compiler::inline, and 'compiler::tail-recursion. The function 'compiler::unwatch turns off tracing on the supplied arguments, or universally with no arguments. </p> <p> The type system has been completely redesigned around bit-vectors. The functions 'si::cmp-norm-tp and 'si::cmp-unnorm-tp may be of interest. </p> <p> The variable 'compiler::*annotate* if set will place comments in the generated C file illustrating the inlining. The variable 'compiler::*disassemble-objdump* governs whether assembly accompanies the C source output of disassemble. </p> <p> The variable 'si::*fast-link-warnings* can let you know if calls to your function cannot be fast linked. All calls regardless of signatures should proceed correctly, albeit possibly slowly in case of signature mismatches.</p> <p> The demo functions 'xgcl-demo and 'gcl-tk-demo have been updated.</p> <br> </body> </html> ============================================================================= -- Camm Maguire c...@maguirefamily.org ========================================================================== "The earth is but one country, and mankind its citizens." -- Baha'u'llah