root/trunk/doc/changelog.txt

Revision 470, 20.0 kB (checked in by sean, 6 years ago)

Ares .121 commit.

Line 
1 5/2/2006 - 0.21:
2
3 * Merged in DMD 160 changes.
4 * Added std.c.posix.ucontext.
5 * Finished std.c.posix.signal.
6 * Fixed a corner case in the Posix suspendHandler.  Additional work is likely required to allow interrupted calls to restart after suspend completes.
7
8 4/18/2006 - 0.20:
9
10 * Merged in Mango changes.
11 * Merged in DMD 156 changes.
12 * Renamed onAssert to onAssertError.
13 * Renamed onOutOfMemory to onOutOfMemoryError.
14 * Added a new callback, onFinalizeError, to be called when an exception is thrown during finalization.
15 * Added a new callback, onCollectResource, to be called when collecting an object with a dtor.  This callback may be hooked by the user via setCollectHandler.
16 * Removed -I option from Linux makefiles, as it's presence is misleading.  Since -I paths are appended to the existing include path, the current code is only checked if no previous matches are found.  It would be easier to simply modify dmd.conf for the duration of the build or copy the source files into the proper include location.  Hopefully, a future release of DMD will check additional locations other than /etc for dmd.conf so this isn't necessary.
17 * Added sys.windows.winmain.d and sys.windows.winmain.def.  These have been packaged with Ares for a while and were left out of version control.
18 * Added doc/library_interaction.txt.
19
20 4/12/2006 - 0.19:
21
22 * Merged in DMD 154 changes.
23 * Added std.c.posix.dirent.
24 * Removed gc_setFinalizer.
25 * Removed 'nz' param from gc_calloc, as an object count doesn't make much sense within the context of a language where objects are not value types.  Now, gc_calloc is functionally identical to malloc except the memory is zero-initialized before it is returned.
26 * Added a new parameter, df (do finalize), to gc_malloc, gc_calloc, and gc_realloc.  This parameter defaults to false and is intended to replace gc_setFinalizer for indicating that a memory block should be finalized.  While this limits flexibility by binding finalization indication to allocation, it reduces the chance for user error and also makes for more efficient code as both allocation and setting the doFinalize flag can be accomplished with a single mutex lock.
27 * Added a new extern (C) function requirement: cr_finalize(void* p,bool det=true).  This function must be implemented by the compiler runtime (thus the 'cr_' prefix) and should perform any finalization required for the object referenced by 'p'.  Typically, this involves calling any associated dtors, cleaning up object monitors, etc.  If 'det' is true then the function is being called deterministically, false if otherwise.  Thus, 'det' would be false when cr_finalize is called on an orphaned object during a garbage collection run unless the garbage collector performing a final cleanup during termination.  Currently, the runtime is not required to do anything with respect to the value of 'det', but in the future it may be required to call an error routine similar to those already exposed by std.exception if the object being finalized has a dtor.  This error routine would likely be overridable by the user and would default to doing nothing.  The purpose of such a routine would be to allow the user to halt execution or report an error indicating object type, as non-deterministic finalization of an object with a dtor may be considered a resource leak and thus a programming error.
28 * Fixed a nasty bug that was corrupting the global thread list.
29 * Altered thread finalization code to occur on thread termination instead of on object disposal.
30
31 4/3/2006 - 0.18:
32
33 * Merged in DMD 151 changes.
34 * Added std.c.posix.fcntl.
35 * Added std.c.posix.sys.stat.
36 * std.c.posix.pthread - Updated some disabled code to be closer to usable.
37 * Removed Thread.suspend, Thread.suspendAll, Thread.remove, and Thread.removeAll.
38 * Rewrote thread_suspendAll, thread_removeAll, and thread_markAll.  Only the Windows code has been tested, but is both simpler and more efficient than the old code.
39 * Fixed Posix implementation of Thread.sleep.
40 * Added 'preserve' option to ThreadGroup.joinAll (default is true).
41 * Added missing return statement in ThreadGroup.create.
42 * Added missing import statement in std.array.
43 * Added support function to std.math.ieee for unit testing.
44 * Fixed documentation in std.memory to be more accurate.
45 * Added lowercase 'cin', 'cout', and 'cerr' aliases to std.io.Console.
46
47 3/21/2006 - 0.17:
48
49 * Merged in DMD 150 changes.
50 * Added first cut of std.traits.
51 * Renamed std.string to std.array.
52 * Switched to Knuth find ops in std.array -- the old code still exists in version(none) blocks.
53 * Made speculative fix for suspend op in std.thread.
54 * Changed documentation in std.memory to more accurately reflect intended behavior.
55 * Added support for sys/epoll to sys.linux.
56
57 3/7/2006 - 0.16:
58
59 * Merged in DMD 149 changes.
60 * Merged in Mango changes.
61 * Renamed std.stdarg to std.vararg.
62 * Added std.regexp from Phobos.
63 * Added std.bitarray from Phobos.
64 * Added std.unicode, which includes functionality from std.io.convert.Unicode (ie. from Mango).
65 * Added std.string.  This module may contain some functionality from Phobos, but only when there is an overlap in desired functionality.  Most or all functions here will be template functions and will require implicit template instantiation to operate correctly.  At the moment, some functions are commented out because template overloading is not yet implemented.
66 * Changed inline asm in a math function to refer to the parameter by name rather than stack offset.  This will be marginally less efficient, but should be more maintainable and hopefully will allow the code to be inlined at some point.
67 * Rearranged code in std.atomic to use 'static if' to avoid the need for concept parameters.
68 * Renamed onInvalidUtfError to onUnicodeError.
69 * Reversed template parameters in std.atomic in anticipation of implicit template instantiation.
70 * Refactored ares.object and dmdrt.object to more closely match Phobos.  The presence of TypeInfo objects is necessary, and the rest should ease merging a bit.
71 * Rebuilt dmdrt.typeinfo to match phobos.std.typeinfo.  It seems DMD references TypeInfo modules by some form of the decorated name, and storing them in differently named files was not working.
72 * Refactored std.thread C interface and fixed a few GC-related bugs.
73 * Fixed array append bug.
74
75 2/26/2006 - 0.15:
76
77 * Merged in DMD 148 changes.
78 * Renamed some TypeInfo files and split a few into per-class modules.
79 * Removed util.regexp and util.outbuffer from the build, as they are no longer needed.  std.regexp will reappear in the next release.
80
81 2/25/2006 - 0.14:
82
83 * Made substantial changes to std.c.posix modules for Linux and Darwin compatibility.
84 * Changed Linux makefiles to match Win32 makefiles.
85 * Added std.c.posix.sys.mman.
86 * Trimmed out some now redundant declarations from sys.linux.c.linux.
87 * Added atomicIncrement and atomicDecrement for use with value and pointer types.
88 * Made miscellanious improvements in std.thread to support Posix threads.
89 * Added Windows and Linux constants to std.c.errno for error reporting.
90
91 2/16/2006 - 0.13:
92
93 * Removed std.regexp as it is somewhat redundant with DMD 147 regexp support.
94 * Added regexp support code as required by DMD 147.
95 * Moved all Phobos std modules needed by DMD runtime code into new package dmdrt.util.
96 * Modified dmdrt and dmdrt.typeinfo modules to use util functions where appropriate (some modules previously contained inline code as a hack).
97 * Refactored code in std.thread to eliminate code duplication.
98 * Fixed inline asm in std.math.core as per an update in DMD 146.
99 * Added std.math.ieee.fcis function.  Please note that there may be offset issues on non-Windows platforms.
100 * Fixed Ares makefile macro errors and cleaned up file format a bit more.
101 * Altered dmdgc and dmdrt makefiles to match Ares "standard" makefile format.
102 * Added trace.obj to dmdrt build.  Note that this object is not necessary for a successful DMD runtime.
103 * Added std.c.config for internal data size configuration.  Note that this file is for internal use and should never be imported publicly.
104 * Changed std.c files to use aliases defined in std.c.config where appropriate.
105 * Beautified std.c declarations format for readability and fixed a few declaration errors.
106
107 2/1/2006 - 0.12:
108
109 * Merged in DMD .145 changes.
110 * Fixed DMD runtime to use new GC functionality where appropriate.
111 * Within GC implementation, renamed capacityOf to sizeOf to match function name to actual behavior.
112 * std.memory - Fixed documentation to include throw specs.
113 * Fixed compiler flags for std.stard and std.c.stdarg.
114 * Added module-level documentation for std.intrinsic and std.stdarg.
115 * Added the ThreadGroup class to std.thread.
116 * Changed the Ares makefile to be a bit more generic.  Now, the only explicitly handled files are those that need explicit handling.
117 * Added comments to all files that have been modified from their original form as shipped with DMD.  While adding these comments to the TypeInfo modules, the standard Digital Mars copyright header was added if missing as well.  This was done for consistency, as some TypeInfo modules contained this header while others did not (so I assumed its presence was intended in all such modules).
118 * Ares now has IO functionality!  With Kris' permission, a minimal working subset of Mango has beed added to Ares in the new std.io package area.  The primary goal for this release was to get the basics in and working, so expect more integration work or more features to be added in a future release.
119 * Ares now does math!  The first of a collection of mathematics modules have been added to the new std.math package area, following a model suggested by Don Clugston.  Please note that the mathematic functions mentioned in the documentation for std.intrinsic in Phobos currently do not work as a result of compiler and library issues in DMD.  This will be addressed in the next Ares release.
120
121 1/25/2006 - 0.11:
122
123 * std.atomic - Uncommented all unit tests and removed bug workaround code, as the problems have been addressed.  Also added module comments.
124 * Added std.memory and std.stdarg to documentation.
125 * Added TypeInfo declarations to object.d, as they are now required by DMD.
126 * Added documentation for std.memory.
127 * std.memory - Added the sizeOf function.
128 * Added the object file for std.memory to the build (it was accidentally omitted).
129
130 1/23/2006 - 0.10:
131
132 * Merged in DMD .144 changes.
133 * Renamed std.gc to std.memory.
134 * Redefined GC library interaction.  Some code that was in dmdgc now lives in dmdrt within the new file, memory.d.
135 * Defined new standard interface to the GC, in std.memory.  All calls now go through an instance of the GC struct: gc.  This dummy class is present to allow for future interface changes that may allow dynamic swapping of GCs.
136 * Removed an unnecessary 'static' from std.exception.
137
138 12/30/2005 - 0.9:
139
140 * Merged in DMD .142 changes.
141 * Added std.stdarg.
142 * Now printing error messages to stderr.
143 * Replaced std.thread.threadCount with std.thread.multiThreaded.
144
145 12/05/2005 - 0.8:
146
147 * Merged in DMD .141 changes.
148 * Made temporary change in std.atomic to workaround compiler bug ("volatile" modifier to "asm" statement commented out).
149 * Added separate variable to track Thread.count.  This was done to eliminate a race condition with the GC that may have resulted in corrupted GC data.  This should also make memory allocation run faster for single-threaded programs.  I'm not entirely happy with the way the GC integrates with the global thread list, and this is liable to change at some point.
150
151 11/25/2005 - 0.7:
152
153 * Added code support for synchronized load ops on x86, even though that option is not currently available given the msync options available for atomicLoad.
154 * Merged in DMD .140 changes.
155 * Added thread local storage.
156 * Moved std.regexp from sub area.  Be aware that this module is under evaluation and the interface may change.
157
158 11/08/2005 - 0.6:
159
160 * Merged in DMD .139 changes.
161 * Changed Win32 Thread.yield() from Sleep(0) to Sleep(1).  See comments in code regarding why.
162 * Added 'extern' qualifiers where appropriate in std.c headers.
163 * Modified size_t to use typeof for size determination.
164 * Added documentation for std modules.
165 * Renamed std.error to std.exception (the module name was incorrect).
166 * Fixed documentation generation code.
167 * Changed extern callback reference from _d_outOfMemory to onOutOfMemory.
168 * Added 'make doc' line to build script.
169
170 10/18/2005 - 0.5:
171
172 * Merged in DMD .136 changes.
173 * Finished std.c.inttypes (constants added in a VerboseC version block).
174
175 10/14/2005 - 0.4:
176
177 * Merged in DMD .135 changes.
178 * Added documentation for std.thread.
179 * Added some documentation for std.atomic.
180 * Cleaned up version blocks in std.c and made all inline functions extern (D).
181 * Renamed std.error to std.exception.
182 * Renamed exception classes from *Error to *Exception.
183 * Removed RuntineError and LogicError classes.
184 * All system exception classes now derive from Exception.
185
186 09/27/2005 - 0.3:
187
188 * Merged in DMD .133 changes.
189
190 09/21/2005 - 0.2:
191
192 * Moved sys.c.windows to sys.windows.c.
193 * Moved sys.c.linux to sys.linux.c.
194 * Changed C compiler alias to refer to DMC instead of SC.
195 * Added doc generation for modules in std.
196 * Added stub comments for document generator.
197 * Created two new exception classes, LogicError and RuntimeError, which derive from Exception.
198 * Changed all system error classes to derive from the two new children of Exception.
199 * Fixed error reporting for system errors so file name and line number are displayed.
200
201 09/15/2005 - 0.1:
202
203 * Renamed Thread.stackHead to Thread.stackTop.  Thread.stackTop returns a pointer to the logical top of the execution stack, and on some systems its address may evaluate to less than the stack bottom (x86, for example).
204 * Renamed Thread.stackTail to Thread.stackBottom.  Thread.stackBottom returns a pointer to the logical bottom of the execution stack, and on some systems its address may evaluate to greater than the stack top (x86, for example).
205 * Renamed Thread.regHead to Thread.regFirst.  Thread.regFirst returns a pointer to the beginning of a list of register entries.  Entry order (and population) will be such that a PUSHA plus a memcpy can populate the list directly on x86 systems.
206 * Renamed Thread.regTail to Thread.regLast.  Thread.regLast returns a pointer to the last valid element of a list of register entries in the order specified above.
207 * Added some Posix code in the Thread module to support the aforementioned changes.  As with all non-Windows code, these changes are untested.
208 * Altered the GC support code in the Thread module to use the new conventions.  This should also eliminate a bug where pointers to defunct stack data were being used in some cases.  Upon review of the GC code, it appears that mark is inteded to operate on the range [pbot..ptop).  This is consistent with standard coding practice, but it also implies that the address referenced by ptop will never be used by the GC.  In any case, the Thread code has been written such that the entire stack and set of registers will be scanned even though the Thread functions expose an inclusive range.
209 * Moved reference to onOutOfMemory from dmdrt to dmdgc (where it belongs).
210
211 09/10/2005:
212
213 * Merged in DMD .131 changes (nothing but a rebuild)
214 * Added a Posix version of Thread.sleep (untested)
215 * Fleshed out Posix headers
216
217 08/18/2005:
218
219 * Merged in DMD .129 changes
220 * Fixed names for moved windows/linux modules (from std to sys prefix)
221
222 08/02/2005:
223
224 * std.atomic - Finalized design and added to the build
225 * std.atomic - Fixed a bug where code setting the membar template parameter was backwards
226 * std.atomic - Added temporary code to support atomic pointer types (32-bit only--this is temporary after all)
227 * std.atomic - Added public atomicLoad, atomicStore, and atomicStoreIf functions.  These are inteded to provide some means to perform atomic operations on values outsie the Atomic struct.  if template function overloading ends up being supported, these may be replaced with statics within Atomic
228
229 07/17/2005:
230
231 * Merged in DMD .128 changes
232
233 06/17/2005:
234
235 * Merged in DMD .127 changes (there actually weren't any this time)
236 * Made some minor bugfixes to std.thread
237 * Re-implemented the first set of changes to the Posix thread class
238
239 06/09/2005:
240
241 * Merged in DMD .126 changes
242 * NOTE: the new Posix code in std.thread (from 05/18) was lost a few updates ago.  I'm re-implementing it, but the changes will take a few days.
243
244 05/27/2005:
245
246 * Moved intrinsic from dmdgc to ares.std
247
248 05/27/2005:
249
250 * std.thread - Removed debug reference to std.c.stdio
251 * object - imported std.c.stdbool (for bool alias)
252 * object - added file, line, and next properties to Exception
253 * std.c.windows.winsock - fixed reference to std.c.stdint
254 * dmdgc.gcx - changed pauseAllThreads to suspendAllThreads (this was done before but the change was lost)
255 * dmdgc.gcbits - reverted to old (bad) usage of intrinsic.  this version compiles and works okay, but intrinsic still has to be moved.  initial attempts were unsuccessful, and I wanted a working version of Ares available until this can be looked into more closely
256
257 05/26/2005:
258
259 * Merged in DMD .125 changes
260
261 05/19/2005:
262
263 * Merged in DMD .124 changes
264
265 05/18/2005:
266
267 * Merged in DMD .123 changes
268
269 05/18/2005:
270
271 * Changed std.c.unix to std.c.posix
272 * Created new headers for std.c.posix--most are currently incomplete
273 * Changed std.thread to refer to std.c.posix.pthread for non-Win32 builds
274
275 05/10/2005:
276
277 * Merged in DMD .122 changes
278
279 05/03/2005:
280
281 * Changed Thread.pause to Thread.suspend, also changed pauseAll and pauseAllThreads
282 * Nearly finished the Linux threading code
283
284 04/19/2005:
285
286 * Merged in DMD .121 changes
287
288 04/13/2005:
289
290 * Removed Object.print
291 * Partial implementation of POSIX Thread class
292
293 04/06/2005:
294
295 * Merged in DMD .120 changes
296
297 03/30/2005:
298
299 * Removed Thread.thread_init().  GC support functions must now be functional before
300   any explicit module initialization is performed.
301 * Added extern threadCount(), pauseAllThreads(), resumeAllThreads(), and
302   scanAllThreads() to decouple std.Thread from the garbage collector.
303 * Removed temp code meant to solve a problem with foreach during a gc run.  It seems
304   to work okay using the new extern functions.
305
306 03/23/2005:
307
308 * Merged in DMD .119 changes
309 * Cleaned up the dmdrt makefile a bit
310 * Added dmdrt/trace.d but it isn't being compiled at the moment as it relies on some
311   stuff from Phobos.std.
312
313 03/15/2005:
314
315 * Merged in DMD .118 changes
316
317 02/16/2005:
318
319 * Merged in DMD .113 changes
320
321 01/13/2005:
322
323 * Merged in DMD .110 changes
324
325 12/08/2004:
326
327 * added temporary code to [std.thread] to support current gc requirements -- something
328   that doesn't use foreach or DMA that the gc can use to iterate across active threads
329 * cleaned out Linux thread code until the Windows code can be finished, the two were
330   out of synch
331
332 12/02/2004:
333
334 * Changed associative array behavior to make allocations more atomic
335
336 12/01/2004:
337
338 * Temporary fixes in [std.thread] and the garbage collector for a few crashing errors.
339
340 11/30/2004:
341
342 * Merged in DMD .108 changes
343 * Added static count() property to Thread
344 * Added name() property to Thread
345 * Eliminated [std.hook] and moved the remaining bits into [std.error]
346 * Added setAssertHandler()
347
348 11/23/2004:
349
350 * Removed onModuleCtorError hook, since it seems largely useless.  This error now throws
351   an Exception.
352
353 * Began work on POSIX Thread class.
354
355 11/22/2004:
356
357 * Redesigned Thread class and reworked the garbage collection code involding this class.
358   Linux version of this code is still under development.
359
360 11/16/2004:
361
362 * Moved TypeInfo_Class and TypeInfo_Typedef from object.d to their own files in
363   the typeinfo directory.
364
365 11/15/2004:
366
367 * Removed ArrayCastError and ArrayCopyError hooks as there doesn't seem to be any
368   reason to override them.  Both now throw standard Exceptions.
369
370 11/12/2004:
371
372 * Added ArrayCastError, ArrayCopyError, ModuleCtorError, and InvalidUtfError hooks
373 * Removed Error class and switched all children to derive from Exception instead
374 * NOTE: Exception is expected by the compiler to exist and to be in object.d.  If
375         it is to be changed or removed, changes to the runtime code (deh.c, mars.h)
376         will be necessary.
Note: See TracBrowser for help on using the browser.