./lang/chicken5, Scheme to C compiler, handling R5RS

[ CVSweb ] [ Homepage ] [ RSS ] [ Required by ] [ Add to tracker ]


Branch: CURRENT, Version: 5.2.0, Package name: chicken-5.2.0, Maintainer: pkgsrc-users

CHICKEN is a Scheme-to-C compiler supporting most of the language
features as defined in the Revised^5 Report on Scheme. CHICKEN
generates quite portable C code, and files compiled by it (including
itself) should work without any changes on most platforms.

The whole package is distributed under a BSD license and as such free
to use and modify as long as you adhere to its terms (see the manual).
Linkage to C modules and C-library functions is straightforward, so
it's easy to access C from Scheme. Compiled code can be embedded into
existing C programs without problems. The generated code supports
full tail-recursion, first-class continuations, multiple values and
dynamic-wind.


Required to build:
[pkgtools/cwrappers]

Master sites:

SHA1: 3456f2c60b378ef1f6fa6b8d1d31eb05a1d82dcb
RMD160: b07c8afb5cb316d66043038025d57b106883cfd8
Filesize: 3957.329 KB

Version history: (Expand)


CVS history: (Expand)


   2020-05-16 22:01:56 by Nikita | Files touched by this commit (2) | Package updated
Log message:
chicken: Update to version 5.2.0

Changelog:

5.2.0

