forked from herrmanntom/setlX
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathchangelog.txt
More file actions
360 lines (303 loc) · 14.5 KB
/
changelog.txt
File metadata and controls
360 lines (303 loc) · 14.5 KB
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
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
Changes (* notice | + feature added, replaced or improved | - feature removed | # bugfix):
---v2.4.0--- 2015-07-05
+ added plotting functionality
---v2.3.4--- 2015-02-11
# fixed matrix ** 0 computation
# return more intuitive result for la_eigenVectors
# removed error on empty closures
---v2.3.3--- 2014-12-14
# fixed operator associativity
# hopefully final rework of stack handling
---v2.3.2--- 2014-10-26
+ implemented lambda closures (e.g. x |=> y )
# reworked stack handling
---v2.3.1--- 2014-10-13
# minor performance fixes
+ updated tutorial
---v2.3.0--- 2014-10-09
+ implemented matrix functionality
+ separated closures and procedures; normal procedures do not have closure functionality
+ allow to access relations with multiple parameters without explicitly wrapping those
parameters into a list, e.g.
r[[a,b]] := 1; print(r[[a,b]]);
may now be written as
r[a,b] := 1; print(r[a,b]);
+ added specification of optional and unlimited parameters for procedures, closures and classes
+ added ability to expand lists as arguments for function calls
---v2.2.4--- 2014-06-09
+ added "getClass()" method to objects, that refers to the class used to create
that object
+ improve print() of predefined functions when they have optional parameters
# fix some error messages when trying to perform operation on om
# fixed some internal issues with comparing objects and classes
---v2.2.3--- 2014-04-07
+ updated tutorial
+ add --harshWelcome option, that reduces the welcome message
+ allow combination of short command line options
+ improve call and member access error messages
# fix empty regular expression capture groups being returned as string "null",
now they are returned as om
---v2.2.2--- 2014-02-19
+ implemented >< operator on lists, which combines two lists of equal size into
a list of pairs, one from each list
+ implemented closures as special kind of procedure for future use; currently
closures work exactly like normal procedures
+ improve ask() on PCs when there is just one answer
+ updated to antlr 4.2
# fixed closure behavior with cachedProcedures calling themselves recursively
* as 'closure' is now a keyword, code using it as an identifier will break
---v2.2.1--- 2014-02-03
+ added getOsID() function that returns an identifier for the operating system
that setlX runs on
+ added ask(question, answers) function that prompts the user with `question',
then forces him to select one from answers, which is returned
+ allow negative indexes to strings and lists, which count from the end
---v2.2.0--- 2013-08-14
+ added a do-while statement
+ added 64 bit floating point values that behave according to IEEE
754
+ added the function double() that converts a string or number into a
floating point number
+ added the function isDouble() that checks whether the value is a
floating point number
- removed the function real and isReal
# min and max can now only be applied to lists or sets of numbers.
* build for Java 1.6 by default
---v2.1.1--- 2013-07-27
+ the single straight quote is now used as escape character in literals and the
only valid escape sequence is two quotes ('') as sequence for a single one (')
- the quote operator (@) looses its special meaning for double-quoted strings;
it will now only force a term creation; to get the old behavior on strings,
replace the quotes with single straight ones: @"tax: 3$" -> 'tax: 3$'
# fix string escape level and error handling in split() function
* term representation of strings changed
* build for Java 1.6 by default
---v2.1.0--- 2013-07-01
+ added short versions for some command line options
+ provide better fallback when comparing objects without 'equals' member to other
types
- remove "short-iterate" syntax to resolve some issues in the grammar
(i.e {x in set | x%2 == 0} needs to be replaced with {x : x in set | x%2 == 0})
* lots of internal changes to the build system and error handling
---v2.0.2--- 2013-05-18
- removed partly defunct debug functions (but not trace)
+ add ability to trace object and class members
+ add very simple debugging function stop(id)
---v2.0.1--- 2013-04-28
# removed redundant quotes in objects
# refactor and improve trace functionality
---v2.0.0--- 2013-04-11
+ updated the tutorial to reflect the major new features
(basic object orientation and graphics support)
+ all Boolean operators are overloadable
---v1.6.1--- 2013-04-07 (unreleased)
+ added resetRandom() function, which reseeds the random number generator
+ improve automated tests to include term conversion
---v1.6.0--- 2013-03-24 (unreleased)
+ integrated graphics library by Markus Jagiella
* Note: setlX launcher scripts need to be updated
+ some performance improvements
* refactored Boolean expressions and some other bits and pieces
---v1.5.1--- 2013-03-10 (unreleased)
+ add syntax highlighting definition for gedit
+ moved SETLX_LIBRARY_PATH definition into launcher script
+ updated antlr to v4.0, which should improve parser error messages
+ simplified PreDefinedFunction API a little bit
# fixed some PDF layout issues
---v1.5.0--- 2013-02-23 (unreleased)
+ added hypot(numberValue, numberValue) and atan2(numberValue, numberValue) functions
+ make predefined math-functions (e.g. exp(x), sin(x)) overloadable in objects
+ eliminated explicit "this" parameter for object-methods
+ add engineering and plain mode for printing reals
# fix some bugs when accessing methods of objects
# fix crash of optimizer when code contains syntax errors
---v1.4.99999--- 2013-02-12 (unreleased)
+ removed global definitions ('var')
+ changed class definition syntax
---v1.4.9999--- 2013-02-10 (unreleased)
+ added nCPUs() functions, returning the number of CPUs (/cores) in the system
+ allow overloading of more functions for objects
---v1.4.999--- 2013-02-05 (unreleased)
+ implementation of object orientation extension almost feature complete
(missing a number of overloadable operators)
---v1.4.99--- 2013-02-03 (unreleased)
+ first iteration of object orientation extension
+ use multithreaded test script
+ add latex source for tutorial
+ print results of --ev and --ex options without sugar coating
# fix infinity when used as parameter for predefined math functions
# fix some issues in the grammar
---v1.4.5--- 2013-01-13
+ more robust internal handling of reals
+ improved stack management
# fix conversion from infinity to double
# fix range selection of lists, when range is out of bounds
# fix and update various scripts
---v1.4.4--- 2012-12-25
+ switched to BSD license
# fixed associativity of => operator during term-conversion/print
# fix some error messages
---v1.4.3--- 2012-12-13
+ updated the development documentation
+ allow powerSet computation by using the set as exponent, e.g. 2 ** {1,2,3}
+ added mathConst("Infinity")
+ m ** 2 computes the cartesianProduct of m, if m is a set
# fixed multiple "internal errors"
# fix error message for calls
---v1.4.2--- 2012-11-13
+ updated the tutorial
# fixed --help option
---v1.4.1--- 2012-11-10
+ allow assignment of indexable collection values (e.g. lists, strings, terms) to
lists of IDs (e.g. [a,b,c] := Term("foobar",99,sin); )
+ improved closure detection
+ added --ev and --ex options to directly execute an expression or statement
# fix char position variable in default branch of scan statement
---v1.4.0--- 2012-10-06
+ added closures
---v1.3.3--- 2012-09-30
+ added matches(string, pattern [, captureGroups]), replace(string, pattern, replacement),
replaceFirst(string, pattern, replacement) functions
# better explanation of errors in comparisons
---v1.3.2--- 2012-09-05
# fixed escaped single straight quote in literal strings (only handled escape sequence)
+ allow pattern in regex-branch to be an expression
+ added variable to scan statement, which stores a map of positions
where first matched character is located inside the input-string
* replaced '->' with 'as' in regex branches
---v1.3.1--- 2012-09-01
# fixed error handling in nested parsing runs (e.g. $-expressions in strings, parse())
+ added regex-branch to match
+ added scan statement
+ added literal strings enclosed in single straight quotes, which are transferred
from source into memory without parsing escape sequences or interpreting the content
in any way. While "\n" describes a string of one linebreak character, '\n' describes
a string of the two separate characters: backslash and n.
+ allow explicit lists/sets with rest as normal expression, not only in match
+ more powerful matching using explicit lists/sets with rest
+ added >< operator to compute the Cartesian-Product of two sets
---v1.3.0--- 2012-08-22
# fixed product of a number and a list
+ added tutorial.pdf
+ updated documentation
---v1.2.9--- unreleased
+ get() and read() will not add anything extra when supplying a user defined prompt
# fixed errors during certain operations on reals
---v1.2.8--- unreleased
# fixed from(string)
# fix isMap()
---v1.2.7--- unreleased
+ added clearCache(cachedProcedure) function
+ added check and backtrack statements
# fixed ceil and floor for integer reals (e.g. 2.0, -2.0)
+ iterations like:
for ([x,y] in s, [y,z] in t) {}
now work like
for ([x,y1] in s, [y2,z] in t | y1 == y2) {}
i.e. same variables must contain same values to execute the iteration block
---v1.2.6--- unreleased
+ added cached procedures (Keyword: cachedProcedure instead of just procedure)
+ added cacheStats(cachedProcedure) function
+ fixed issues with matching negative numbers
+ allow conditions in for-loops
---v1.2.5--- unreleased
+ added isNumber() function, which is equal to (isRational() || isReal())
+ brackets are transparent in terms
---v1.2.4--- unreleased
+ added optional Boolean conditions to match branches
# match correctly when using the same variable multiple times in a single match branch
+ lots of refactoring
---v1.2.3--- unreleased
# fixed matching strings using lists of variables
+ improved performance of collect
---v1.2.2--- 2012-08-01
+ changed rnd() to require second `numberOfChoices' parameter when used with rationals
+ added optional parameter to random()
+ added collect() function
---v1.2.1--- 2012-07-23
+ improved performance of forall/exist when used in loops
+ somewhat improved performance of variable look-ups
+ added run(command) function
+ added isPrime(integer) function
+ rnd() now also takes number as argument, returning a random number between
0 and the argument (inclusive) -- works for negative numbers as well
---v1.2.0--- 2012-07-17
# fixed minor bugs in string-representation of some statements
# forall and exist can be used in combinations with other Boolean expressions
# renamed --args option to --params, to avoid conflicts with args() function
* params variable will now be present, but empty if --params option is not used
+ added nPrint() and nPrintErr() functions, which do not add a new line
+ support % operator for sets, computing the symmetric difference, e.g. {1,2} % {1,3} = {2,3}
+ support * for lists, multiplying their contents
+ added toUpperCase(string), toLowerCase(string), startsWith(string, prefix),
endsWith(string, suffix), trim(string) and join(collection, separator) functions
* renamed strSplit() to split()
+ split() now also works for lists
+ added isProbablePrime(int) and nextProbablePrime(int) functions
+ added nextPermutation(list), sort(listOrString), shuffle(listOrString) functions
# fixed handling of Boolean expressions by the parser
+ match conditions respect preset variables
+ added perfomance test
+ added UNSUPPORTED profiling script to development distribution
---v1.1.1--- 2012-07-10
# fixed bug with indirect assignments not working in all cases
---v1.1.0--- 2012-07-09
+ fixed performance issue with break and continue statements
+ fixed performance issue with indirect assignment types (`+=', `-=', `*=')
+ added integer division assignment ( '\=' )
- removed assignment chaining for everything but the direct assignment (i.e. `a := b := "foo"')
+ strings are collections now ( try `for(c in "foo") {..}' or `first("foo")')
+ "prolog-style" list match works with strings
# faster 2nd+ time look-up of undefined variables
# fixed precedence of power operator ( ** )
+ add --args option, which passes all following options to the SetlX program (using variable `args')
---v1.0.2--- 2012-07-03
+ fixed performance issue with return statements
---v1.0.1--- 2012-07-01
* adding om to a string (e.g. "" + om) will now result in an error
* +/[] and */[] return om, not 0 or 1 respectively
+ added binary forms of +/ and */ operators to specify neutral element
# fixed parsing rules for reals and ranges
+ added compare(valueA, valueB) function
+ added strSplit(string, pattern) function
+ added reverse(collectionValue) function
+ improved performance of lists (in most cases)
* input in interactive mode is now accepted WITHOUT entering an empty line
+ newline can be escaped by adding a backslash before pressing [Enter]
+ added --multiLineMode option and multiLineMode() function to restore previous behavior
+ added loadLibrary() function, loading files from SETLX_LIBRARY_PATH environment variable
+ added --libraryPath option to override SETLX_LIBRARY_PATH
---v1.0.0--- 2012-06-10
* updated documentation
---v0.7.8--- 2012-06-06
* output of results in interactive mode will only be displayed for last statement
* output added by the interpreter is enclosed in ~< >~
+ added trace() function to print assignments
---v0.7.7--- 2012-06-01
+ added optional parameter `msg' to read(msg) and get(msg)
`msg' will be displayed in front of the prompt
+ added fileAPI (i.e. readFile(), writeFile(), appendFile(), deleteFile())
+ added function mathConst(name) to retrieve "e" and "pi"
- e and pi are not defined as global variables anymore
---v0.7.6--- 2012-05-26
# suppressed duplicate parser error messages
+ new random() function returning a random real: 0.0 <= random() <= 1.0
+ updated aStar examples
+ introduced some more platform independence (in preparation for Android version)
+ code cleanup
---v0.7.5--- 2012-05-16
+ added \ operator for integer division, e.g. a \ b == floor(a/b)
+ round() works for unlimited precision values
---v0.7.4--- 2012-05-12
+ implemented matching for sets
+ implemented splitting lists and sets in match
+ added permutations() function
+ added sleep() function
+ updated development manual
# fixed bug when reading from stdin
* renamed examples folder
---v0.7.3--- 2012-04-26
+ added assert function and option to disable assertions
+ updated aStar hanoi examples
---v0.7.2--- 2012-04-22
* initial change log entry