Skip to content

DeprecatedSystemProcedures

Will Clinger edited this page Jan 31, 2015 · 2 revisions

Deprecated System Procedures

None of the system procedures deprecated here are exported by any of the standard R7RS or R6RS libraries, so what follows assumes R5RS mode.

All predefined procedures whose name includes a period or colon (e.g. .car, car:pair) are system procedures that should be used only by the implementors of Larceny. Most of these procedures should be called only by compiler-generated code. Their existence, names, and semantics are subject to change without notice.

All Larceny-specific environment operations are system procedures that should be used only by the implementors of Larceny. Their existence, names, and semantics are subject to change without notice in future versions of Larceny.

All structure operations are system procedures that should be used only by the implementors of Larceny. They must now preserve an undocumented global invariant, which user code cannot do safely. Their existence, names, and semantics are subject to change without notice in future versions of Larceny. Use records instead.

The compiler's API for abstract syntax trees is exposed, mainly to make it easier to connect different macro expanders and interpreters. This entire API should be used only by the implementors of Larceny. Its existence, names, and semantics are subject to change without notice in future versions of Larceny.

The require system's internal API should be used only by the implementors of Larceny. Its existence, names, and semantics are subject to change without notice in future versions of Larceny.

The following system procedures should be used only by the implementors of Larceny. Few of them are adequately documented, some are unsafe unless used correctly, and all of them are subject to change without notice in future versions of Larceny.


typetag-set!
syscall
values-list
make-trampoline
evaluator
make-procedure
procedure-copy
procedure-length
procedure-ref
procedure-set!
enable-interrupts
disable-interrupts
call-without-interrupts
standard-timeslice
timer-interrupt-handler
keyboard-interrupt-handler
break-handler
error-handler
call-with-error-handler
call-without-errors
decode-error
reset
reset-handler
call-with-reset-handler
quit
quit-handler
repl
repl-evaluator
repl-printer
repl-prompt
repl-level
load-evaluator
load-print
add-exit-procedure!
add-init-procedure!
current-continuation-structure
print-length
print-level
procedure-printer
hashtable-printer
weird-printer
lowlevel-write
io/make-port
io/get-u8
io/put-u8
io/get-char
io/put-char

When Larceny supported only the Latin-1 character set, it seemed almost reasonable to perform both binary and textual i/o on a port. Now that Larceny supports Unicode, that is a very bad idea. The following procedures continue to support this bad idea, but are deprecated and should not be used in new code:


call-with-binary-input-file
call-with-binary-output-file
open-binary-input-file
open-binary-output-file
with-input-from-binary-file
with-output-to-binary-file
call-with-raw-latin-1-input-file
call-with-raw-latin-1-output-file
open-raw-latin-1-input-file
open-raw-latin-1-output-file
with-input-from-raw-latin-1-file
with-output-to-raw-latin-1-file

The readtable-ref and readtable-set! procedures are deprecated (and no longer work).

In Common Larceny, all predefined procedures whose name includes javadot are system procedures that affect the semantics of JavaDot notation. Except for the recognize-javadot-symbols? parameter, these procedures should be called only by the JavaDot system. (FIXME: Is this true? Why?) Their existence, names, and semantics are subject to change without notice in future versions of Larceny.

All reader parameters (see R6RSconversion) are deprecated. Their existence, names, and semantics are subject to change without notice in future versions of Larceny. Use command-line arguments to set the overall execution mode (-r5rs -r6rs -r7rs) and the global default for case-sensitivity (-foldcase -nofoldcase). Use reader flags (#!fold-case #!no-fold-case #!larceny #!r5rs #!r6rs #!r7rs) if you have to change the reader mode for a textual port (including the input port used by the read/eval/print loop).

Some Larceny procedures are used to measure system performance, mainly for research. All of these procedures are deprecated, but only because they are nonstandard and are subject to change without notice.

Clone this wiki locally