- Core libraries
  - Fix `memory-statistics` by returning semi-space bytes and used
    semi-space bytes like the documentation says. Old implementation
    returned full-heap size and (full-heap - used-semi-space).
  - for-each and map now behave consistently in compiled and interpreted
    mode, like in SRFI-1.  They now stop when the shortest list is
    exhausted instead of raising an exception (fixes #1422).
  - There is now a srfi-88 module which contains just the three
    procedures from the (chicken keyword) module defined by the SRFI.
  - A feature identifier named "srfi-88" is now registered.
  - The procedures `record-printer` and `set-record-printer!` and a
    corresponding SRFI-17 setter have been added. These deprecate
    `define-record-printer` which isn't a "real" definition (see #1294).
  - On Windows, `decompose-directory` no longer crashes when a drive
    letter is present in the supplied path string.
  - irregex-replace[/all] have been fixed for empty matches, so they
    will no longer drop characters and ignore the replacement (#1661).
  - Irregex has been updated to upstream 0.9.7, which also improves
    how empty matches are treated in irregex-fold and irregex-split.

- Runtime system
  - Quoted empty keywords like ||: and :|| are now read like prescribed
    by SRFI-88 in the corresponding keyword mode.  Symbols containing
    quoted empty prefixes or suffixes like ||:abc and abc:|| will be
    read correctly as symbols now (fixes #1625, thanks to Andy Bennett).
  - IEEE floating point negative zero is now properly handled: it can
    be read, written and distinguished by eqv? and equal?, but not =
    (fixes #1627, thanks to John Cowan).
  - ##sys#check-exact and its C implementations C_i_check_exact and
    C_i_check_exact_2 have been deprecated (see also #1631).
  - When garbage collector is manually invoked from a finalizer, raise
    an error instead of hanging forever (fixes #1586).
  - define-record-type will now give an error if the constructor
    definition refers to field that's not listed elsewhere (see #1633)
  - Added new -:hu option to set the memory usage low watermark
    percentage at which the heap should be shrunk, and changed the
    calculation to actually reflect this (see #1379).

- Compiler
  - Fixed a bug in lfa2 pass which caused "if" or "cond" \ 
nodes to be
    incorrectly unboxed if the "else" branch had a flonum result type
    (#1624, thanks to Sven Hartrumpf)
  - Inline files no longer refer to unexported foreign stub functions
    (fixes #1440, thanks to "megane").
  - In some cases, rest argument lists do not need to be reified, which
    should make using optional arguments and case-lambda faster (#1623).
  - Values from foreign types which have an argument or return value
    converter are no longer inferred to have the Scheme type which
    corresponds to the raw foreign type, which was incorrect (#1649).

- Module system
  - Trying to export a foreign variable, define-inlined procedure or
    define-constant variable gives a friendly error instead of saying
    the variable doesn't exist (fixes #1346).
  - When modules are registered, they no longer pollute the global
    environment with imports made in that module (fixes #1548)

- Tools
  - The new "-module-registration" options causes module registration
    code to always be included in the program, even when it has also
    been emitted as a separate file (for example with "-J").
  - chicken-install now correctly checks server response code to avoid
    interpreting error response bodies (like 404, 500) as Scheme code.
  - chicken-install now follows HTTP redirects when downloading eggs.
  - chicken-install will now change to the correct drive before
    attempting to change to the egg directory (fixes #1647).
   2020-01-26 18:32:28 by Roland Illig | Files touched by this commit (981)
Log message:
all: migrate homepages from http to https

pkglint -r --network --only "migrate"

As a side-effect of migrating the homepages, pkglint also fixed a few
indentations in unrelated lines. These and the new homepages have been
checked manually.
   2019-11-03 20:04:09 by Roland Illig | Files touched by this commit (159)
Log message:
lang: align variable assignments

pkglint -Wall -F --only aligned --only indent -r

No manual corrections.
   2019-07-06 23:16:59 by Leonardo Taccari | Files touched by this commit (2) | Package updated
Log message:
chicken5: Update OWN_DIRS after 5.1.0 and introduce CHICKEN_BINARY_VERSION

In 5.1.0 the binary-version was bumped to 11.  Update OWN_DIRS
accordingly and introduce CHICKEN_BINARY_VERSION variable to
automatically adjust OWN_DIRS and PLIST.

PKGREVISION++
   2019-07-02 15:22:41 by Ryo ONODERA | Files touched by this commit (3) | Package updated
Log message:
Update to 5.1.0

Changelog:
5.1.0

- Core libraries
  - Symbols ending or starting with a colon are now always pipe-quoted
    when written by `write` to ensure they can be read back with a
    different keyword-style setting.
  - Read-write invariance of special symbols starting with #! other
    than #!key, #!rest or #!optional is now preserved (#1572).
  - When using (set-file-position!) on a port, its EOF status will now
    be reset.
  - In (chicken file posix), the values of perm/irgrp, perm/iwgrp,
    perm/ixgrp, perm/iroth, perm/iwoth and perm/ixoth are now correctly
    defined (they were all for "usr"; #1602, thanks to Eric Hoffman).
  - In (chicken file posix), `file-truncate` now accepts also accepts
    port objects, for consistency with other file procedures.
    All such procedures from (chicken file posix) now have the correct
    types in types.db (fixes #1609, thanks to Robert Jensen).
  - Add the system-config-directory and system-cache-directory procedures
    in the chicken.platform module. These procedures follow the XDG
    specification and also give sensible results on Windows.
  - Fix get-environment from (chicken process-context) to raise an
    error when passed #f instead of segfaulting.
  - Qualified symbols (##foo#bar style) are no longer encoded by a
    byte prefix inside the symbol name.  This ensures read-write
    invariance of symbols which start with a low-byte character
    (fixes #1077, except for keywords, which start with NUL bytes).
  - Fix a missing export (list->s64vector) in SRFI-4.

- Runtime system
  - Keywords are now distinct types; they are not a subtype of symbols.
  - Use arc4random on FreeBSD (thanks to Tobias Kortkamp and gahr)
  - Removed the unused, undocumented (and incorrect!) C functions
    C_delete_symbol_table and C_set_symbol_table.
  - Continuations which discard additional values beyond the first no
    longer accept multiple values via direct invocation after being
    captured through `call/cc`, only via `values` (revert of #1390,
    due to #1601)
  - SRFI-4 vector predicates, reference, set and length procedures
    should now be faster in tight loops as they're inlineable (#757).
  - Keywords are now interned in a separate keyword table, not in the
    standard symbol table.  This brings full read-write invariance
    for symbols (they can now also start with NUL bytes).  Keywords
    no longer have plists.  Fixes #1576.
  - Increased the "binary compatibility version" to 11.

- Compiler
  - Restored optimized implementations of =, +, -, /, * and quotient in
    fixnum-arithmetic mode (fixes #1604 mostly; thanks to "chickendan").
  - Added an optimization pass for reducing the amount of boxing of
    intermediate floating point values, enabled by the "-lfa2" compiler
    option.
  - The "lfa2" pass is now enabled at optimization levels 2 or higher.

- Module system
  - When you try to import the module you are currently defining into
    itself, an error will be raised. This prevents an infinite loop in
    the compiler when later trying to import that same module (fixes
    #1506, thanks to Kristian Lein-Mathisen).

- Foreign function interface
  - Improved hygiene in FFI macro expansions, which means you don't
     have to import "scheme" or "(chicken base)" for them to \ 
work.

- Type system
  - It is now possible to quote free variables in type declarations,
     which acts as shorthand for `forall' (thanks to "megane")

- Tools
  - csi now uses (system-config-directory) to find csirc and falls back to
    $HOME/.csirc when needed.
  - chicken-install now uses (system-config-directory) to find a user
    defined setup.defaults file ; it also uses (system-cache-directory)
    for its egg cache directory when the CHICKEN_EGG_CACHE environment
    variable is not defined.

- Egg specifications
  - Allows "cond-expand" and "error" forms in egg \ 
specification files.
  - Add "c-object" and "object" properties to link \ 
separately compiled
     C objects into CHICKEN code.
   2018-12-21 13:35:38 by Leonardo Taccari | Files touched by this commit (5)
Log message:
chicken5: Import chicken-5.0.0 as lang/chicken5

CHICKEN is a Scheme-to-C compiler supporting most of the language
features as defined in the Revised^5 Report on Scheme.  CHICKEN
generates quite portable C code, and files compiled by it (including
itself) should work without any changes on most platforms.

The whole package is distributed under a BSD license and as such free
to use and modify as long as you adhere to its terms (see the manual).
Linkage to C modules and C-library functions is straightforward, so
it's easy to access C from Scheme.  Compiled code can be embedded into
existing C programs without problems.  The generated code supports
full tail-recursion, first-class continuations, multiple values and
dynamic-wind.

Changes since chicken-4.13.0:
5.0.0
-----
- Runtime system
  - Added support for the full numeric tower, including various new
    procedures taken from the "numbers" egg.  All calculations will
    now return exact numbers where possible, so code relying on flonums
    being returned may need to be changed if rational numbers do not
    provide the desired performance.
  - Port directionality has been generalized from a simple input/output
    flag to a bitmap, to allow for multidirectional ports.
  - Weak symbol GC is faster, simpler, and can now collect all
    unreferenced symbols instead of a maximum of 997 per major GC.
  - The -:w option has been removed; symbols are now always collected.
  - Increased the "binary compatibility version" to 9.
  - Continuations which discard additional values beyond the first now
    also accept multiple values via direct invocation after being
    captured through `call/cc`, not just via `values` (#1390)
  - Removed the deprecated C_locative_ref and C_mutate2 C functions.
  - The trace buffer no longer holds on to thread objects, allowing them to
    be garbage collected sooner (#1356, thanks to Kristian Lein-Mathisen)
  - On Cygwin and MinGW, the "build-platform" now corresponds to the
    tool chain used (gnu, clang, unknown) like on *nix, while the
    software-version is now "cygwin" or "mingw32" instead of \ 
"unknown".
    This also means the features list will now contain the tool chain
    on all platforms.
  - Symbols starting with #% are no longer treated specially and need
    to be quoted with pipes. This makes the "%" sign available for use
    in custom/user-defined sharp-sign read syntax.

- Compiler
  - Fixed an off by one allocation problem in generated C code for (list ...).
  - The "-scrutinize" compiler option has been removed.
  - The "-module" compiler option (aliased as "-m") now \ 
expects a module name.
  - The generated C output of the compiler is now deterministic: it
    will be bit-for-bit identical when compiling the same Scheme file
    with the same version of the compiler.
  - the "-consult-type-file" and "-emit-type-file" options \ 
have been renamed
    to "-consult-types-file" and "-emit-types-file", \ 
respectively.

- Tools
  - The new "-link" option to csc allows linking with objects from \ 
extensions.
  - The new "-libdir" option to csc allows overriding the runtime library
    directory.
  - The ambiguous "-l<libname>" option for csc has been removed \ 
(#1193).
  - Removed deprecated "-n" shorthand for \ 
"-emit-inline-file" from csc.
  - Removed "chicken-bug" tool.

- Core libraries
  - Removed support for memory-mapped files (posix), queues
    (data-structures), binary-search (data-structures), scan-input-lines
    (utils), group-information (posix) object-eviction (lolevel), and
    compile-file (utils). These are now available as eggs.
  - Removed the srfi-1, srfi-13, srfi-14, srfi-18, srfi-69, and utils
    units. These are now available as eggs.
  - Added the `executable-pathname` procedure for retrieving a path to
    the currently-running executable.
  - Removed all support for SWIG.
  - Removed interrupts-enabled declaration specifier.
  - `sleep` now suspends the current thread when threading is enabled,
    otherwise it sleeps the process. The new `process-sleep` procedure
    in unit posix can be used to sleep the process unconditionally.
  - `with-error-output-to-port' from the ports module has been renamed
    to the more common `with-error-to-port', and `with-error-to-string'
    has been added for completeness (thanks to Michael Silver).
  - A new `make-bidirectional-port' procedure has been added to the
    ports unit that will combine separate input- and output- ports into
    a single bidirectional port.
  - New `input-port-open?` and `output-port-open?` procedures have been
    added for testing whether a port is open in a specific direction.
  - An `include-relative` form has been added to the (chicken base) module.
    This works like `load-relative` but for textual inclusion.
  - Keywords are now always written in "portable" style by WRITE, so
    that the reader's keyword style doesn't need to match the writer's.
  - The environment variable `CHICKEN_PREFIX` has been removed.
  - Added the `glob->sre` procedure to the irregex library.
  - Removed the `get-host-name' and `system-information' procedures.
    These are available in the "system-information" egg.
  - Removed the `eval-when`, `select` and `ensure` macros.  These are
    available in the "miscmacros" egg.
  - Removed the require-extension-for-syntax macro.
  - Renamed bit-set? to bit->boolean because of swapped argument order
    with respect to SRFI-33 and SRFI-60, which was confusing (fixes
    #1385, thanks to Lemonboy).
  - file-{read,write,execute}-access will now raise an exception when
    the file doesn't exist or some other non-access related problem is
    detected (fixes #1386, thanks to Vasilij Schneidermann).
  - `change-file-mode` was renamed to set-file-permissions! and SRFI-17
    generalized set! support has been added for `file-permissions`.
    This procedure now also accepts a file descriptor or a port.
  - `file-permissions` now returns one value: the permission integer.
  - `read-file` has been renamed to `read-list`.
  - `read-all` was dropped, as `read-string` with #f as its NUM argument
     is equivalent.
  - `read-lines` and `read-all` no longer accept a string naming a file,
     only ports.
  - The procedures for random numbers have been reimplemented;
    access to system-specific entropy is available, together with a reasonably
    good pseudo random number generator (WELL512).
  - `glob` now returns an empty list for non-existent or inaccessible
    directories, instead of erroring out.
  - `file-copy' and `file-move' have been renamed to `copy-file' and
    `move-file', for consistency with `delete-file' and `rename-file'.
  - `rename-file' now refuses to overwrite an existing file unless an
    optional "clobber" argument is provided.
  - The `r4rs` module no longer exports `eval`, which was not in R4RS.
  - `process`, `process*` and `process-execute` now expect lists of the form
    (("NAME" . "VALUE") ...) instead of the previous \ 
(("NAME=VALUE") ...)
    as their environment argument.
  - `repository-path` is now a parameter containing a list of strings instead
    of a string, as the search path for libraries can now contain multiple
    directories.
  - `file-read-access?`, `file-write-access?` and `file-execute-access?` have
    been renamed `file-readable?`, `file-writable?` and `file-executable?`
    into the (chicken file) module.

- Module system
  - The compiler has been modularised, for improved namespacing.  This
    means names from the compiler should not leak out into the compiled
    program's (macro) namespace anymore.
  - The core units have been converted to modules under the "chicken"
    namespace.
  - Added support for list-style library names.
  - The "use" and "use-for-syntax" special forms have been \ 
removed
    in favor of "import" and "import-for-syntax" to reduce \ 
confusion.
  - Module imports are now lexically scoped: identifiers provided by
    an (import ...) inside (let ...) won't be visible outside that let.
  - Modules implementing an interface can now correctly export extra
    identifiers (bug reported by Martin Schneeweis, fix by "megane").

- Syntax expander
  - Removed support for (define-syntax (foo e r c) ...), which was
    undocumented and not officially supported anyway.
  - Removed support for normal "lambda" forms as syntax transformers,
    which has been deprecated since 4.8.0.
  - define and friends are now aggressively rejected in "expression
    contexts" (i.e., anywhere but toplevel or as internal defines).
  - define-record and define-record-type now create record types
    which are tagged with the module in which they're defined, so
    predicates no longer return #t for records with the same tag
    defined in another module. This tag is now also available under
    an identifier that matches the record type name (fixes #1342).
  - `include` now splices included expressions in the context in which
    the inclusion appears and does not treat the expressions as toplevel
    expressions by default.

- Eggs management
  - Egg-installation and building has been completely overhauled.
  - .meta + .setup files have been merged into a single declarative
    ".egg" file.
  - More static checks for egg descriptions, simplified generation
    of OS-specific build + install commands that is (hopefully)
    more practical for package maintainers.
  - Egg sources are cached locally to reduce download and rebuild
    times.
  - Dropped many obscure or unimportant options and features from
    `chicken-install`: (`-keep-installed`, `-reinstall`, `-proxy`,
    `-no-install`, `-username`, `-password`, `-init`, `-deploy`,
    `-keep-going`, `-scan`, `-csi`, `-show-depends`, `-show-foreign-depends`,
    `-prefix`.
  - Added new "-from-list" option to chicken-install.
  - Eggs can now be installed and located in multiple directories,
    using the `CHICKEN_REPOSITORY_PATH` +
    `CHICKEN_INSTALL_REPOSITORY`
    environment variables.
  - Static compilation of eggs is now fully supported and static
    versions of compiled eggs are available by default.
  - In a statically built chicken, the egg-tools ("chicken-install", \ 
"...-status",
    "...-uninstall") are still available, but only support static \ 
compilation
    of eggs.

- Foreign function interface
  - The foreign type specifier "ssize_t" is now accepted, and \ 
"size_t"
    arguments now only accept positive integers.  Return values of
    type size_t are no longer truncated on 32-bit platforms.