Next: Invocation, Previous: Introduction, Up: Top [Contents][Index]
downwards
for all ppc and s390 variants [Kimb B. Heino]
program-exists-p
[Mark Triggs]
downwards
on ARM [Kim B. Heino]
downwards
for x86_64.
Self-detection doesn’t work with gcc >= 4.7.0 [Kim B. Heino]
makepp
[Daniel Pfeiffer]
positon
meta-function [Jeremy Hankins] [Eli Barzilay]
beautify-symbol
,
remove-newlines
, option-index
and string->symbol
.
rep.ffi.util
module [Sergey Bolshakov]
A new module containing utils for rep’s ffi binding is added.
function-name
returns the name of the function object. (see Functions)
remove-hook-by-name
removes functions from a hook by their name. (see Normal Hooks)
Function in-hook-p
now has the documentation. (see Normal Hooks)
New sections “Module Aliases” (see Module Aliases), “Module Limits” (see Module Limits).
remove-hook
used to emit an error if the hook was unbound, but it’s fixed. [Teika kazura]
You need to rebuild rep-gtk and sawfish against this version of librep, because of an ABI-change.
Your lisp files have to be byte-compiled again, too.
debug-on-error
and backtrace-on-error
[Teika Kazura]
Previously, setting these values to t
triggered the debugger /
backtracer even if the error was signalled inside of condition-case
.
This behavior can still be obtained by setting them to the symbol always
.
Now, if they’re t
, the debugger / backtracer is invoked only
if the control is not inside of any condition-case
. Notice that
the condition is NOT if the error is actually handled by an error
handler. It is not the best, but we can’t improve it.
The default value of backtrace-on-error
is now t
.
Handling of functions’ docstring is improved. The revised
documenation
function is ensured to return the docstring
of functions, macros, and special forms (see Docstrings).
Previously, fuctions’ docstrings of byte-compiled user-files (eg: pager.jlc) were lost, but not now.
subr-structure
[Teika Kazura]Reorganized documentation files. Many capital letter name files were updated or merged into the info.
New entries: See Crash course for Elisp users, See Closures,
on leading tilde in a filename and tarball access (see File Handlers),
fully revised the module section (see Modules), improved
description on invocation (see Invocation), improved
“fluid” and let
descriptions (see Fluid Variables,
and see Local Variables), improved the read syntax of character
(see Characters). Module names are supplied for all functions.
Supplied documentation to some functions: Input stream functions
peek-char
, read-char
(see Input Functions), list
functions remove-if
, remove-if-not
(see Mapping Functions), table-size
(see Hash Tables), setcar
,
setcdr
and cdddr
family (see Cons Cells),
assoc-regexp
(see Association Lists).
define-special-variable
is replaced by defvar-setq
[Teika kazura]
The former is still valid, but it’s a very confusing name, therefore the latter is introduced.
file-uid-p
to file-uid
and file-gid-p
to file-gid
[Christopher Bratusek]
Describes functions signal
and string-split
. Correction
in suffix handling of load
function. More details on the function
require
.
Practical effect: Previously, if a user byte-compile files, then the docstring is lost in sawfish-config. This is fixed.
Details: Loss of docstring happened only if (1) byte compiler is not
given --write-docs
, so only byte-compilation by user (2) defvar
is invoked within macro definition, including defcustom
in
Sawfish. Plain defvar was not affected by this bug. It was because in
’trans-defvar’ in lisp/rep/vm/compiler/rep.jl, the docstring is stored
in a wrong property variable-documentation
. It is corrected to
documentation
.
Symbol variable-documentation
is not used elsewhere, including
Sawfish and emacs’ sawfish-mode.
file-gid-p
function for getting the gid of a file
[Christopher Bratusek]
file-uid-p
function for getting the uid of a file
[Christopher Bratusek]
file-executable-p
function
rep
, repdoc
, rep-remote
and rep-xgettext
[Debian]
rep.ffi
module (Foreign Function Interface). Uses
gcc’s libffi. Very untested.
GH
interface.
system
function (race condition that only seems to show up on
Linux 2.6 kernels)
rep.data.trie
, rep.threads.proxy
rep.xml.reader
and rep.xml.printer
,
though these should probably be used with extreme caution
rep.net.rpc
module, protocol is
incompatible with previous version. Should be more robust
rep.i18n.gettext
module exports the
bindtextdomaincodeset
function (Christophe Fergeau)
inexact->exact
can now convert floating point numbers to
rationals (though not optimally). This means that numerator
and
denominator
also work better with floats now
file-ttyp
call-with-lexical-origins
and
lexical-origin
functions. This adds memory overhead but is only
enabled in interpreted mode, or other times it could be useful (e.g.
when compiling)
make-weak-ref
, weak-ref
, weak-ref-set
. A weak
reference is a pointer to another object. When that object is garbage
collected, the pointer in the weak reference is set to false.
#undefined
value. Returned by %define
and
the macros using it (defun
, defmacro
, etc…)
table-size
in module rep.data.tables
thread-suspend
returns true iff the timeout was reached
(i.e. return false if thread-wake
was used to unsuspend the
thread)
object
macro now have an
implicit self
binding – the object representing their self (or
their most derived self)
condition-variable-wait
and obtain-mutex
functions
rep.threads.message-port
module, implements a simple
message queue for threads
log
function now optionally accepts a second argument, the
base of the logarithm
string-replace
function may now be given a function as
its template parameter
current-thread
and all-threads
will create a thread
object for the implicit thread if there isn’t one already
current-time-string
letrec
bindings may now have more than
one form
object
macro now evaluates its base-object
parameter exactly once
define-value
mips-compaq-nonstopux
architecture (Tom Bates)
,reload
and ,unload
repl commands not to try
to remove non-existent structures
rep.util.md5
, has two functions for generating
MD5 message digests (of files or strings)
rep.io.sockets
function:
In the socket-server
function the host and/or port
arguments may be false, meaning to listen on all addresses and to
choose a random unused port.
New functions socket-peer-address
and socket-peer-port
,
these always returns the details of the far end of the connetion.
socket-address
and socket-port
have been changed to
always return the details of the local connection point.
rep.system
module, crypt
. A wrapper
for the system’s crypt
function (if it has one)
rep.threads
mdoule,
make-suspended-thread
rep.net.rpc
, provides a text-stream based RPC
mechanism for Lisp programs. Similar in some ways to untyped CORBA.
(This is still in the experimental stage – its interface may change in
forthcoming releases)
rep.data
module, list->vector
and
vector->list
define-special-variable
. A combination of
defvar
and setq
– it always makes the variable special
and it always sets it to the given value
rep.test.framework
implementing assert
,
check
and test
macros. This provides a framework for
implementing unit tests in Lisp modules (such that running the
interpreter with the ‘--check’ option will run all tests that have
been set up to be autoloaded
rep_parse_number
function not to require a
terminating null character in the string when parsing bignums
Qrep_lang_interpreter
once
defvar
forms, add any doc
string they have to the database
defvar
special form can now take only a single
argument
#\return
characters as white space
rep_file_type
and rep_guardian_type
to the
list of symbols exported from librep
install-aliases
script (Peter Teichman)
rep.threads.condition-variable
string-split
and string-replace
to the gaol
readline
function, a function
to call to generate completions. The rl-completion-generator
method of supplying this function is deprecated
premature-end-of-stream
error. This is signalled
instead of end-of-stream
when reading characters in the middle
of a syntax form. The end-of-stream
error is only signalled when
the end of the stream is reached before encountering anything other
than whitespace characters
define
macro
expansion
define
so that it tracks bound variables and ignores
shadowed keywords when traversing code
install-aliases
shell script
--enable-full-name-terminator
remove-if
and remove-if-not
#f
, #t
, #!optional
, #!key
and
#!rest
are now uninterned symbols. Keywords are interned in a
separate obarray
pwd-prompt
function
define
to ignore structure
and
define-structure
forms
nil
. Instead there is a special object ()
fulfulling
these two roles. For modules importing the rep
module, the
symbol nil
evaluates to ()
. This allows the scheme
module to be more compliant with the Scheme standard
&optional
and &rest
, in favour of
#!optional
and #!rest
.
#!key
to declare them.
Keyword syntax is ‘#:param’. For example:
((lambda (#!key a b) (list a b)) #:b 2 #:a 1) ⇒ (1 2)
#!optional
and #!key
parameters may now have
default values, syntax is (var default)
. For
example:
((lambda (#!optional (a 1)) a)) ⇒ 1
All module names prefixed with ‘rep.’ are reserved for librep, other top-level names should be picked to be as unique as possible
The existing modules have been renamed to fit this scheme (see the file TREE in the distribution for the hierarchy details). However, old module names will still work for the time being
rep
module no longer includes the rep.regexp
,
rep.system
, rep.io.files
, rep.io.processes
or
rep.io.file-handlers
modules. These need to be imported
explicitly
define
macro now takes a doc string as its optional
third parameter
letrec
expressions
unscheme
module. Another Scheme implementation,
but the goal of this one is to integrate cleanly with the librep
runtime environment, even if this is at the expense of R4RS compliance
For example, in unscheme
code, #f ⇒ ()
and
#t ⇒ t
. This allows rep and unscheme functions to call
each other without needing to convert any data
define-structures
to export multiple views of a
single underlying environment
$LD_LIBRARY_PATH
for plugins, but prepend all
directories in colon-separated $REP_DL_LOAD_PATH
to
dl-load-path
. Similarly, the contents of $REP_LOAD_PATH
is prepended to rep-load-path
(/ x) ⇒ (/ 1 x)
string-replace
,
string-split
(in the rep.regexp
module)
#f
and #t
are now primitive symbols, not special
objects
apply
, to ensure they
get eliminated
rep.i18n.gettext
,
rep.vm.safe-interpreter
, rep.vm.assembler
,
unscheme
, rep.data.objects
, rep.www.quote-url
,
rep.www.fetch-url
, rep.util.ispell
,
rep.util.base64
, rep.util.autoloader
,
rep.io.sockets
, rep.util.time
, rep.net.domain-name
long long
type on AIX, IRIX and Solaris (Dan
McNichol, Albert Chin-A-Young)
DEFUN
macro for C++ (Matt Tucker); also fixed header
files to avoid C++ keywords
default-boundp
, continuation-callable-p
defvar
forms if the symbol
isn’t already bound
case
expressions correctly; eliminate
tail-recursion in cond
forms when possible
scheme
module
long long
for non-fixnum integers (promote to
floats when out of range); no exact rationals. There’s also an option
to disable continuations/threading (‘--disable-continuations’)
(declare (inline names…))
to tell the
compiler that it might be useful to inline the named functions
gaol
module. Interface is essentially:
gaol-define
, gaol-define-special
,
gaol-define-file-handler
. Added gaol-open
to import
complete modules. Still supports old interface
thread-join
, waits for a specified thread to
exit, then returns the value of the last form it evaluated
ring
module, sanitized the interface
(preserving compatibility with old functions), also added a
ring->list
function
rplaca
and rplacd
(but not setcar
and
setcdr
) functions now return the cell being modified, not the
value being stored into it, for compatibility with CL (Karl Hegbloom)
unwind-protect
, catch
, condition-case
: these
special forms are now macros
bad-arg
or missing-arg
errors,
try to include the function as the first element of the error data
load
function now only loads files without suffixes
if no-suffix arg is non-nil
(prevents picking up
un-suffixed files by mistake, e.g. from the current directory)
gettext
module not redefining _
binding in rep
module
rep-config
script (Mark Hewitt,
Dan Winship)
rep_INTERN_SPECIAL
macro not looking for
default values of special variables
min
and max
when
operating on non-numeric values
define
forms
load
empty files
gaol
module can now create multiple gaols, each with
it’s own namespace
defconst
never evaluates its constant)
Modelled after the Scheme48 system, but simpler. At its simplest,
include a define-structure
form in each file representing a
module:
(define-structure name interface config body…)
The external definitions of this module can then be imported by other
modules through their config statements, e.g. (open
NAMES…)
. Most modules will open rep
to get the
standard language definitions.
foo#bar
reads as (structure-ref foo bar)
The timers
, tables
, sdbm
, gdbm
,
readline
, gettext
, ring
, mutex
,
memoize
, lisp-doc
, disassembler
, compiler
,
date
, cgi-get
, gaol
features are all now modules
(this is backwards compatible, since modules may be imported using
require
)
See the “Modules” section of the manual for more details.
make-datum
, datum-ref
, datum-set
,
has-type-p
, define-datum-printer
define-record-type
macro for
defining data structures (the records
module)
make-fluid
, fluid
, fluid-set
, with-fluids
,
let-fluids
)
queues
module providing a basic queue type
peek-char
, input-stream-p
,
output-stream-p
min
, max
, floor
,
ceiling
, round
, truncate
)
eql
and equal
no longer ignore exactness when
comparing numbers. =
, /=
, <
, >
, <=
and >=
do ignore inexactness. E.g.
(eql 2 2.) ⇒ nil (= 2 2.) ⇒ t
string->number
and
number->string
functions
scheme
). Do ,new foo RET ,open scheme to test it in
the repl, use (open scheme)
instead of (open rep)
to use
it within modules.
The compiler also knows enough about Scheme to be able to compile it. Also, use the ‘-s’ or ‘--scheme’ options to load a file of Scheme code.
append
and nconc
may be a
non-proper-list now
do
macro for iteration
define
supports curried functions. E.g. (define
((plus a) b) (+ a b))
, then (plus 1)
evaluates to the function
that adds one to its argument.
(declare clauses…)
form. See the
“Compiler Declarations” section of the manual for details on the
actual declarations supported.
progn
and begin
forms
themselves into the top-level (for when macros expand into multiple
definitions)
(let () …)
as a named let
let
, let*
,
function
, if
, and
, or
, prog2
,
defmacro
, defun
, defconst
, define-value
,
setq-default
let
now supports Scheme’s named-let construct for
iteration via tail recursion
space
,
newline
, backspace
, tab
, linefeed
,
return
, page
, rubout
), and ‘#(…)’
vectors
dynamic-wind
function
RTLD_GLOBAL
; everything should
work on Tru64 now (Aron Griffis)
make-guardian
function (as described in Dybvig’s paper). These are a clean mechanism
for allowing the programmer to control when arbitrary lisp objects are
finally deallocated. Also added a new hook: after-gc-hook
error-handler-function
contains a function then it will be
called to handle the error, with arguments (error
data)
.
case
, switches on a key value and sets of
constants
call/cc
(also available through the alias
call-with-current-continuation
). Provides scheme-like
continuation functions. Special variables are now deep-bound to support
this correctly
(lambda (x . y) …)
define
syntax, with support for
inner definitions
tables
plugin implements hash tables, with extensible
hashing and comparison methods; supports both strongly and weakly keyed
tables
put
and get
functions now use equal
to
compare property names
Compiled lisp code will need to be rebuilt to run on the modified virtual machine.
macro-environment
to the
macro environment it was called with. This allows macros to reliably
expand inner macro uses
before-exit-hook
. Called immediately before
exiting
rep-xgettext
now has an option ‘--c’. This makes it
output pseudo C code containing the string constants found
define-value
. A combination of set
and
defvar
, but without implying dynamic scope
load
scans after-load-alist for plugins as well as
lisp libraries
(if t)
now evaluates to nil
not t
rep_load_environment
and
rep_top_level_exit
defvar
allows symbols to be redefined in protected
environments if they haven’t also been defined by unprotected
environments
__builtin_return_address
functions (George Lebl)
gettext
implementation, but only if it
looks like it’s the GNU implementation
letrec
, caar
, …, cddr
,
caaar
, …, cdddr
, in-hook-p
,
make-variable-special
unless
to have the Common Lisp semantics—return
nil
when the condition evaluates true, not the value of the
condition
rep-xgettext
script to remove duplicated strings and
to search exhaustively
add-hook
forces the hook variable to be special (in case
it wasn’t declared using defvar
)
Fixed some documentation bugs; fixed some build problems
defvar
are dynamically scoped.
fset
,
symbol-function
and fboundp
functions have been removed
This allows all elements in procedure-call forms to be evaluated equally (as in scheme), so things like:
((if t + -) 1 2)
now work. Related to this, function names (i.e. symbols and lambda expressions) are no longer dereferenced by any operations taking functions as arguments. Only built-in subroutines and closures are considered functions.
This means that where before you’d write something like:
(mapcar '+ '(1 2 3))
this is now illegal; the +
function must be evaluated:
(mapcar + '(1 2 3))
lambda
is now a special form evaluating to a closure (as
in scheme); this means that the following are exactly equivalent:
(lambda (x) x) ≡ (function (lambda (x) x)) ≡ #'(lambda (x) x)
An alternative method of enclosing a lambda expression is to use the
make-closure
function.
gaol
module providing semi-safe environment for untrusted
code to evaluate in
gettext
module; also support for
‘%1$s’ type format specifiers
string-equal
and string-lessp
process-id
function now returns pid of lisp interpreter
when called with zero arguments
shl_load
(HP-UX)
last
function
load
function
autoload-verbose
variable; set it to nil
to
turn off the messages when autoloading
No new features; minor portability tweaks and build changes. Fix bug of trying to load directories as Lisp scripts
unsetenv
function
system
now uses process-environment
set-input-handler
, registers an asynchronous
input handler for a local file
SIGCHLD
signals
rep
binary by default always loads a script named
rep, not named by it’s argv[0]
(this breaks under the
newer libtool)
SIGUSR2
prints all debug buffers
error-mode
and interrupt-mode
control
where errors and user-interrupts (i.e. SIGINT
signals) are
handled. The three possible values are: top-level
, exit
and nil
(denotes the current event loop).
symbolp
.
SIGINT
, SIGHUP
and SIGTERM
signals should
now be caught more successfully.
dl-load-path
:
‘libexecdir/rep/arch’ to contain third-party shared
libraries.
First public release.
Next: Invocation, Previous: Introduction, Up: Top [Contents][Index]