Blurb:
Gambit-C includes a Scheme interpreter and a Scheme compiler which can
be used to build standalone executables. Because the compiler generates
portable C code it is fairly easy to port to any platform with a decent
C compiler.
The Gambit-C system conforms to the R4RS, R5RS and IEEE Scheme standards.
The full numeric tower is implemented, including: infinite precision
integers (bignums), rationals, inexact reals (floating point numbers),
and complex numbers. Gambit-C supports a number of extensions to the
standards including (non-exhaustively):
- an optimizing compiler
- with several powerful transformations (automatic function inlining,
partial evaluation, etc)
- that generates properly tail-recursive portable C code
- a scalable thread system that can handle millions of concurrent threads
- an I/O system fully integrated with the thread system that supports
regular files, ttys, sockets (client and server, with TCP or UDP),
directories, processes, and pipes
- an infix syntax extension (SIX) that allows mixing code in the
standard prefix syntax with code in a C-like syntax
- SRFIs 0, 4, 6, 8, 9, 18, 21, 22, 23, 27, 39
- a REPL/debugger with
- a continuation inspection facility (i.e. "backtrace")
- a single-stepping mode
- error messages with location of error (file, line, and column number)
- emacs compatible line-editing with history
- very efficient bignum implementation
- a foreign function interface for C
- a memory management system that grows and shrinks the heap based on
the program's needs
- a linker that builds standalone executables and shared libraries
- dynamic loading of compiled modules and libraries (supported on many
platforms)
- Unicode support for characters, strings, I/O and source code
- object finalization, pretty printing, keyword objects optional and
keyword parameters (with the syntax and semantics of DSSSL)
- configurable reader with control over case sensitivity
- write/read invariance of symbols, e.g. (string->symbol "B;123") => |B;123|
- write/read invariance of floating point numbers
- unhygienic macros and more!
Camlp5 Version 5.08:
--------------------
* [08 Feb 08] Fixed bug in normal syntax: a.{x,y} (access to big array) was
interpreted as a.{(x,y)}.
* [22 Jan 08] Added missing cases in printers pr_o and pr_r which displayed
the message "unable to print ...".
* [02 Jan 08] Added compatibility with OCaml 3.09.4 and 3.10.2.
* [21 Jan 08] Fixed bug under windows: the file META could not be build
if the library path name contained colons.
* [13 Jan 08] Added missing man page for camlp5sch (link to the same man
page as camlp5).
* [05 Jan 08] Added "pr_extprint.cmo", printer rebuilding EXTEND_PRINTER
statements in their original syntax.
* [05 Jan 08] Fixed bug in EXTEND_PRINTER statement: the match cases with
"when" did not work.
Camlp5 Version 5.07:
--------------------
* [02 Jan 08] Added "pprintf" statement to use the Camlp5 pretty print
system more easily and shortly.
* [27 Dec 07] Added function [Grammar.Entry.parse_all] returning the
list of all solutions when using the parsing algorithm [Backtracking].
Camlp5 Version 5.06:
--------------------
* [19 Dec 07] Upgraded to add compatibilitly with OCaml version 3.10.1.
Camlp5 Version 5.05:
--------------------
* [17 Dec 07] Added function [Pcaml.quotation_location] returning the
location of the quotation in the source in the context of a quotation
expander.
* [04 Dec 07] Added generation of file META for ocamlfind in directory
etc (built but not installed).
* [28 Nov 07] Upgraded to reflect changes done in parse tree in current
OCaml (version 3.11+dev6).
* [27 Nov 07] Fixed bug in installation. Some files where installed in
the bin directory instead of lib directory.
* [27 Nov 07] Fixed bug in parsing comments: comments containing '\' where
incorrectly parsed.
Camlp5 Version 5.04:
--------------------
* [24 Nov 07] Fixed bug in install under MSVC Windows: object and library
files were not installed (using wrong extensions).
* [24 Nov 07] Fixed bug under Windows: line numbers in error messages were
wrong (twice the normal value).
* [24 Nov 07] Added ability to change the parsing algorithm of extensible
grammars, with the function "Grammar.set_algorithm" whose parameter can
be "predictive" or "backtracking".
* [22 Nov 07] Added backtracking parsers. Functions defined in the module
Fstream (already containing functional streams and parsers). Syntax
added in pa_fstream.cmo (already containing syntax for functinal streams
and parsers). The new syntax uses "bparser" instead of "fparser" and
a backtracking parser returns, together with its result and its
remaining stream, the continuation to compute the next solution.
Camlp5 Version 5.03:
--------------------
* [20 Nov 07] Added commands mkcamlp5 and mkcamlp5.opt to build camlp5
executables with predefined loaded modules. Added installation of ocpp
with name ocpp5, instead of just ocpp.
* [19 Nov 07] Added more installed cmx and cmxa files to allow building
native code linking of all combinations of Camlp5.
* [14 Nov 07] Fixed bug in pr_o.cmo: failed with printing "{a.(i) with ...}".
* [14 Nov 07] Fixed bug under Windows for the printers (pr_o.cmo, pr_r.cmo
and pr_scheme.cmo): extra return character '\r' was added at end of
lines.
* [09 Nov 07] Fixed bug in camlp5o.opt in strict mode: did not parse
correctly, in particular type expression (the version "camlp5o" without
".opt" however worked).
* [29 Oct 07] Added [Pcaml.inter_phrases], a way to set, by program,
the value of the "-sep" option of the printers kits.
* [28 Oct 07] Fixed bug in pa_fstream.cmo (functional parsers): the
keyword after "match with" was "parser" instead of "fparser" and
its code was wrong.
* [27 Oct 07] Added a default lexing buffer (in module [Plexing]) for
pa_lexer.cmo: then, the programmer does not need to write it any
more.
Camlp5 Version 5.02:
--------------------
* [14 Oct 07] Changed 'pa_lex.cmo' into 'pa_lexer.cmo' with a different
syntax (see the documentation).
* [14 Oct 07] In the EXTEND statement, added "LIKE s" as possible
level position to specify a level containing a rule containing "s"
in its keywords or tokens.
* [11 Oct 07] Rewritten parsers and printers in Scheme syntax. Deleted
old module Spretty.
0.9.6.4
-------
Enhancements:
- Functions declared with_gil and external functions declared nogil
are now allowed to have Python arguments and return types.
0.9.6.3
-------
Enhancements:
- C API now only uses a single name in the module namespace
instead of one for each exported C function. [Stefan Behnel]
- Multiple declarations with the same visibility and api options
can now be grouped into a 'cdef' block.
- The 'api' keyword can now be used on extension types to cause
generation of an api.h file when there are no exported C functions.
- Added a getattr3() builtin for the three-argument form of getattr.
0.9.6
-----
New Features:
- Top-level C functions defined in one module can now be used in
another via cimport, and a C API can be produced to allow them
to be used from C code without linking to the extension module.
See "Interfacing with External C Code" and "Sharing Declarations
between Pyrex Modules" in the Language Overview. [Stefan Behnel]
- Facilities added for releasing the GIL around a section of code
and acquiring it on entry to a C function. See "Acquiring and
Releasing the GIL under "Interfacing with External C Code" in
the Language Overview. [Ulisses Furquim, Stefan Behnel]
- Some conditional compilation facilities have been added. See
"Conditional Compilation" under "Language Basics" in the
Language Overview. [Sam Rushing]
Language Changes:
- The __new__ special method of extension types is being renamed
to "__cinit__". For now, you will get a warning whenever you
declare a __new__ method for an extension type, and it will
automatically be renamed to __cinit__ for you. In the next
release, the warning will become an error and no renaming will
occur. In some later release, the __new__ method may be
re-introduced with different semantics. It is recommended that
you begin updating your sources now to use __cinit__.
- A 'raise' statement with no arguments (i.e. to re-raise the
last exception caught) is now required to be lexically within
the 'except' clause which caught the exception. This change was
necessary to efficiently support preserving the exception if an
intervening call raises and catches a different exception.
- The following new reserved words have been added:
with, DEF, IF, ELIF, ELSE
Enhancements:
- Calls to many of the builtin functions are now compiled as
direct calls to Python/C API routines.
- A C type explicitly declared as 'signed' is represented as
such in the generated code, to acommodate platforms where
'char' is unsigned by default. [Francesc Altet]
- Python function can now have an argument of type "unsigned
char". [Alexander Belchenko]
- A new Pyrex.Distutils implementation has been added, which
exports an Extension type supporting the following options:
pyrex_include_dirs - list of dirs to search for Pyrex header files
pyrex_create_listing_file - bool - write errs to listing file
pyrex_cplus - bool - generate C++ code
pyrex_c_in_temp - bool - put generated C files in temp dir
pyrex_gen_pxi - bool - generate .pxi file for public declarations
[Contributed by Billie G. Allie]
- Assert statements can be compiled out by arranging for
PYREX_WITHOUT_ASSERTIONS to be #defined at C compilation time.
[Contributed by Stefan Behnel]
- Support for __index__ slot added to extension types.
[William Stein]
- Exception types now properly checked according to pre or post
2.5 rules as appropriate.
- Py_ssize_t support added. [Stefan Behnel]
- Windows __stdcall and __decl qualifiers now supported.
[Suggested by Eric Devolder]
- Keyword-only argument support added. [Suggested by Stefan Behnel]
- An 'include' statement can now appear anywhere that another kind
of statement or declaration can appear, instead of being restricted
to the top level. [Caio Marcelo]
- Unnecessary PyErr_Occurred() call to check result of
PyString_AsString() no longer made.
- Complicated C types are displayed more readably in error messages.
Modifications:
- A Python function argument declared as "char" or "unsigned
char" now expects a Python integer rather than a string of
length 1, for consistency with the way automatic conversions
are done elsewhere.
- Support for string and tuple exceptions dropped.
0.9.5.1
-------
Modifications:
- NULL in Pyrex source now translated into NULL instead of 0
in C code, to allow for the possibility of calling something
not defined with a prototype in an external header. [Adapted Cat]
0.9.5
-----
Enhancements:
- Exception return values may now be specified by arbitrary
constant expressions of appropriate type, not just literals.
[Stefan Behnel]
- Redundant type check now omitted when passing a literal None
to a function expecting an extension type. [Patch by Sam Rushing]
- New-style classes now allowed as exceptions for compatibility
with Python 2.5 (inheritance from BaseException not currently
checked). [Stefan Behnel]
- Sequence unpacking is now done using the iterator protocol
instead of indexing.
- Allocation of an empty tuple is avoided when making a
Python call with no arguments. [Stefan Behnel]
- Most warnings about unused variables and labels have been
eliminated.
- Support for running the test suite on Linux added but not
yet fully tested. [Based in part on patch by Eric Wald].
- Makefile included for compiling the patched Carbon File module
used by the MacOSX test code.
Modifications:
- Type rules for enums tightened for compatibility with C++.
- Direct assignment from float to int disallowed to prevent
C++ compilation warnings.
- Hex literals left as hex in C code to avoid warnings from
the C compiler about decimal constants becoming unsigned.
releases is enough" rule of thumb. (python 2.3 was released 5 years ago.)
Keep python 1.5 and 2.1 though, because there are a handful of packages
that still need them.
argument anonymous method. This should fix crash when building wip/nemo.
Bump pkgrevision
Thanks to Marek Safar for pointing me the exact change in mono tree
Objective Caml 3.10.2:
----------------------
Bug fixes:
- PR#1217 (partial) Typo in ocamldep man page
- PR#3952 (partial) ocamlopt: allocation problems on ARM
- PR#4339 (continued) ocamlopt: problems on HPPA
- PR#4455 str.mli not installed under Windows
- PR#4473 crash when accessing float array with polymorphic method
- PR#4480 runtime would not compile without gcc extensions
- PR#4481 wrong typing of exceptions with object arguments
- PR#4490 typo in error message
- Random crash on 32-bit when major_heap_increment >= 2^22
- Big performance bug in Weak hashtables
- Small bugs in the make-package-macosx script
- Bug in typing of polymorphic variants (reported on caml-list)
paths to PLIST.*. ;)
While here, patch sunaudiodev.c to use AUDIO_GETBUFINFO (when available)
and BSD AUDIO_FLUSH on NetBSD and OpenBSD. This could be
#ifdef AUDIO_FLUSH, but for now I am only certain about these two
platforms.
Bump PKGREVISION.
It probably needs plenty more polishing, especially on !NetBSD.
Python 2.4 will remain the default for some time.
For the new features in Python 2.5, look here:
* http://docs.python.org/whatsnew/whatsnew25.html
anyway, simplify logic a bit:
Add Python 2.5 to the default list, but also mark it as incompatible if
wip/python25 is not present. Move the Darwin handling after setting a
default value.
Provide a new variable _PYTHON_VERSIONS_ACCEPTED that is filtered by
PYTHON_VERSIONS_INCOMPATIBLE. This helps to avoid providing broken
dependencies when a version is not supported as PYPKGPREFIX wouldn't be
set in that case.
* generic/tclInterp.c (Tcl_GetAlias): fix for [Bug 1882373]
* generic/regguts.h, generic/regc_color.c, generic/regc_nfa.c:
Fixes for problems created when processing regular expressions that
generate very large automata. An enormous number of thanks to Will
Drewry <wad@google.com>, Tavis Ormandy <taviso@google.com>, and Tom
Lane <tgl@sss.pgh.pa.us> from the Postgresql crowd for their help in
tracking these problems down. [Bug 1810264]
* unix/tclUnixCompat.c (TclpGetHostByName): Really applied
the change noted on 2007-11-13 by dkf below.
* generic/tclIOUtil.c (TclGetOpenMode): Only set the O_APPEND flag
* tests/ioUtil.test (ioUtil-4.1): on a channel for the 'a'
mode and not for 'a+'. [Bug 1773127] (backport from HEAD)
* generic/tclCmdIL.c (Tcl_LsearchObjCmd): Prevent shimmering crash
when -exact and -integer/-real are mixed. [Bug 1844789]
* generic/tclThread.c: Back-port locking changes from Tcl8.5
in Tcl_Mutex/ConditionFinlize. Now we properly master-lock
the finalization of sync primitives.
* generic/regc_nfa.c: Fixed infinite loop in the regexp compiler
* generic/regcomp.c: [Bug 1810038]. Corrected looping logic in
* tests/regexp.test: fixempties() to avoid wasting time walking a
list of dead states [Bug 1832612]. Convert optst() from expensive
no-op to a cheap no-op. Improve newline usage in debug output.
* unix/tclUnixCompat.c (TclpGetHostByName): The six-argument form of
getaddressbyname_r() uses the fifth argument to indicate whether the
lookup succeeded or not on at least one platform. [Bug 1618235]
* generic/regc_lex.c (lexescape): Ensure that backreference numbers
can't overflow a signed int in a way that breaks things. [Bug 1810264]
* generic/tclParse.c (Tcl_ParseBraces): fix for possible read
after the end of buffer, [Bug 1813528] (Joe Mistachkin).
* generic/tclObj.c (Tcl_FindCommandFromObj): fix finding a deleted
command; cannot trigger this from Tcl itself, but crash reported
on xotcl. This check is new to 8.4 but exists in 8.5, so this is a
backport or something. Thanks Gustaf Neumann.
* generic/tcl.h (Tcl_DecrRefCount): Update change from 2006-05-29
to make macro more warning-robust in unbraced if code.