Version history
Changes in the release 5.1.4
-
Moved macros
receive , fluid-let ,
iterate-2-lists , and
iterate-2-lists-pure from the bootstrapped
environment into the standard library.
-
Added macros
iterate-2-lists-with-break and
iterate-2-lists-with-break-pure
into the standard-library.
Changes in the release 5.1.3
-
Implemented argument procedure optimization.
-
Implemented
letrec procedure variable optimization.
-
Use iteration macros and
letrec to iterate lists in
the bootstrapped environment.
Changes in the release 5.1.2
-
Fixed a bug with the Scheme linker backend.
-
Fixed a bug in script
link-test-programs.scm .
-
Updated the User Guide.
Changes in the release 5.1.1
Changes in the release 5.1.0
-
Fixed several bugs with generic procedures.
-
Fixed bugs with internal variable numbering.
-
Fixed a bug with calling procedures inside parameterized
procedures.
-
Fixed a bug with reimporting variables.
-
Implemented methods
construct-complex-matrix ,
matrix-conj ,
conj ,
transpose ,
herm ,
diag-of ,
generate-matrix ,
generate-diag-matrix ,
matrix-map ,
matrix-map-w-ind , and
diag-matrix-map-w-ind
in module matrix .
-
Added a matrix implementation based on the
bytevector IEEE-754 interface
into the standard library.
Changes in the release 5.0.0
-
Bootstrapped version of Theme-D included.
-
Fixed a bug with inlined constructors.
-
Fixed a bug with stripping unused code.
-
Fixed using the module resolution operator
@
with normal generic procedures.
-
Optimized typecast from
(:union <a> <x>) or
(:union <x> <a>) to
<x>
where <a> is an atomic type.
-
Optimized type cast to a final simple class.
-
Implemented keywords.
-
Added procedures
object-address ,
last0 and setenv into the
standard library.
-
Fixed a bug with virtual method stripping.
-
Fixed a bug with normal method redeclaration.
-
Fixed a bug with statically casting nonreturning expressions.
Changes in the release 4.3.0
-
Fixed lexical binding of variables.
-
Fixed a bug in
quasiquote .
-
Fixed bugs with purity checking of
set!
expressions.
Changes in the release 4.2.1
-
Fixed some bugs related to
quasiquote ,
parametrized signatures,
until , and cast expressions.
Changes in the release 4.2.0
-
Improved type checking for uniform list types.
-
Improved type checking for quasiquote expressions.
-
Updated the language manual.
Changes in the release 4.1.1
-
Implemented test suite.
-
Fixed condition type checking in
if and
until expressions.
-
A minor improvement to signature type checking.
-
Improved main procedure type checking.
-
Fixed a bug in the linker guile backend.
-
Added a command line parser into the standard library.
Changes in the release 4.1.0
-
Fixed a bug with normal generic procedures.
-
Added procedure
d-for-each2 into module
dynamic-list .
-
A minor optimization to parametrized procedure calls.
-
Optimized the standard library by removing unnecessary
primitive result type checks.
-
Added the following procedures into the standard library:
simplify-rational2
,
simplify-complex
,
append-uniform ,
append-uniform0 ,
append-uniform2 .
-
Fixed a bug with reporting error return attribute type mismatch.
-
Improved the error message for generic static dispatch error.
-
Implemented linker option
--check-all-primitives .
- Implemented procedure
real->integer in
the C support library
and improved its implementation in the alternative support
library.
-
Added the following procedures into the standard library:
d-map2 ,
d-map-nonpure2 ,
d-for-each2 ,
d-for-all? ,
d-for-all-nonpure? ,
d-for-all0? ,
d-for-all-nonpure0? ,
d-for-all1? ,
d-for-all-nonpure1? ,
d-for-all2? ,
d-for-all-nonpure2? ,
d-exists? ,
d-exists-nonpure? ,
d-exists0? ,
d-exists-nonpure0? ,
d-exists1? ,
d-exists-nonpure1? ,
d-exists2? ,
and d-exists-nonpure2? .
-
Added form
iterate-list-pure into module
list-utilities .
-
Fixed bugs in the standard library makefile.
-
Fixed a bug with split linking.
Changes in the release 4.0.3
-
Fixed a bug with pseudocode element
gen-proc-class .
-
Fixed a bug in the type equivalence computation in the runtime environment.
-
Fixed
param-proc-dispatch .
-
A minor optimization to procedure calls.
-
Implemented option
--guile-opt-level in the linker.
-
Added procedure
eq? into module core .
-
Added
procedures
caar , cadr ,
cdar , cddr , caddr ,
cdddr , cadddr , map2 ,
map-nonpure2 , for-each2 ,
for-all2? , for-all-nonpure2? ,
exists2? ,
and
exists-nonpure2? to
module list-utilities .
-
Added
procedures
d-reverse , list? ,
d-caar , d-cadr , d-cdar ,
d-cddr , d-caddr ,
d-cdddr , and d-cadddr to module
dynamic-list .
-
Added module
mutable-pair into the standard
library.
Changes in the release 4.0.2
-
Fixed a bug related to parametrized logical types in the runtime
environment.
-
Fixed a bug in stripping.
-
Fixed bugs with split linking.
-
A fix to the parametrized method dispatch.
-
Implemented option
--version in commands
theme-d-compile ,
theme-d-link , run-theme-d-program ,
and run-split-theme-d-program .
Changes in the release 4.0.1
-
Corrected a bug in cycle detection.
-
Removed some time-consuming debug code from the runtime
environment.
-
Implemented keyword
static-gen-proc-dispatch .
-
Optimized the
apply procedure.
-
Optimized module
hash-table2 and added a
slightly more optimized module hash-table2-opt .
Changes in the release 4.0.0
-
Implemented lexically scoped and statically dispatched methods.
Changes in the release 3.1.3
-
Fixed bugs with noninheritable classes in the type system.
-
Improved the dynamical list support.
-
Optimized equality predicates for vectors.
Changes in the release 3.1.2
-
Allow specifying the default duplicate binding handler
in linked programs.
Changes in the release 3.1.1
-
Fixed a bug with linking split programs.
-
Fixed a bug with unit expansion.
-
Improved the uninstalled environment.
Changes in the release 3.1.0
-
Implemented friend modules.
Changes in the release 3.0.5
-
Closed bug #934469.
-
Added dependency to
files.tci for file
console-io.tci in
theme-d-code/standard-library/Makefile.am .
-
Fixed the Racket runtime environment.
-
Fixed some bugs in the macro system.
-
Optimized
gen-car and gen-cdr .
-
Fixed the documentation of generic procedure
equal? .
Changes in the release 3.0.4
-
Fixed a bug with
quasiquote .
-
Fixed procedure name introspection.
Changes in the release 3.0.3
-
Fixed a bug in the type
system:
<none> no longer
inherits from <object> .
-
Fixed a bug with
@ .
Changes in the release 3.0.2
-
Added a missing
= method.
-
Fixed some error messages.
Changes in the release 3.0.1
-
Fixed a bug in type deduction.
Changes in the release 3.0.0
-
Support for Guile 3.0.
-
Guile 2.0 support no longer maintained.
-
Allow splitting linker target.
-
Updated handling introspection data in the linker.
-
Redefined target platforms.
-
New macro
iterate-list .
-
Compile th-scheme-utilities to Guile bytecode.
Changes in the release 2.1.1
-
Fixed a bug with forward declared classes.
Changes in the release 2.1.0
-
Fixed a bug with void generic procedures.
-
Inline constructors for classes whose superclass contains no fields.
-
Better support for using the software without installing it.
-
Implemented bytevectors and binary files in the standard library.
Changes in the release 2.0.0
-
New syntax for classes.
-
Improved constructors.
-
Created class
<source-expr> for the values
returned by procedure read .
-
Moved example program
creators.thp to
test769.thp and param-creators.thp to
test770.thp .
-
Added example programs
objects1.thp and
objects2.thp .
Changes in the release 1.4.1
-
Fixed a bug in the Standard Library Reference.
-
Use the underlying Guile implementation for EOF objects.
Changes in the release 1.4.0
-
Moved
call/cc , exec/cc , and
guard to the standard library.
-
Split the core module.
-
Allow a nonreturning expression to be casted statically to any type.
-
Optimized the internal representation of nonatomic constants.
-
Fixed a bug with intermediate language
scheme-no-opt .
-
Done some cleaning with the source code.
Changes in the release 1.3.1
-
Corrected bugs with generic procedures.
Changes in the release 1.3.0
-
Support for
Racket
as the target platform.
-
Fixed a bug with procedure
string-match .
-
Allow field names to overlap with variable names.
-
New implementation for hash tables.
-
Changed the runtime environment to use modules.
-
Programs written in Theme-D can be run without the Theme-D
configuration file.
-
Renamed
a-list to alist in the
standard library.
Changes in the release 1.2.0
-
Fixed and redesigned text file I/O
-
Fixed bugs with optimized equality predicates
-
Changed the implementation of static methods
-
Optimized predicate
equal? for primitive types
Changes in the release 1.1.17
-
Fixed a bug with toplevel mutable variables
-
Fixed procedure class macro expansion
-
Fixed assertion error messages
-
Renamed
<nil> to <null>
in the runtime environment
Changes in the release 1.1.16
-
Fixed bugs with generic procedure dispatch.
-
Fixed module linkage order.
-
Fixed a bug with constructors.
-
Allowed list constants in interfaces.
-
Implemented procedure call stack output for intermediate language
Scheme.
-
Removed vector constants from the core forms source code.
Changes in the release 1.1.15
-
Corrected a bug with let expressions.
-
Corrected bugs with special procedure type dispatch.
-
Improved some error messages.
Changes in the release 1.1.14
-
Changed Debian revision in the User Guide to a symbol.
Changes in the release 1.1.13
-
Corrected a bug with
match-type-strong .
Changes in the release 1.1.12
-
Corrected bugs with Guile 2.2 Tree-IL.
-
Install
custom1.scm and custom2.scm
instead of the .go files.
Changes in the release 1.1.11
-
Updated the documentation.
Changes in the release 1.1.10
-
Corrected a bug with custom primitive classes.
-
Allowed logical types in mutable forward declarations.
Changes in the release 1.1.9
-
Updated the documentation.
Changes in the release 1.1.8
-
Updated the documentation.
Changes in the release 1.1.7
-
Changed the installation directories.
-
Implemented script
get-theme-d-config-var .
-
Moved
doc/copyright to COPYING
and doc/ChangeLog to ChangeLog .
Changes in the release 1.1.6
-
Reorganized the code to be distributed in Debian.
-
Improved some error messages.
Changes in the release 1.1.5
-
Added generic procedure
= for testing numerical
equality.
-
Removed
equal? predicates between different
numerical classes.
-
Changed exception handling in the standard library and the runtime
environment.
-
Added procedure
raw-exit into the standard library.
-
Prevent inheriting Theme-D classes from GOOPS classes.
-
The program name is now the first command line argument.
-
Corrected a bug in the difference between a diagonal matrix
and a matrix.
-
Changed the syntax of the
guard-general form.
-
Added correct output of the test programs.
-
Optimized runtime GOOPS class handling.
Changes in the release 1.1.4
-
Corrected a bug with equality predicates and parametrized
classes in the runtime environment.
Changes in the release 1.1.3
-
Corrected bugs with equality predicate optimization.
-
Corrected a bug with reexporting macros.
-
Corrected a bug with
type-loop .
-
Added procedures
member-values? and
assoc-values into the standard library.
The
Theme-D support library Debian package
is now built for Guile 2.0.
Changes in the release 1.1.2
-
Corrected a bug with line numbering in error messages.
Changes in the release 1.1.1
-
Corrected a bug with letrec.
-
Updated
doc/theme-d-translator-types.pdf .
Changes in the release 1.1.0
-
Support for both guile-2.2 and guile-2.0.
-
Optimized
procedures
is-integer? , is-real? ,
r-floor , r-truncate , r-floor ,
and r-ceiling .
-
Added procedure
factorial to the core module.
-
Compute exact values for
log2 , log10 ,
tgamma , and lgamma .
-
Prevent stripping of class
<scheme-condition>
in the core module.
Changes in the release 1.0.12
-
Implemented numeric tower and rational numbers in the standard library.
-
Rewrote the generic math procedures.
-
Optimized real math procedures.
-
Implemented interface for many standard C and POSIX C math functions.
-
Added dependency to library
libthemedsupport .
-
Corrected a bug in procedure
c-acos .
-
Implemented
equal? as a generic procedure.
-
Corrected a bug with definition of declared methods.
-
Implemented bitwise arithmetic in the standard library.
-
Added procedures
r-round ,
r-truncate , r-floor ,
r-ceiling , i-nonneg-expt ,
r-nonneg-int-expt , r-int-expt ,
gcd , i-sign , r-sign ,
make-numerical-overflow ,
raise-numerical-overflow , nan ,
inf , and neg-inf into the core
module.
-
Optimized field references.
-
Load custom files from compiled files instead of source files.
Changes in the release 1.0.11
-
Added a missing type check for definitions of declared variables.
Changes in the release 1.0.10
-
Corrected a bug with cloning singletons.
-
Changed exception handling in i/o and math procedures.
-
Corrected expression output in compiler error messages.
-
Corrected line numbering in compiler error messages.
-
Changed macro syntax violation messages.
-
Check that
prelink-body is not used in interfaces.
-
Delete the target
.go file if linker fails.
-
Corrected a bug with
force-pure-expr .
-
Optimized
cast-x-vector procedures in case the
original element type is a subtype of the new element-type.
-
Corrected a bug with opening output files in the translator.
-
Added procedures
nan? , infinite? ,
and finite? into the standard library.
-
Added procedures
hash-exists? and
hash-remove! into the standard library.
-
Changed procedure
hash-ref to take the default
value as an argument.
-
Added procedure
delete-file into the standard library.
-
Allow nonlist toplevel expressions.
Changes in the release 1.0.9
-
Corrected bugs with signatures as procedure call argument types.
Changes in the release 1.0.8
-
Implemented keyword
static-cast .
-
Check the illegal use of keywords.
-
Corrected the error message with an unbound variable in
set! .
-
Corrected a bug in library procedure
or-map? .
-
Added library procedures
and-map-nonpure? ,
and-map-nonpure1? , or-map-nonpure? ,
or-map-nonpure1? , a-list-delete ,
filter , distinct-elements? , and
string-char-index-right .
-
Added declarations of procedures
map-car and
map-cdr into core.thi .
-
Added parametrized type
:nonempty-a-list into
core.thi .
-
Moved module
singleton from examples
into the standard library.
Changes in the release 1.0.7
-
Corrected a bug in the type system. Test program
test612.thp works now.
Changes in the release 1.0.6
-
Allow toplevel statements and procedure calls in programs and module
bodies.
-
New keyword
prelink-body to allow calling procedures
in toplevel statements.
-
Handle unspecified values with forward declarations and letrec
expressions.
-
Use SRFI-72 based implementation for the macro system.
-
Form
identifier-syntax and limited
syntax-case support.
-
Allow a module reference as the first argument of
set! .
Changes in the release 1.0.5
-
Corrected equivalence predicate optimization.
-
Corrected bugs in vector typecasts.
-
Check illegal non-toplevel expressions.
Changes in the release 1.0.4
-
Corrected a bug with parametrized procedure result type checking.
-
User defined Theme-D procedures are now visible in runtime backtrace.
-
Pretty printed runtime backtraces.
-
Print type information with runtime error messages.
Changes in the release 1.0.3
-
Corrected the
eq-by-value? flag of pair classes to
#t .
-
Corrected a bug with
<none> type.
-
Optimized procedure calls.
-
Optimized the equality predicates.
-
Optimized checking primitive classes in
match-type and is-instance? .
-
Redesigned
assoc and member?
procedures in order to invoke the equality predicate
optimization.
-
Improved linker error messages with procedure typing errors.
Changes in the release 1.0.2
Changes in the release 1.0.1
-
Simple and parametrized procedures can be used in signatures.
-
Corrected a bug with type checking simple procedure calls
inside parametrized procedures.
Changes in the release 1.0.0
-
Support Tree-IL as intermediate language.
- New keywords
use and @ :
Modules can be used without importing
their contents into the global namespace.
-
Corrected a bug with variable argument lists.
-
Corrected a bug with
param-proc-dispatch .
-
Corrected a bug with
field-set! inside
parametrized procedures.
-
Procedure
apply works with parametrized procedures.
-
Corrected type deduction algorithm in case a deduced value of a type
variable contains other type variables.
-
Keywords
make and constructor can be
used with pair classes.
-
Forms
and and or are implemented as macros.
-
Compatible with th-scheme-utilities version 1.3.
Changes in the release 0.9.10
-
Use guile objcode as the default target platform.
-
Shorter target variable names.
Changes in the release 0.9.9.1
-
Implemented nonpure iterators.
-
Allowed
<none> as a type parameter.
-
Changed the current value of a stream to be evaluated lazily.
Changes in the release 0.9.9
-
Corrected several bugs related to parametrized procedures.
-
Corrected a bug in the runtime Theme-D environment.
-
Implemented purely functional iterators.
-
Added option
--verbose-errors
to the compiler and the linker.
Changes in the release 0.9.8
-
Implemented streams in the standard library.
-
Improved error messages in parametrized procedure instantiation.
-
Install compiled files.
Changes in the release 0.9.7
-
Corrected a bug with parametrized types (
test434
did not compile).
-
Object factorization works again.
-
Optimized quoted list constants.
-
New keyword
static-type-of .
-
New keywords
lambda-automatic
and param-lambda-automatic that deduce
the result type from the body expression.
-
Implemented volatile variables that can be changed by pure procedures.
-
Implemented object conditionals that accept any nonfalse object as
true value.
-
Implemented delayed evaluation (
delay and
force ) into the standard library.
-
Implemented some new procedures in module
text-file-io .
-
Reorganized the language manual and the standard library reference.
Changes in the release 0.9.6
-
Optimized
match-type .
-
Rewrote the core list handling procedures to be statically
typed internally.
-
Optimized parametrized primitive procedures as ordinary parametrized
procedures are done.
-
Corrected bugs in
psyntax-external.scm .
-
Made
detect-cycles faster for lists.
Changes in the release 0.9.5
-
Corrected a bug with
set! .
-
Allowed
<none> as a type parameter.
-
Procedure
apply-without-result is removed as
it is no longer needed.
Changes in the release 0.9.4
-
Implemented a hygienic and lexically scoped macro system.
-
Added keyword
force-pure-expr .
-
Added procedure
peek-character into module
text-file-io .
Changes in the release 0.9.3
- Improved the explicit generic procedure dispatch.
- Simplified the foreign class interface.
- Corrected an error in the module system.
- Correction to mutable variable declarations.
- Corrected an error with method variable argument lists.
- Corrected a bug with
param-proc-instance .
- Corrected the subtype checking algorithm for union types.
- A declared value can be used as a value of a constant.
- Type of a
match-type expression may be
<object>
in some cases even though an else part is not present.
- Implemented some list and string handling procedures into the
standard library.
- Better error messages for identical or noncovariant methods and
erroneous parametrized procedure instantiations.
Changes in the release 0.9.2
- Autotools are used.
- Debian packaging is supported.
Changes in the release 0.9.1
- Implemented signatures and parametrized signatures resembling
Java interfaces.
Changes in the release 0.9.0
- Linker strips away unused code.
- Optimized application
functionals
apply , apply-nonpure ,
and apply-without-result .
- Implemented keyword
import-and-reeexport
for importing and reexporting modules.
- Implemented keywords
match-type
and try-cast for type casting.
- Implemented the symbol tables in the compiler and linker
as hash tables instead of lists.
- Made the foreign function interface better. It is no longer
necessary to specify equivalence predicates for external
classes.
Keyword
prevent-stripping prevents stripping away
a variable, which may be needed with the FFI.
- The Theme-D configuration file may be put into user's home
directory instead of
/etc .
Changes in the release 0.8.12
- A simple foreign function interface for GOOPS classes.
- Made text file and console IO functionality better.
- Implemented
assoc and member?
procedures.
- Fixed several bugs.
Changes in the release 0.8.11
- Renamed Theme to Theme-D in order to avoid confusion with
Jaap Weel's Theme language.
Changes in the release 0.8.10
- Fixed a bug with global mutable variables
Changes in the release 0.8.9
- Custom primitive classes
- Classes may specify a zero value. This is useful for
parametrized numerical classes.
- Libraries for scientific functions, complex numbers, and
matrices
Changes in the release 0.8.8
- Better type checking for parametrized types
- Factorize type expressions out of translated procedure
implementations
- Implement
call-with-current-continuation
- Procedures may be specified as always returning or never
returning
- Mapping functionals in the core library implemented in
Theme instead of using wrappers for Scheme functionals
- More flexible vector typecasts
Changes in the release 0.8.7
- Paramerized procedures are first class objects and they are
allowed as methods.
- Made an Emacs mode for Theme.
Changes in the release 0.8.6
- Use guile
2.0 as the platform (both the translator implementation
and the translator target code).
- Changed the directory structure.
- Corrected a linker bug that caused some runtime type
checks not to be generated.
Changes in the release 0.8.5
-
Corrected a linker bug that caused running several tests to fail.
-
Corrected a bug in the linker. Compiled program files can now
be put in any directory.
-
Implemented
do -loop.
-
Added documentation of
declare-method
into the language manual.
Changes in the release 0.8.4
-
A new module system. Module interfaces and implementations
are now in separate files.
-
Class constructors have an access specifier so you can
restrict where the class may be instantiated.
-
Keyword
declare-mutable to declare mutable
variables.
-
The internal mutable variables of pure procedures can be
changed.
-
Added library procedure
apply-without-result
for procedures without result value.
-
Dependencies to scsh have been removed.
Changes in the release 0.8.3
- Changed procedure typing. Generic and parametrized types
make now sense as values of procedure variables. For example,
you can now compute
(map cons ′(1 2 3) ′(a b c))
and
(map + ′(1.1 2.2 3.3) ′(4.4 5.5 6.6))
.
Changes in the release 0.8.2
- Corrected the parametrized class inheritance diagram in the
specification document.
- Corrected a minor error in
theme-representation.scm .
Changes in the release 0.8.1
- Made
equal? safe for cyclic data structures.
- Corrected unions so that incomplete (i.e. forward declared
and not defined) types work as union member types.
- Enhanced support for compilation into Scheme48 pseudocode.
- Theme compiler and linker can now be used from a shell.
- Updated documentation and added two figures about Theme
class hierarchy.
theme-0.8.1
requires scheme-general-1.2 .
Back to the main page
|