-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathReleaseNotes
249 lines (239 loc) · 11 KB
/
ReleaseNotes
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
1.6
- Implemented the safe navigation operator ("?.").
- Added support for user-defined getters and setters (letting you use
plain attribute access syntax like "y = a.x; a.x = 100")
- Added the "!is" operator ("is not")
- Made Box[T] part of crack.lang.
- Added crack.enc.json2, a more flexible JSON parser.
- Added unsafeCast to function types.
- Various bug fixes and enhancements.
1.5
- Added lambdas.
- Added SSL support to the comm2 communication library.
- Added a better, experimental command line proceessing library.
- Added automatic imports (you can now define all of your imports in a
file and they will be imported on demand)
- Various bug fixes and improvements.
1.4
- Added the RawPtr class.
- Implemented function elision.
- Fixed event handling in termui.
- Fixed memory management bug in EventManager.
- Minor enhancements to NML HTML generation.
- Fixed assertion failure when dereferencing forward declared classes.
1.3
- Fixes for problems discovered in the latest versions of Debian. (Most
notably, position independent binaries are now the default for AOT
compiles)
- Fixed SHA256 padding bug (note that this corrects hash values for a
lot of things)
- Added move() and readAll() convenience functions to crack.io.
- Fixed broken get() method in PollSet.
- Fixed bug in overrides in nested classes.
- Various comm2 improvements.
1.2
- Added @cvars annotation (like @struct, but just generates a
constructor based on a list of instance variable definitions).
- Added Functor.Wrap.
- Enhancements to crack.net.comm2
- Added AES-SIV cipher and CMAC
- Added support for relative imports
- protobuf enhancements
- text formatting
- treat empty different from undefined for string and bytes types
- Added "clone()" method
- Made stack trace functionality generally available.
- Allow annotations to obtain an array of local definitions.
- lots of bug fixes.
- add zero "content-length" header to redirects in httpsrv.
- Fixed "oper new" in extension generation.
- Memory management of rethrown exceptions.
- termui fixes, bold and underline, previous background leakage,
focus changes, attribute rendering
- Invoke poller callbacks with a null event before waiting
- vtable generation for appendages anchored on classes from foreign
modules.
- vtable generation for nested/derived classes.
- initialize compile time dependency modules when instantiating a
generic from the cache.
- use compile-time builder for initializing annotation modules.
- Fixed WaveDef framecount on read.
- multi-line doc comments in structs.
1.1
- Implemented Appendages.
- Implemented the @xtokens and @xmac annotations.
- Added the crack.net.comm module providing general client/server
communication functionality.
- Added crack.eventmgr which provides event scheduling in a poller.
- Various minor enhancements and fixes.
1.0
- Fixed potential use-after-free of arguments bound to volatile
variables.
- Many documentation corrections.
0.13.1
- Make crackdoc cache output files and show full source if requested.
- Fix issues with "seek()" on 32-bit platforms.
0.13
- Restructured and expanded HTTP server modules. Added various
utilities including authentication.
- Made buffer ownership in WaveBuffer optional.
- Fixed ManagedBuffer orphaning behavior, extension generator, ref
counting bug in cast(), duplicate class forward declarations, implicit
dependencies on crack.lang.
0.12
- Added full support for special documentation comments, created the
model builder which knows how to extract them and created the
"crackdoc" documentation tool.
- Greatly improved http server support, moved it to crack.http
- NML extensibility enhancements.
- Convert buffer size from uint to uintz
- Change alias serialization to deal with ordering issues in nested
aliases.
- SHA256 hashing
- Added POSIX signal handling, display stack traces for fatal signals.
- Many small enhancements and bug fixes.
0.11
- Allow importing crack.compiler outside of an annotation.
- Fixed casting so we can now correctly cast from secondary bases and
even cast across bases.
- Added crack.protobuf.ann, which provides an annotation to allow you to
expand inline protobuf messages into generated code.
- Streamline generic serialization (only serialize file name and line
number when they change).
_ Enhancements to jack and alsa modules, made alsa extension more OO.
- Added a protobuf annotation module (crack.protobuf.ann) to allow
generating protobuf code.
- Lots of smaller fixes and enhancements.
0.10
- Fixed all known caching bugs and made caching the default. (Completed
redid cyclic dependencies)
- Fixed inconsistencies in name access.
- Enhancements to SDL modules (notably audio) and alsa midi.
- Made JIT defer jitting of functions until they are needed.
- Added the scoping operator ('::') and fixed the way the period
operator does dereferencing and scoping.
- Added "field sets" (allows you to attach arbitrary typed data to an
object)
- Replaced the "_iface_" functions hack used to implement interfaces
with an "oper from" method.
- Lots of smaller fixes and enhancements.
0.9
- Added support for threading.
- Added the #crack.net.irc# module.
- Added the #crackc.protobuf# module.
- Many changes to caching.
0.8
- Lots of bug fixes and small features.
- Lots of refactors and code cleanups.
- Implemented most of the code for caching (which is still way too buggy
for anything other than experimentation).
- Added flag driven tracing facility.
- Lots of new modules and extension modules:
- OpenSSL
- libpng
- alsa, midi, jack, and fluidsynth
- curl
- SHA1 digests
- base64 encoding
- Mongo DB and LMDB
- netCDF
- Mersenne Twister PRNG.
- enhanced the test framework to support composite tests.
- added the Wurld OpenGL example program.
- Ported to LLVM 3.3
- Changed annotation-in-generic semantics.
0.7.1
- Fixed crack.process, respect the flags that are passed in defining
pipe configuration.
- Updated the manual for 0.7.
- Added closedir() on destruction of a directory iterator (we were
leaking handles).
- Fixes for naming and module association for forward classes and
extension types.
0.7
- Switched licensing from LGPLv3 to MPL 2.0.
- Upgraded to LLVM 3.1
- 16-bit integer types.
- The "alias" statement.
- Implemented a version of cast that returns a default instead of
throwing an exception when the cast fails.
- Indented string constants.
- Virtual methods in extension classes.
- An "assert" annotation.
- Extensions for midi, alsa, SDL drawing, fluidsynth and Crossroads IO.
- XML parsing.
- OrderedHashmap
- Process multiplexing
- Lots of bug-fixes and small enhancements.
- Various changes to support caching (which still doesn't work).
0.6
- Implemented const folding for integer and float operations.
- Added supporlib/crack/exp/termui.crklib/crack/exp/termui.crkt for injecting crack function body code from an extension.
- Added the foundations of support for module caching.
- Added functors.
- Added an 'ascii' module supporting functionality specific to ASCII
data.
- Added a module for dealing with numeric arrays.
- Migrated modules out of crack.exp, removed obsolete modules.
- Implemented "const" variables.
- Implemented access protection.
- Implemented abstract methods.
- Converted all unit tests to "screen"
- Lots of bug fixes and small enhancements.
0.5
- Added support for generics. Created true generic containers.
- Made functions "first class" objects, implemented support for storing
functions in variables and "oper call", permitting the creation of
functors.
- Implemented the Platform Dependent Numeric Types and made them work
according to spec in all contexts.
- Added a command-line parsing module.
- Added a HashMap generic.
- Added some date manipulation code.
- Refactored cmake files.
- Added the "typeof()" operator.
- Added full support for "oper to" implicit conversions.
- Enhancements to extension generation for class methods, constructors,
C function name specification
- Various small bug fixes and enhancements.
0.4
- Added support for exception handling, converted the library to use
exceptions instead of the crack.exp.error module.
- Added support for compiling scripts to native binaries.
- Added syntax to allow initialization of sequence types, e.g.
array[int] a = [1, 2, 3];
- Improved string interpolation, added calls to enter() and leave() and
made it a true expression returning the return value of leave() or the
target object if leave() is undefined. Implemented a StringFormatter
variation that can be used in an expression context.
- Added the "encoding" annotation, allowing users to declare a script's
encoding.
0.3
- Aggregate type variables now default to null if no initializer is
given.
- Implemented the "for" statement.
- Added support for extensions.
- Added a module to generate bindings for many C APIs.
- Converted the runtime, GTK and PCRE modules to use the extension
API.
- Added undocumented support for SDL, OpenGL
- Added the math module.
- Added the annotations subsystem.
- Used annotations to implement macros
- Added the @static, @final, @FILE and @LINE builtin annotations.
- Added macro-based generic containers
0.2
- Major code cleanups.
- Added RBTree maps.
- Numerous bug fixes and enhanced error checking.
- Implemented the remaining C operators (pre/post increment/decrement,
bitwise operators, augmented assignment, ternary operator).
- Improved IR readability.
- Added debug information (not currently usable for lack of a debugger)
- Removed external dependency on spug++.
- Implemented forward declarations of functions and classes.
- Added the LineReader class
- Added support for a socket API.
- Added support for hex and octal integer constants (and fixed integer
constants in general)
- Added a File/Stream interface.