-
Notifications
You must be signed in to change notification settings - Fork 1
/
CHANGES.TXT
222 lines (169 loc) · 7.34 KB
/
CHANGES.TXT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
Current development release 1.3-SNAPSHOT
Release Candidate 1.3
2023-04-01
JSR 223 Invocable interface implementation
Added integer numbers
Introduced execution context attributes
- the ':noisy' attribute when true shows the result of each command
during a load operation
- the ':trace-enabled' attribute when true enables execution tracing
2023-02-05
JSR 223 conformant GleamScriptEngine
- handle console in GleamScriptContext constructor
- global and engine bindings
- use generic Adapter and Converter classes in JSR 223 Bindings
- per-manager global environment
- engine.eval() with bindings and context
- keep cache of shared envs
Introduce ExecutionContext
- holds I/O ports and other context
- a default one is accessible by all environments
- can be overridden in any environment
Multi-module Maven build
- separate the Interpreter and the REPL into different modules
- enforce a minimum Maven version
- add the Maven wrapper to the project
- provide updated BUILD.md instructions
Lots of improvements
- fix Logger methods that log an exception
- performance improvement with new Logger.log() taking Supplier<String>
- improved tests, with better summary in case of failed Scheme tests
- display() and write() now return their OutputPort and are chainable
- remove serialVersionUID comments
- better comments, minor formatting
- new Java code style (CodeStyle.xml)
- reformat all Java code
Release 1.2.0
2022-02-15
Refactor the main REPL
Refactor the Logger
- add getLogger() factory method
- Log caller class and method name
- Add custom LogFormatter
- Remove per-thread logger
- Set default logger level to INFO
Bug fixes and better tests
- Upgrade test framework to Junit 5
- Fix: ExpressionInEnvironmentAction NPE
- Fix: trace per Interpreter
- Parameterized tests
- Reader tests
2020-12-27
Refactor the Interpreter
- Remove static environments
- Each Interpreter instance is independently bootstrapped
- Remove ThreadLocal Interpreter
- Move I/O ports to Environment
- Change access to singletons, from value() to VALUE constant
- Change StringBuffer to StringBuilder in MutableString
- Implement hash() and equals() in MutableString
Add continuation tests
Improve doc strings and help output
- Edit/fix README.md
- New repo links in CONTRIBUTING.md
2020-11-09
Trace actions in the REPL: enable with !tron, disable with !troff.
Per-thread logger.
2020-11-07
Add native (scheme) tests.
Per-interpreter I/O.
Bootstrap in Report Environment.
Extend analyze() to redefined syntax.
Fix: check number of arguments in PrimitiveProcedure.
2020-10-22
Migrate to Java 8: Use switch for strings.
Release 1.1.0
2020-11-07
Update CHANGES.TXT and TODO.TXT
2020-10-21
Migrated to Java 1.6: Generics, @Override, List is now an Iterable.
Refactored and cleaned up Java code.
Introduced AbstractEntity.
Fix: dirty continuation after error in repl.
New primitive 'class-of' returns java.lang.Class of argument.
Remove redundant code and clarify comments.
Release 1.0.1
2020-12-12
Bug fixes:
/ not checking div by zero, wrong order of arguments
- wrong min number of arguments
Release 1.0.0
2020-10-17
Support Maven Exec plugin.
2020-06-21
Reworked Readme. Added Code of Conduct and Contributing docs.
2020-06-20
Adopted java.util.logging.
2018-11-22
Fixed concurrency issues.
2018-10-28
Switched to Maven.
2008-01-22
Added 'make-environment' and 'environment?' primitives, the former to
create a new environment and the latter to test if a value is an
environment.
The 'help' primitive is now syntax, so now one can do '(help if)' without
using 'quote'.
2008-01-20
Changed the way primitive procedures are defined and invoked.
Reflection is not used any more, thus achieving 30x faster calls.
Primitives are defined as anonymous classes in arrays of primitives,
overriding one of the apply methods (a funny way to obtain anonymous
functions in Java :-))
Introduced a new syntax: 'in-environment' to evaluate an expression in
a given environment. This, along with the 'current-environment'
primitive should complete the treatment of environments as first-order
values in Gleam.
Reworked the logging class, now called 'gleam.util.Log', in order to use
the 'java.util.logging' facility.
Release 0.89
2007-02-04
Changed the convention for argument passing to primitive procedures
written in Java. Procedures with 0..3 arguments now have specific
signatures. Checking of correct number of arguments was factored out of
library procedures in gleam.library, and moved to PrimitiveProcedure.
2007-01-28
Added the gleam.lang.JavaObject class, holding arbitrary Java objects.
The primitives 'new' and 'call' are used to instantiate a Java object
and to call a method on an instance. 'null' is bound to Java null.
A first Scheme <-> Java type conversion mechanism is implemented.
A new 'bind' method in the Interpreter allows Java code to define new
Scheme variables, holding Java objects, in the session environment.
Symbols are case-sensitive now, a deviation from R5RS needed to allow
the usage of symbols for Java class and method names. An effort will be
made to return to R5RS compliance.
Added a new 'gleam.util.Report.printStackTrace()' method for debugging.
Release 0.88
2007-01-15
Added the gleam.lang.Interpreter class, encapsulating the evaluation of
Scheme expressions. It is possible to have multiple independent
instances of the Gleam interpreter.
A severe issue was fixed, where two continuations repeatedly calling
each other could cause a Java stack overflow. The design flaw was to
implement the execution of a continuation in the Continuation class
itself. This is now delegated to the Interpreter.
Fixed 'save-session' and 'load-session': some environment reachable
classes (notably Actions) were not marked as Serializable.
Release 0.87
2007-01-05
The second argument to 'eval' is now optional: if no environment is
specified, the current environment is used, i.e. the environment in
effect at the time of the call.
Improved and corrected 'gleam_eval' implementation, so to perform syntax
analysis on its argument, and to extend the current continuation with
its evaluation in the required environment.
Implemented 'set-car!' and 'set-cdr!'.
Reworked 'write' so to show quotes and quasiquotes in their short form.
'car' and 'cdr' now throw exception on the empty list.
Implemented 'Entity.toString()' to give the same output as 'display'.
Added 'extend' method to Continuation, and 'append' method to Action, so
to make Java code simpler when linking new Actions to a Continuation.
Corrected problems in 'apply' and implemented CL-style 'list*'.
New 'define-macro' (to test).
Release 0.86
2006-12-20
Bootstrap implements quasiquotation, 'defmacro', 'cond', 'apply', etc.
C-style comments are no longer allowed.
Added EvalAction as support for macro expansion.
'Pair.eval()' now handles syntax-rewriters correctly.
SyntaxRewriter merged with SyntaxClosure.