root/branches/v2.1/readme.txt

Revision 713, 21.3 kB (checked in by kris, 3 years ago)

latest updates

Line 
1 Mango Release 2.0
2
3 - Note that some Mango features require the latest dmd compiler; the dependencies are related to the new version= behaviour, and various dmd bug fixes
4
5 - Please take a look at the mango/examples/ directory
6
7 - Mango uses Build.exe for compilation. You can create a Mango.lib by going to the mango/build directory and using Build @mango. However, Build and DMD are so fast that I find it convenient to just avoid lib files. Setting up DMD for Mango is straightforward ~ either add a -I[mango-path] to the command line, or add it to the sc.ini file in the dmd/bin directory.
8
9 - Mango is fully compatible with the latest release of Ares ~ the two libraries tend to stay in sync. Add a -version=Ares to the DMD command-line when compiling for Ares.
10
11 - Note that you will need the wsock32.lib (sockets), or equivalent, available within the link path. The earlier ws2_32.lib does not support multicast, and will therefore produce errors.
12
13 - In a similar vein, you will need the ICU DLLs (or shared libs) to use the ICU bindings. These should be placed somewhere where the O/S can find them. Mango.icu now requires ICU v3.2
14
15 - Note that doxygen fails to include a significant amount of documentation. This is particularly evident where version{} is used, and where nested classes/functions are taken advantage of. Please refer to the source files for complete documentation.
16
17 - mango/mango/test/unittest.d is the main test file. Check in there for some additional usage examples.
18
19 ========================================================================================
20
21 Release 2.0 changes
22
23 - Renamed the mango.format package to be mango.convert
24 - Moved mango.time.Rfc1123 over to the mango.convert package
25 - Reshaped text-formatting package to be more streamlined
26 - Added an Atoi template for lightweight conversions
27 - Moved mango.io.Utf over to convert.Unicode
28 - Moved mango.sys.Type over to the mango.convert package
29 - Improved efficiency of URL decoding
30 - Added Unicode support to printf-style formatting
31 - Removed decoration from putw() and putd(), to correctly support wchar[] and dchar[]. This will likely require changes to string literals.
32 - Removed the lazy heap-allocation methods from convert.Integer and convert.Rfc1123
33 - Module io.TextFormat replaced by convert.Sprint
34 - Changed all I/O functions and delegates to return a uint, rather than an int
35 - Added a UnicodeFile module
36 - Added a UnicodeBom module
37 - Added Unicode support to Win32 console
38 - Console is now Buffer based, and UTF-8 encoded across all platforms
39 - Added io.Print module for printf compatability (doesn't need Stdout)
40 - Removed modules Resource & IResource, and cleaned up the relevant Conduit classes
41 - Reworked ConduitFilter & IConduitFilter to be simpler; added an EndianFilter module
42 - IBuffer, IReader and IWriter are now abstract classes ~ codegen is considerably better, but the names may need to change
43 - Completed the convert.Unicode codec, and added streaming support
44 - Mango.convert package is now templated for char, wchar, dchar
45 - GrowBuffer renamed, and now lives in its own module
46 - MappedBuffer now lives in its own module
47 - Reworked FileStyle and ConduitStyle to be small structs instead. Both files are deprecated. Added Text varieties to the predefined FileStyle.
48 - Added Mixed, Text, Binary style to the Buffer, and added sanity checks within Reader & Writer
49 - Added a ream of casts to eliminate compiler warnings
50 - Hopefully eliminated the cyclic static-ctor issue in mango.log (thanks to Tionex and teqdruid)
51 - Added checks for app-termination before cleaning up external references (files, sockets, etc)
52 - Stdin now reads Unicode correctly
53 - Added a templated BufferFormat module to tie a Format instance to a Buffer. Used by Stdout and friends
54 - Added a new mango.text package for string handling, and migrated utils.Text over there. Package is templated for char, wchar, dchar
55 - Added mango.io.BufferTokenizer to bind new Token classes to either a Buffer or a Conduit
56 - Added several more examples
57 - Resolved ~this() handling for external resources ~ appears to work correctly on linux.
58 - Added redirect support to HttpClient
59 - change pragma(link, wsock32) to the DMD pragma(lib) instead, on Win32
60  
61
62 Release 1.6 changes
63
64 - Updated to latest version of Ares
65 - Fixed bugs in unitest.d
66 - Split PropertyConfigurator into its own module
67 - Added mango.sys.OS module
68
69
70 Release 1.5 changes
71
72 - Added support for Http requests with '=' missing from within the query parameters (per request from Carlos)
73 - All !== and === instances removed (thanks to TeqDruid)
74 - Various minor patches to keep up with DMD changes
75 - Added mango.io.Console as a lightweight console facade
76 - Updated mango.log.ConsoleAppender per mango.io.Console
77 - Removed the binding between mango.io.FilePath and mango.io.Uri (will provide a utility class instead)
78
79
80 Release 1.4 changes
81
82 - Removed customization points for everything other than UTF in the Reader/Writer hierarchy. This just makes things easier to grok
83 - Added vararg/printf style output to DisplayWriter (and hence Stdout)
84 - Updated the mango.format package to include vararg/printf style formatting. This includes support for array output, using the '@' format flag. No unicode support yet
85 - Added a mango.time package with support for a number of HTTP oriented formats.
86 - Added initial support for the Ares project
87 - FlushWriter split out into its own module
88 - Renamed mango.base to mango.sys
89 - Updated mango.log to use mango.time & mango.sys.Epoch
90 - Removed final traces of Phobos (other than RegExp), to be compliant with Ares
91 - Exposed the read() and write() methods within Conduit, allowing one to bypass Buffer et. al.
92 - FileConduit now derives from DeviceConduit. This was done so that Stdio does not require FileConduit
93 - Cleaned up some references to Socket internals
94 - Added Darwin patches from Anders (thanks!)
95
96
97 Release 1.3 changes
98
99 - Added special processing for Win32 console output (it doesn't like strings longer than 32K)
100 - Added a MutableFilePath constructor to accept file names
101 - Added a new 'File' class to simplify the API. This extends FileProxy, so you get the methods from there also
102 - Added FileScan class, to collate files from multiple directories (originally from Chris Sauls)
103 - Fixed a bug in FilePath.splice()
104 - Added a FilePath.normalize() function to switch separator types
105 - Changed splice() to include 'file extentions' where the basepath has a name that includes a '.' seperator
106 - Changed all instances of Seperator to the correct spelling, and provided aliases for the invalid form (Thanks to Brad)
107 - Moved file-system constants into a new FileConst module (and left aliases in FileSystem)
108 - File classes now support Win95 & Win32s (thanks to Chris Sauls)
109 - Added a split() function to the utils.Text class
110
111
112 Release 1.2 changes
113
114 - Mango.base.ByteSwap updates from Aleksey Bobnev, who took the time to benchmark various approaches (big thank-you!)
115 - merged TokenEx back into Token, given new static constructor behavior in dmd 0.115
116 - added mango.format package
117 - Added the extended precision floating-point converters by David Gay (wrapped by mango.format.DGDouble)
118 - changed DisplayWriter to use mango.format
119 - Added a check for invalid stdio handles in FileConduit
120 - Cleaned up some cruft in the IWriter/IReader interaces
121 - Added 'whisper' IO format, as the unoffical Mango standard
122 - Enhanced support for reading arrays of a pre-determined size. Now uses a second argument instead of the old push() approach; C++ iostream format suffers as a result.
123 - Mango.io.Stdio split into mango.io.Stdout and mango.io.Stdin, which reduces baggage for small console programs
124 - removed some superfluous Phobos imports
125 - Invalid Stdio handles are quietly ignored (per behaviour of legacy systems)
126 - ServletContext can now accept independent Logger instances
127 - Mango.log.Admin had a few public imports which should have been private
128 - Anders kindly provided a set of patches for both GDC and the Mac (Darwin), along with the appropriate makefile (another big thank-you!)
129 - removed all dependencies on printf() and sprintf(), except for mango.log
130 - Http server reverted to HTTP/1.0 since it doesn't support chunking at this time
131 - Added URegex to the ICU package
132 - Mango.icu now requires ICU v3.2 (for the URegex package)
133 - the old version=Mango has been inverted to simplify usage of Build.exe; now it's version=Isolated for the standalone versions of mango.log and mango.icu
134
135
136 Release 1.1 changes
137
138 - added UString utility constructor for loading via an IBuffer
139 - added hadTimeout() method to SocketConduit, for explicit error-checking
140 - removed some cruft from mango.cluster (an old reference to a specific host name)
141
142
143 Release 1.0a changes
144
145 - fixed new const-int errors tagged by dmd 0.107
146
147
148 Release 1.0 changes
149
150 - Most version(linux) statements have been changed to version(Posix) instead. Make files should be adjusted accordingly
151 - ICU wrappers have been fleshed out some more
152 - UString has a number of additional methods
153 - Module icu.UMango introduced, which binds the ICU converters into Mango.io
154 - IArrayAllocator now knows about element widths, and makes adjustments to array.length as appropriate
155 - Fixed another bug in System.Sleep(), where the Win32 platform was off by a factor of 1000
156 - The array lengths read/written by binary readers/writers has changed, from a byte-count to an element-count. This should not affect anything unless you already have persisted data that was originally written by io.Writer
157 - Delivery of the Mango packages has been split into multiple components
158 - Added support for all array types to readers/writers. They now support 15 different data types, plus the IReadable/IWritable notion.
159 - Libraries (for Win32) are now included in the distribution. Linux libs will hopefully be provided in the near future
160 - FlushBuffer had some design flaws, and has been replaced with FlushWriter instead. Stdio now used the latter, rather than the former, and auto-flushes when a Newline is seen.
161 - The argument list for icu.UMessageFormat has been reworked
162 - ICU bindings now operate nicely on linux: a big thank-you to John Reimer.
163 - Mango.log is now even faster than before, and does zero memory-allocation once running. Supports Phobos, in addition to Mango.io
164 - UTimeZone.d now has some useful time-zones pre-defined
165 - Mango.io now uses an alias to support the twin put/get and <</>> syntax (kudos to Ivan Senji).
166
167  
168 Beta 9.5 changes
169
170 - File system is now Unicode enabled (supports Basic Multilingual Plane). FilePath is now assumed to be UTF-8 encoded where it contains non-ansi characters
171 - Started on the icu package (UChar, UString, ULocale, UConverter, UDateFormat, UMessageFormat, UNumberFormat, UResourceBundle, UTimeZone, UCalendar)
172 - Added Utf8 functions to mango.io
173  
174
175 Beta 9.4 changes
176
177 - Reworked the internals of the Reader/Writer framework. It's actually an entirely new, and more flexible, implementation with the same interface as before
178 - Fixed some circular import issues that dmd v.102 brought to light
179 - Fixed Win32 bug in System.sleep() where a "sleep forever" wouldn't
180
181
182 Beta 9.3 changes
183
184 - split IResource out from IConduit
185 - renamed IFilter to IConduitFilter (and propogated changes)
186 - System.d moved out of mango.io to mango.base (it never belonged there)
187 - Timer.d moved to mango.utils
188 - removed get/put support for ubyte[]) and byte[] from IReader/IWriter. There's so many issues regarding arrays in general that the resolution will have to be different that the current approach (note that std.streams has the same issue)
189 - removed IPickled composite interface since the compiler cannot handle such things correctly (yet)
190 - added an example of cluster alerts
191 - moved Timer.Interval over to System.Interval instead
192 - fixed new getErrno() issues due to Phobos changes
193 - removed additional dependencies on Phobos
194 - changed things for new version= behaviour
195 - fixed Uri problem regarding the funky implicit [length]
196 - added preliminary IWriter.write([]) and IReader.read([]) support (no Endian or Tokenizing support yet)
197
198
199 Beta 9.2 changes
200
201 - replaced cluster notification strategy for queues
202 - moved AbstractServer, IServer, and ServerThread over to mango.utils
203 - renamed mango.io.Utils to mango.utils.Text, and added mango.utils.Random
204 - added an ILogger to the AbstractServer constructor, and some derivatives
205 - made cluster server much more robust under duress
206 - changed cluster-socket reaping strategy from server-based to client-based
207 - added a mango.utils.Timer (with an interval clock also)
208 - fixed some small bugs, and updated to dmd 0.96 import adjustments
209 - added a set of base classes for message/task
210 - added cluster exclusive-updates via remote cache-loading/locking
211 - ICache renamed IMutableCache; ICache is now immutable
212 - introduced ICacheLoader, and IRemoteCacheLoader
213 - added mango.cluster.TaskServer for handling grid-like processing
214 - added reply facilities for cluster messages/tasks
215 - fixed all kinds of bugs related to crazy AA hashmap side-effects
216 - added mango.log.RollingFileAppender, to handle rotation through a file-set
217 - added mango.cache.HashMap (a port of Doug Lea's latest ConcurrentHashMap)
218 - added a Timer class to provide large-grained clock values
219 - changed timout values to Timer.Interval types instead (e.g. socket timeout)
220 - added System.getMillisecs() and other related methods
221 - annotated source code is now part of the documentation (still needs a lot of work!)
222 - added HttpClient.read() to simplify that part of the process
223 - added IConduit filter support (see IConduit.attach)
224 - simplified the client-side of IBuffer, and cleaned up all dependents
225 - added a task-server to the example folder
226
227
228 Beta 9.1 changes
229
230 - changed ICacheEntry and CacheEntry names to IPayload and Payload respectively in the mango.cache package
231 - filled out mango.cluster with a large chunk of remote cache & queue functionality
232 - fixed a bug in the assembler version of System.flipbytes()
233 - the multicast support, hence cluster support, require wsock32.lib under Win32; the old library ws2_32.lib does not provide multicast support
234 - fixed linux bug with huge Logger timestamps
235 - fixed linux SocketListener bug (codegen bug, kudos to John)
236 - added default values for FileConduit constructors (Style.ReadExisting)
237 - split Dictionary in two (Dictionary and MutableDictionary)
238 - reworked SocketListener to be an abstract class
239
240
241 Beta 9 changes
242
243 - Added multicast support via mango.io.MulticastSocket
244 - Split mango Socket extensions into modules ServerSocket, SocketConduit, and DatagramSocket
245 - Added the mango.io.SocketListener class for asynchronously dispatching socket input
246 - Added a remote cache-invalidator as part of the new mango.cluster package
247 - reworked PickleFactory yet again (thanks to Eric for pointing out the bogosity therein)
248 - removed AbstractServer.stop() since it's no longer necessary: Socket.d now has an isCancelled() method
249
250 Beta 8 changes
251
252 - IBuffer.flush() now throws an IOException if there was an IO problem, as does IConduit.copy() which reversed its orientation from IConduit.copyTo() such that it's now possible to chain copy() operations
253 - FileConduit gets a copy(FilePath) method to simplify file copying
254 - Further documentation
255 - Formal introduction of mango.log.Admin; try it out with mango.examples.servlets!
256 - Http client and server reorganized as described in the dsource forums (both now a subset of mango.http)
257 - updated to reflect dmd v0.93 .size, char.init, and typeinfo changes
258 - added several default values to method arguments
259 - ISerializable migrates to IPickle; Reader/Writer/Registry renamed appropriately; PickleRegistry is more flexible than before (see HTML documentation on PickleReader)
260 - A new HybridToken is introduced. Please see documentation
261 - CompositeReader/Writer method names changed from read/write to get/put instead
262 - Added the mango.io.model.IBitBucket interface
263
264
265 Beta 7 changes
266
267 - certain imports have been made public rather than private, in an effort to reduce the number of user-level imports
268 - mango.server.utils.Uri moved to mango.io.Uri
269 - mango.server.utils.Utils moved to mango.io.Utils
270 - some internal mango.cache changes
271 - added the mango.log package
272 - HttpClient api reshaped yet again
273 - moved mango.server.http.HttpClient to package mango.client.http.HttpClient instead
274 - added an addCookie() method to HttpClient, for outgoing cookies. Still does not have support for client cookie parsing ...
275
276
277 Beta 6 changes
278
279 - updated old-style casts (thanks Chris S)
280 - reshaped server.http.HttpClient with respect to Uri access
281 - a tad more documentation
282 - reshaped ServletProvider with additional method arguments (unittest.d and servlets.d updated accordingly)
283
284
285 Beta 5 changes
286
287 - dsc prefix has been changed to mango. I have updated all make files and so on, and apologize for the inconvenience.
288 - moved file constants from System.d to FileSystem.d
289 - add doxygen tags to all files
290 - fixed FilePath '\0' termination problem in toStringZ()
291 - added an external Uri contructor to HttpClient
292 - added an "examples" directory with servlets.d to get things going
293
294
295 Beta 4 changes
296
297 - added a few wrappers to make it easier to control the lifespan of Sockets (setLingerPeriod() etc.)
298 - added SerializableReader/Writer classes, along with SerializableRegistry
299 - updated unittest.d serialization example to reflect the above
300 - added HttpClient, for easy management of client-side HTTP requests
301 - fixed bug in Buffer.toString()
302 - fixed various linux issues regarding Socket.d constants/enums (thanks John)
303 - removed 'synchronized' from Socket.accept()
304 - various examples of HttpClient usage added to unittest.d
305 - fixed FilePath bug regarding "." and ".." files
306 - added recursive file-scanner example to unittest (many thanks to Chris)
307 - added mango.io.FileBucket, for storing serialized classes (doesn't work on linux; no FileConduit.truncate yet)
308 - added the mango.cache package
309 - fixed operator precedence bug in FileConduit.seek
310 - improved support for 'context' in ServletProvider et. al.
311 - added Regex pattern support to ServletProvider
312 - added ServletResponse.copyFile method
313 - added ServletRequest.getContext method
314 - renamed various Input[Name] and Output[Name] classes to be [Name] and Mutable[Name] instead
315
316
317 Beta 3 changes
318
319 - memicmp() replaced with strncasecmp() in TokenStack.d (for linux) per John
320 - added sanity checks in TokenStack.d
321 - Fixed typo in Uri.d
322 - toParent() in FilePath.d now throws an exception if the source object is an orphan
323 - sprinkled a few more asserts around
324 - tentatively synchronized Socket.accept(), to see if it resolves the linux server-socket issues
325 - added the linux makefile, per Brad and John
326
327
328 Beta 2 changes
329
330 - several linux typos and bugs were fixed (thanks Brad).
331 - Mango.utils now lives in Mango.server.utils. You may need to kill the previous folder ...
332 - Added RFC 2396 compliant URI implementation (Mango.server.utils.Uri)
333 - Mango.io.FilePath name-parser was reshaped such that it now actually works
334 - Lots of changes vis-a-vis Mango.server and Mango.servlet; these will be seperated out of here at some point
335
336
337 Beta 1 changes
338
339 - fixed invalid import names for linux platform (thanks Brad).
340 - Extended Token support for FP (thanks Chris) -- this needs further attention.
341 - Added FreeList support for SocketConduit instances returned via ServerSocket.accept()
342 - Removed hacks and workarounds vis-a-vis immature Interface runtime (way to go, Walter!). ColumnWriter and TextWriter now work as they were supposed to with dmd v0.83.
343 - fixed inverted-logic bug in TextReader.get  (per Chris)
344 - added RFC 2109 Cookie implementation (server-side, not client-side)
345
346
347 Alpha 6 Changes
348
349 - added IBuffer.append() for directly appending to a buffer (sans Writer), and added an example to unittest.d
350 - updated mango.io.FilePath to take advantage of the above
351 - Socket.accept() now returns null on error rather than throwing an exception. This is to avoid exceptions being thrown when listener-threads are legitimately terminated
352
353
354 Alpha 5 Changes
355
356 - added composite IO, via CompositeReader and CompositeWriter
357 - added some additional examples to mango.unittest.d, including an example of direct IO
358 - resolved issues regarding the reading & writing of binary arrays
359 - added a 'mapped' flag to Reader classes that decides whether to allocate array types, or simply map them onto the read buffer (allocate is the default)
360 - fixed "forward reference" issue
361 - removed IBuffer.lookahead() for now since there appears to be no need for it (may change later)
362 - removed buffer.backup(), and combined its functionality into skip
363
364
365 Alpha 4 Changes
366
367 - removed IBuffer.isReady() since it could result in similar behaviour to eof testing
368 - added Copyright headers
369 - TextWriter renamed to DisplayWriter. Plain old text output only
370 - TokenWriter renamed to TextWriter. TextReader/TextWriter operate upon delimited text only
371 - TextWriter now takes a char[] delimiter rather than a single char
372 - fixed precision bug for FP output
373
374
375 Alpha 3 Changes
376
377 - BufferToken renamed CompositeToken
378 - Added IConduit constructors to Tokens and Readers/Writers to make usage somewhat less verbose
379 - Added file random-access example to unittest.d
380 - added Writer.flush()
381 - some further documentation
382
383
384 Alpha 2 Changes
385
386 - IBuffer storage type changed from ubyte[] to void[]
387 - IBuffer.flush() removed due to a design flaw. The replacement is IConduit.flush(IBuffer)
388 - Some minor additional commentary and code added to mango/unittest.d
Note: See TracBrowser for help on using the browser.