-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathCHANGELOG.txt
503 lines (457 loc) · 23.4 KB
/
CHANGELOG.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
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
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
Asp change log
==============
The following is a history of changes to the Asp software, in reverse
chronological order.
Changes
-------
Version 1.2.3.4 (compiler 1.2.1.2, engine 1.2.2.4):
- Engine:
- Fixed a benign coding error in the API function AspIteratorErase.
- Compiler:
- Added a warning when script executables reach a specified percentage of the
maximum code size, the default being 80%.
- Standalone application:
- Included a missing header in the main module.
- General:
- Made command line option processing more robust for all commands.
Version 1.2.3.3 (compiler 1.2.1.1, engine 1.2.2.3):
- Engine:
- Fixed a regression introduced into API function AspStringAppend from
version 1.2.3.0 when asserts in many API functions were replaced with
appropriate return values to indicate calling errors. The regression caused
the function to fail in valid conditions.
Version 1.2.3.2 (compiler 1.2.1.1, engine 1.2.2.2):
- Engine:
- Added checks to ensure that local scope iterators (i.e., iterators created
with the ... object) are not used outside the context in which they were
created. Such a violation now causes the script to end in error.
- Corrected storage of the Ellipsis object to be a singleton.
- Fixed a memory leak in the API function AspIteratorInsert.
- Fixed a bug that occurred when AspStoreLocal replaced an existing symbol
entry with the same object (i.e., itself).
- Added API function AspUseCount, available only in debug builds.
Version 1.2.3.1 (compiler 1.2.1.1, engine 1.2.2.1):
- Engine:
- Added API function AspIterable and script-callable function iterable for
obtaining the iterable of a given iterator.
- NOTE: Although this is not a new ABI version of the engine, any
scripts written for applications that include the iter library
specification will need to be recompiled unless the new iterable function
is explicitly deleted from the application's function specification.
Version 1.2.3.0 (compiler 1.2.1.1, engine 1.2.2.0):
- Engine:
- Added script-callable functions for working with iterators: at and del_at.
- NOTE: Although this is not a new ABI version of the engine, any
scripts written for applications that include the iter library
specification will need to be recompiled unless these new functions are
explicitly deleted from the application's function specification.
- Added several API functions for using iterators in application functions:
AspIsIterable, AspAt, AspAtSame, AspInsertAt, and AspEraseAt.
- Added API function AspEraseLocal to support removal of local variables used
in application functions that use AspCall.
- Changed the return type of the API function AspStoreLocal from AspRunResult
to bool in order to simplify error checking in application code.
- Removed asserts from API functions in favour of using only appropriate
return values to indicate calling errors.
- Fixed a bug with range iterator comparisons. Previously, two iterators on
the same range positioned on the same value within the range would compare
not equal. This has been fixed.
- Fixed an omission in the conversion of the symbol type to a string.
- Standalone application:
- Fixed handling of memory allocation errors.
Version 1.2.2.1 (compiler 1.2.1.1, engine 1.2.1.0):
- Compiler:
- Renamed the -s option (silent) to -q (quiet) to be compatible with the aspg
command. Note that the -s option is still accepted.
- Application specification generator:
- Added support for application specification file names that don't adhere to
the naming rules for C variable names. Generated names based on the file
name replace invalid characters with an underscore. To include such files,
the name must be given as a string.
- Added command line options -c and -s to specify the names or directories of
output files.
- Added some reporting. It may be squelched via the -q command line option.
- General:
- Added options to report version (-v) and usage (-h) to commands where it
was missing, and made the style of the output common where it wasn't.
Version 1.2.2.0 (compiler 1.2.1.0, engine 1.2.1.0):
- Engine.
- Changed the default value of the script-callable int function's check
parameter to False, and changed the function's behaviour in this case to
return None for out-of-range floating-point values and malformed strings,
allowing scripts to test for invalid input.
- NOTE: The check parameter should now be considered obsolescent and may be
removed in a future version.
- Changed the behaviour of the script-callable float function to return None
for malformed string input instead of raising an error and ending the
script.
- Standalone application:
- Added handling of user interrupts so that final reports are still generated
when a user interrupts the run.
Version 1.2.1.0 (compiler 1.2.1.0, engine 1.2.0.2):
- Compiler:
- Added support for binary integer constants (e.g., 0xb10101).
- Added support for using underscores (_) as separators within numeric
constants, as in Python (e.g., 0b1001_0101).
- Application specification generator:
- Permitted the use of a + prefix on numeric constants.
Version 1.2.0.3 (compiler 1.2.0.2, engine 1.2.0.2):
- Fixed issues that caused compilation to fail with Windows Visual Studio.
Version 1.2.0.2 (compiler 1.2.0.1, engine 1.2.0.2):
- Cleaned up the code according to static analysis results. No changes to
functionality were made.
Version 1.2.0.1 (compiler 1.2.0.0, engine 1.2.0.1):
Engine:
- Fixed a bug in the script-callable exit function that was converting a
floating-point argument value to integer, and then using the converted
integer value for computing the run result. This unintended behaviour was
also causing undefined behaviour when the floating-point value was outside
the range of an integer. Floating-point values are now treated like all
other non-integer values, as originally intended.
Version 1.2.0.0 (compiler 1.2.0.0, engine 1.2.0.0):
- Compiler and engine:
- Added a new object order operator, <=>.
- Added the ORDER instruction to support the object order operator.
- Added a new flavour of the POP instruction that accepts a number of entries
to pop. This is used when emitting code for a return statement within
multiple nested for loops instead of emitting multiple single POP
instructions.
- Added support for the "from module import *" form of import statement.
- Made modules iterable.
- Added new versions of the LD, LDA, MEM, and MEMA instructions that obtain
the symbol from the stack instead of an immediate operand.
Engine:
- Added iterator support for list insertions:
- The key of a key/value pair can be an iterator into the target list.
- The target of a value insertion can be a list iterator.
Version 1.1.4.3 (compiler 1.1.0.1, engine 1.1.4.3):
- Engine:
- Fixed an undefined behaviour issue caused when a script supplies an out of
range integer value to the script-callable exit function.
Version 1.1.4.2 (compiler 1.1.0.1, engine 1.1.4.2):
- Fixed a couple of issues discovered during fuzz testing.
Version 1.1.4.1 (compiler 1.1.0.1, engine 1.1.4.1):
- Engine:
- Fixed a data memory area leak that occurs when inserting into a list using
the index/value pair syntax.
Version 1.1.4.0 (compiler 1.1.0.1, engine 1.1.4.0):
- Engine:
- Corrected the program counter reported when a script ends in error.
Previously, the next instruction was always reported, regardless of whether
an error occurred. Now, if an error is encountered, the address of the
offending instruction is reported by AspProgramCounter instead of the next
instruction. This results in more accurately identifying the location of
the matching statement within the source file.
- Application specification generator:
- Added the del statement for removing previous definitions.
Version 1.1.3.0 (compiler 1.1.0.1, engine 1.1.3.0):
- Engine:
- Added several API functions to support the ability for application
functions to call other functions defined within the running script.
- Build:
- Merged the ENABLE_ENGINE_DEBUG and ENABLE_ASPS_DEBUG options into a single
ENABLE_DEBUG option since the previous two depended on each other anyway.
- Standalone application:
- Improved CPU utilization by ceasing to execute script instructions while
the script is sleeping.
Version 1.1.2.1 (compiler 1.1.0.1, engine 1.1.2.0):
- Compiler:
- Fixed a code generation issue with return statements enclosed inside for
loops.
Version 1.1.2.0 (compiler 1.1.0.0, engine 1.1.2.0):
- Special thanks to Oleh Hordiichuk for suggesting this change.
- Engine:
- Added a code paging feature to allow script executable code that is larger
than the engine's code area to be paged in from secondary storage as
needed. Use the new API functions AspSetCodePaging and AspPageCode to make
use of this new feature.
Version 1.1.1.1 (compiler 1.1.0.0, engine 1.1.1.0):
- Unit tests:
- Updated the unit test driver for testing the red-black tree implementation.
This code is normally not compiled (as it does not contribute to the
installed components), but if enabled in recent versions, it was failing to
compile because of the changes to the AspCount function signature
introduced in version 1.1.0.0.
- Build:
- Separated component versions out of the CMakeLists.txt files into separate
text files where they can be maintained independently from the build specs.
Version 1.1.1.0 (compiler 1.1.0.0, engine 1.1.1.0):
- Engine:
- Separated the script math function definitions into their own library for
the benefit of applications that don't need them, and therefore don't need
their dependencies (i.e., various C math routines).
- Build:
- Added a CPack-based packaging script for building several source and
binary packages, including an installer for Windows systems.
Version 1.1.0.0 (compiler 1.1.0.0, engine 1.1.0.0):
- Compiler:
- Added string literal folding for explicit concatenation (+ operator) and
juxtaposition.
- Improved error reporting.
- Engine:
- Changed the default value of the range start component (i.e., the value
assumed when a range's start value is left unspecified, e.g., ..5).
Previously it was always zero. Now, it is -1 if the step is negative, and
zero otherwise.
- Added allowing of Boolean values as range components, converting them to
integers in the usual way.
- Added missing range operations, all of which can be computed
mathematically:
- Length, i.e., the number of elements in a range.
- Element indexing.
- Membership test.
- Slicing, which produces a new range object.
- Added handling of unbounded ranges/slices.
- Added reversed iterators.
- Made the following API function changes:
- AspRangeValues: Added an extra parameter to indicate whether the range is
bounded.
- AspCount: Changed to return AspRunResult since it can now fail in certain
situations (e.g., unbounded ranges).
- AspNewIterator: Added an extra parameter to indicate the type of iterator
to create, normal (i.e., forward) or reversed.
- New functions:
- AspIsIterator, AspIsFunction, AspIsModule.
- AspRangeElement: Return the integer value at the specified index.
- AspTraceFile (only available in debug builds): Redirect trace output to
the specified file handle.
- Made the following changes to script-callable functions:
- iter: Now accepts an iterator for the argument and creates a copy of it
(unlike Python, which returns a reference to the same object). The
iterator's current position is retained in the copy.
- tuple and list: These functions no longer accept None as an argument,
making them more like their Python counterparts.
- New functions:
- range_values: Return a 3-tuple of the components of a range.
- reversed: Return a reversed iterator for a given collection or range.
Passing an existing iterator makes a copy and reverses its direction.
- Standalone application:
- Added extra options in debug builds for redirecting trace and dump outputs.
Version 1.0.0.3 (compiler 1.0.0.2, engine 1.0.0.0):
- Build:
- Added the VERSION property to several of the targets to support
installation of multiple versions of the tools on a given host. The
versions of all installed libraries and executables are now aligned.
Version 1.0.0.2 (compiler 1.0.0.2, engine 1.0.0.0):
- Compiler:
- Reverted lexical analysis treatment of negative integers due to problems
scanning, for example, binary subtraction expressions with no intervening
spaces. Decimal number tokens are now always positive and a preceding unary
minus sign invokes constant expression folding, as it was prior to compiler
version 0.7.2.0 (Asp version 0.7.4.0). New logic has been added to allow
expression of the constant integer value -2147483648 (INT32_MIN).
Version 1.0.0.1 (compiler 1.0.0.1, engine 1.0.0.0):
- Compiler:
- Changed the way the compiler searches for import modules. Previously, the
current working directory was searched by default. Now, the directory in
which the main module resides is searched instead. This includes when blank
entries are used in the ASP_INCLUDE environment variable.
- Fixed a minor bug in the compiler with command line file name suffix
checking.
Version 1.0.0.0 (compiler 1.0.0.0, engine 1.0.0.0):
- Compiler:
- Changed the order of searching for the application specification file to
prioritize an app.spec file in the same directory as the source file over
the one specified by the ASP_SPEC_FILE environment variable.
- Fixed a bug that caused incorrect code to be generated for some tuple
expressions and some structured target expressions in for statements.
- Engine:
- Added new script-callable functions: module, exists, id, exit, and key.
- Added the ability for the "in" operator to check for the existence of a
symbol within a module or the local scope (represented by the Ellipsis).
- Fixed a bug with the "in" operator that caused it to return False when
presented invalid typed operands instead of generating an error.
- Added the __main__ variable for use in checking if the current module is
the main module.
- Added a distinct error code to indicate invalid application function
behaviour (instead of using the same error code that indicates a malformed
function call).
- Corrected the error code returned by the math routines when an out of data
memory condition is detected.
Version 0.8.0.0 (compiler 0.8.0.0, engine 0.8.0.0) - not released:
- Compiler:
- Added variable symbol syntax: `var_name.
- Added symbol names to the source info file.
- Added **kwargs support to function calls and definitions.
- Removed output files on detection of error(s).
- Engine:
- Added ability to pass ranges, strings, lists, sets, and dictionaries as
iterable group arguments (*args). Previously, only tuples were accepted.
- Added support for functions accepting variable-length keyword arguments
(**kwargs), using variable symbols as keys instead of strings.
- Application specification generator:
- Added the ability to define extra symbols for use in the application
without assigning a value.
- Added symbol macro definitions to the generated header.
- Information utility:
- Added symbol to name translation.
Version 0.7.4.0 (compiler 0.7.2.0, engine 0.7.6.0):
- Compiler:
- Modified lexical analysis to treat negative integers as single tokens
(instead of a unary negation token followed by a positive integer) in order
to accept the most negative value (i.e., INT32_MIN) as a constant.
- Replaced local implementation of integer arithmetic used in constant
folding with calls to the same routines that the engine uses for these
operations, thus making constant folding behave similar to Python rather
than C.
- Engine:
- Fixed several issues related to integer arithmetic, including undefined
behaviour and overflow.
- Corrected the behaviour of integer division and modulo operations to be
similar to Python instead of C.
- Fixed overflow conditions happening during range iteration.
- Added checks to the script-callable int function for floating-point
infinities and NaNs, and added an option to indicate how to handle them.
- Fixed a bug in the script-callable tuple and list conversion functions that
would occur when converting ranges with negative step.
Version 0.7.3.2 (compiler 0.7.1.5, engine 0.7.5.1):
- Engine:
- Added cycle detection logic where applicable to end script execution when
encountering self-referencial data structures.
- Fixed some issues that would only arise from incorrect code (found during
fuzz testing).
- Standalone application:
- Fixed an issue in the print function to do with output of strings
containing null bytes.
- Information utility:
- Added hexadecimal display of error codes alongside the decimal values.
Version 0.7.3.1 (compiler 0.7.1.5, engine 0.7.5.0):
- Build:
- Added INSTALL_DEV build option to configure installation of development
files (e.g., headers).
- Added support for CMake's install COMPONENT feature.
- Fixed custom build commands to use the DESTDIR environment variable as
appropriate.
Version 0.7.3.0 (compiler 0.7.1.5, engine 0.7.5.0):
- Compiler:
- Fixed an issue with misindented comments. Comments should be allowed
anywhere, regardless of indent level, but they were being flagged as
syntax errors.
- Engine:
- Added support for application object types.
- Fixed a number of issues discovered during fuzz testing.
- Fixed bugs in some AspIs* functions.
- Standalone application:
- Replaced use of malloc/free with new/delete.
- Build:
- Relaxed the version of CMake required to 3.5 in order to support older
systems.
Version 0.7.2.2 (compiler 0.7.1.4, engine 0.7.4.2):
- Special thanks to Lassi Hamalainen for suggesting all of these changes.
- Compiler:
- Added the -o option to specify the names of the output files.
- Engine:
- Fixed a bug in AspNewBoolean which would crash if the singleton allocation
failed.
- Added AspSealCode to allow use of script executable code residing outside
the engine's normal code area.
- Standalone application:
- Updated to use new AspSealCode except when the code size is specified via
the appropriate command line option.
- General:
- Added support for file name arguments that start with an option prefix.
This affects aspc, aspinfo, and asps.
- Clarified licensing.
- Build:
- Standardized path name separator, file name separators, and command line
option prefixes for each supported platform. These are no longer build
options.
- Decoupled debug output generation from the Debug build configuration.
Version 0.7.2.1 (compiler 0.7.1.3, engine 0.7.4.1):
- Engine:
- Added AspInitializeEx which accepts a routine for converting from IEEE 754
binary64 format to the native floating-point format for platforms that
implement custom floating-point formats.
Version 0.7.2.0 (compiler 0.7.1.3, engine 0.7.4.0):
- Initial public release.
- Engine:
- Refined support for shared libraries, especially under Windows.
Version 0.7.1.8 (compiler 0.7.1.3, engine 0.7.3.7):
- Engine:
- Fixed slicing issues with slice components of mixed sign.
- Fixed a bug with assignment to list slices. Assignment to tuple slices was
unaffected.
- Fixed a bug with sequence assignment with a list as the target.
- Build:
- Fixed an issue with the version header file generation that caused
problems with parallel make.
Version 0.7.1.7 (compiler 0.7.1.3, engine 0.7.3.6):
- Engine:
- Added AspIsReady and AspIsRunnable functions to the programmer API.
- Fixed a bug with the AspStringElement programmer API function.
Version 0.7.1.6 (compiler 0.7.1.3, engine 0.7.3.5):
- Engine:
- Added conversion of objects to canonical string representation.
- Added the AspToRepr function to the programmer API.
- Added the repr script library function.
- Added support for 'r' and 'a' conversion types for the string formatting
operator (str % tuple).
Version 0.7.1.5 (compiler 0.7.1.3, engine 0.7.3.4):
- Compiler:
- Added an error for the wildcard form of the from...import statement.
- Engine:
- Changed the way null characters in strings are rendered in conversions
to string. Was '\x00', is now '\0'.
- Made MKR* instructions more memory efficient when explicit default values
are encountered.
- Implemented the string formatting operator (str % tuple).
- Made some library script functions more like Python:
- Added an optional base parameter to the int function. The default base
for string conversions is 10.
- Added an optional base parameter to the log function. The default base
is e, yielding the natural logarithm.
- Added tuple and list script functions. Note that conversion from
dictionaries is different than Python.
- Added API functions for creating ranges.
- Standalone application:
- Added optional sep and end parameters to the print function to make it
more like Python.
Version 0.7.1.4 (compiler 0.7.1.2, engine 0.7.3.3):
- Engine:
- Added codec script library routines for encoding/decoding numeric data
to/from binary representations for use in applications that require this
functionality. Note that these routines are not available in the standalone
application.
Version 0.7.1.3 (compiler 0.7.1.2, engine 0.7.3.2):
- Added ability to build under Windows.
- Reformatted help information displayed by the compiler, the standalone
application, and the info utility.
- Standalone application:
- Added sleep script function.
Version 0.7.1.2 (compiler 0.7.1.1, engine 0.7.3.1):
- Compiler:
- Added generation of the source info file (.aspd).
- Added the -v option to print version information and exit.
- Info library and utility (new):
- Added a library for translating error codes into text and translating
a script's program counter into source location to be used in error
reporting and tracing applications.
- Added a utility for performing the functions of the above library.
- Standalone application:
- Added error code and program counter translation via the new info library.
Version 0.7.1.1 (compiler 0.7.1.0, engine 0.7.3.1):
- Engine:
- Ensured that global overrides for variables that do not exist locally
do not leave a vestigial local variable when the global override is removed.
- Application specification generator:
- Fixed a bug that caused the generator to hang when a lone period was
encountered.
Version 0.7.1.0 (compiler 0.7.1.0, engine 0.7.3.0):
- Compiler:
- Fixed a bug that disallowed the comment character (#) inside strings.
- Added allowing of a comment following the line continuation character (\\).
- Enhanced the 'for' statement to allow tuple assignment of arbitrary depth,
like with assignments.
- Fixed a code generation bug with tuple constants whose first element is
a tuple constant (in parentheses).
- Engine:
- Finished comparison logic to include sequences.
- Tuples may now be used as keys (for sets and dictionaries).
- Implemented substring search for the 'in' operator with string operands.
- Added erase functions to programmer API.
- Added direct access to iterators for scripts and in programmer API.
- Finished implementation of AspToString API function.
- Made some minor changes to type conversions involving floating-point values.
- Obsoleted the AspTypeString function. Use AspToString instead.
Version 0.7.0.0 (compiler 0.7.0.0, engine 0.7.0.0):
- Initial release.