OCaml Forge

File Release Notes and Changelog

Release Name: Batteries Included alpha 3

Release Notes

This is the third alpha release of Batteries Included.

= Changes since alpha 2
== General
* Batteries Included is now available for both OCaml 3.10 and 3.11 .

== Language extensions
* It is now possible to merge several modules into one.
* General (and extendable) structure comprehension, working on lists, arrays, lazy lists, enumerations, ...
* (OCaml 3.11 only) Native Unicode strings, including pattern-matching and constant expression elimination.

== Library
* Module hierarchy completely reworked.
* Thread-safe input/output when required.
* A new abstract thread-safety module, to ensure future compatibility with coThreads.
* Old-style ListLabels, ArrayLabels, etc. replaced with List.Labels, Array.Labels, etc.
* Plenty of new functions in Enum, Array, Hashtbl, Pervasives, String, Rope, Bingarray, Dllist, DynArray, Arg, Sys.
* The File module now permits using temporary files.
* Several modules have been renamed (SafeInt, Labels).
* New compatibility layer with OCamlNet.
* New Unix module, compatible with IO.
* New module Future.Path for manipulating paths.
* New module CharEncoding for transcoding inputs/outputs.
* New module Date for manipulating time.

== Documentation
* New documentation by topic
* New documentation generator, with topic management
* A number of additions, e.g. a tutorial on [fold], [iter], [map] in the documentation of Pervasives.

== Bugfixes
* bug 100 (Enum.seq) fixed
* Set.enum/backwards now enumerate in the right order

== Toplevel
* Pretty-printers for UChar, Rope, String.Cap, UTF8.
* Loading speed improved.

== Docfixes
* bug 101 (Enum.for_all) fixed
* Documentation fixes in List.

= Changes since alpha 1
* Plenty of bugfixes
* Plenty of docfixes
* We now have a custom ocaml, ocamlc, ocamlopt which may be used as (near) drop-in replacements for the regular ocaml, ocamlc, ocamlopt
* We now have a working toplevel
* We now have a parser combinator library
* Many additional functions
* We now have a set of standard operators for function composition, etc.
* Unicode characters and strings now have all the features of their non-Unicode counterparts
* Improved type-safety of Unicode
* Most data structures now support enumerations, s-expressions, printing to an output
* Inputs and outputs may now be either garbage-collected, closed manually, closed by their dependencies
or closed when leaving the program
* We now have transparent on-the-fly gzip compression/decompression of channels.
* Additional examples
* Additional documentation
* Access to some elements of the system configuration
* We are now mostly rid of [in_channel]/[out_channel]
* The toplevel now offers a tutorial and on-line help
* In [Ref], now using the same naming conventions as C, Java...
* Build system now uses autoconf
* The documentation generator now builds an external index of values which may be used for auto-completion

= Changes since pre-release 4
* Plenty of additional functions
* Plenty of bugfixes
* Several syntax extensions for auto-opening Batteries, etc.
* Serialization/deserialization using S-Expressions (SExplib)
* Unicode strings
* Unicode ropes
* A few examples
* New test-cases
* Much more documentation
* Extended streams
* Two different libraries, one with threads, one without

For more informations, see the ChangeLog

Change Log

2009-01-29  David Rajchenbach-Teller  <David.Teller@univ-orleans.fr>

	* src/core/extlib/lazyList.ml*: [ ^:^ ] added

	* examples/: rearranged

	* src/main/threads/batteries.ml: [LazyList] added

	* src/main/nothreads/batteries.ml: [LazyList] added

	* src/batteries_toolchain/batteries_help.ml: in [kind_of_name], "language" is also associated to [Topics]

	* build/META.in: [pa_comprehension.syntax] restored

2009-01-28  David Rajchenbach-Teller  <David.Teller@univ-orleans.fr>

	* .gitignore: removed [ocaml] and [configure]

	* build/odoc_tags.ml: Jokes added

	* src/batteries_toolchain/top.ml: [print_*] registered

	* src/core/extlib.mlpack: moved [ExtString] above [ExtUTF8]

	* build/META.in: in [archive(toploop)], [batteries_toolchain.cma] replaces [batteries_help.cmo]

	* src/batteries_toolchain/ocaml: argument of [ocaml -init] now defined from [`ocamlfind`]

	* src/batteries_toolchain.mllib: created

	* Makefile.in: [top] now depends on [batteries_toolchain.cma]
	
	* src/batteries_toolchain/batteries_print.ml*: created

	* src/_tags: batteries_toolchain included

	* src/core/extlib/rope.ml*: [to_string], [of_string] added

	* batteries.godiva (Depends): godi-ocamlnet

	* src/syntax/pa_strings/pa_strings.ml: "u" is not shared anymore

	* doc/batteries/myocamlbuild.ml: added pa_string

2009-01-27  David Teller  <David.Teller@univ-orleans.fr>

	* src/core/toolchain/batlib_Sexp_Conv.mli: [opaque] renamed [sexp_opaque]

	* src/core/toolchain/_tags: batlib_Sexp_Conv.ml now uses [use_optcomp]

	* src/core/toolchain/batlib_Sexp_Conv.ml: added #if for [ParseError]/[Parse_error] upstream renaming

	* src/core/_tags: extlib.mli now uses [use_optcomp]

	* src/core/extlib/extGc.mli: [control.allocation_policy] added, for OCaml 3.11

	* doc/batteries/html/extensions.html: flattened

	* src/main/threads/batteries.ml: [ExtArg] replaces [Batlib_Baselib_Arg]

	* src/core/extlib/extArg.ml*: created

	* src/core/extlib/extPervasives.ml*: [String.lowercase], [String.uppercase] added

	* src/core/extlib/enum.ml*: [flatten] added

	* src/main/nothreads/batteries.ml: [ExtSys] replaces [Sys], [ExtUnix] replaces [Unix]

	* src/main/threads/batteries.ml: [ExtSys] replaces [Batlib_Baselib_Sys]

	* src/core/extlib.mlpack: [ExtSys] added

	* src/core/extlib/extSys.ml*: created

	* src/syntax/pa_strings/pa_estring.ml: conditional compilation added

	* myocamlbuild.ml: [Preprocessing] added

2009-01-26  David Teller  <David.Teller@univ-orleans.fr>

	* src/syntax/pa_batteries/pa_batteries.ml: fixed comments

	* build/META.in: [pa_strings] added

	* Makefile.in: pa_strings.cmo, pa_estring.cmo, pa_estring_top.cmo added
	
	* src/syntax/pa_strings/pa_strings.ml: created

	* examples/examples.itarget: [conv] added

	* examples/conv.ml: created

	* src/core/extlib/charEncodings.ml*: [Malformed_code] added
	
	* src/core/extlib/charEncodings.ml: [transcode_out] now doesn't use [Encoding.convert_out]

	* src/core/extlib/charEncodings.ml: [transcode_in] now doesn't use [Encoding.convert_in]

	* src/core/extlib/IO.ml: flattened

	* src/core/extlib/charEncodings.ml: now comparing encodings names rather than encodings themselves

	* src/core/extlib/charEncodings.ml*: [of_stuff], [stuff_of] renamed [as_encoded]/[encoded_as]
	

2009-01-25  David Teller  <David.Teller@univ-orleans.fr>

	* examples/pair.ml: Made parametric, documented

	* src/main/nothreads/batteries.ml: [CharEncodings] added

	* src/main/threads/batteries.ml: [CharEncodings] added

	* src/core/extlib.mlpack: [CharEncodings] added

	* src/core/extlib/charEncodings.ml: ".mar" removed

	* src/core/extlib/charEncodings.ml*: [t], [of_stuff], [stuff_of] created

	* src/core/extlib/std.ml*: [**>] reverted to [<|], [<**] reverted to [|>]

	* src/core/extlib/extPervasives.ml: [**>] reverted to [<|]

2009-01-24  David Teller  <David.Teller@univ-orleans.fr>

	* src/core/extlib/extUTF8.ml: flattened

	* src/core/extlib/charEncodings.ml*: created

	* src/core/extlib/extPervasives.mli: [**>] reverted to [<|]

2009-01-23  David Teller  <David.Teller@univ-orleans.fr>

	* src/core/extlib/extUnix.ml: flattened

	* src/main/threads/batteries.ml: [Date] added

	* src/libs/ocamlnet/_tags: [pkg_sexplib] added

	* src/libs/libs.mlpack: [ExtNetDate] added

	* src/libs/ocamlnet/extNetdate.ml*: created

	* src/core/extlib/extList.ml: flattened

	* src/core/extlib/dynArray.ml: [keep] rewritten from [filter]

	* src/core/extlib/dynArray.ml: [TYPE_CONV_PATH] adapted

	* src/core/extlib/dynArray.ml*: [filter], [filter_map] added

	* src/core/extlib/dynArray.ml*: [filter] renamed [keep]

	* src/core/extlib/extPervasives.ml*: [( /@ )], [( @/ )] added

	* src/core/extlib/dllist.ml: [TYPE_CONV_PATH] adapted

	* src/core/extlib/dllist.ml*: [filter], [filter_map] added

2009-01-22  David Teller  <David.Teller@univ-orleans.fr>

	* src/core/extlib/rope.ml: [TYPE_CONV_PATH] adapted

	* src/core/extlib/extUChar.mli: Documentation repaginated

	* src/core/extlib/rope.ml*: [get], [set] changed order of arguments

	* src/core/extlib/rope.ml: [explode], [implode], [capitalize], [uncapitalize], [splice] implemented

	* src/core/extlib/rope.ml: [apply1] added

	* src/core/extlib/rope.mli: [strip], [capitalize], [uncapitalize], [join], [slice], [explode], [implode], [compare], [compare_without_case]

	* src/core/extlib/rope.ml: [nsplit] rewritten

	* src/core/extlib/rope.mli: [Invalid_rope] added
	
	* src/core/extlib/rope.ml*: [replace] now uses labels

	* src/core/extlib/rope.ml*: [rfind], [rfind_from], [find_from], [rsplit] added

	* src/core/extlib/extString.mli: Documentations update

	* src/core/extlib/rope.mli: [create] removed

	* src/core/extlib/rope.ml: [of_list], [to_list] implemented

	* src/core/extlib/extBigarray.ml*: [enum] added

2009-01-21  David Teller  <David.Teller@univ-orleans.fr>

	* src/core/extlib/extString.ml*: [rsplit] added

	* src/batteries_toolchain/top.ml: [netstring] now loaded manually

	* src/batteries_toolchain/batteries_help.ml: Added final newline to error messages.

	* src/batteries_toolchain/batteries_help.ml: replaced

2009-01-20  David Teller  <David.Teller@univ-orleans.fr>

	* src/core/extlib/extString.ml*: [rfind], [find_from], [rfind_from] added to [Cap]

	* src/main/nothreads/batteries.ml: [Batteries_config] added

	* src/main/threads/batteries.ml: [Batteries_config] added

	* src/main/nothreads/batteries.mllib: [Batteries_core] removed

	* examples/cat2.ml: adapted operators to [ <** ]

	* examples/parallelsort.ml: adapted operators to [ <** ]

	* examples/browser.ml: added

2009-01-19  David Teller  <David.Teller@univ-orleans.fr>

	* src/core/extlib/extString.ml: [nsplit] rewritten

	* src/core/extlib/extString.ml*: [rfind], [rfind_from] added

	* src/core/extlib/extString.ml: [find_from] now checks whether [ofs] falls within bounds

	* src/core/extlib/extString.ml: [find] now uses [find_from]

	* src/core/extlib/extString.ml*: [find_from] added

	
2009-01-18  David Teller  <David.Teller@univ-orleans.fr>

	* src/core/extlib/extBuffer.ml*: applied Dawid Toton's patch

	* src/core/extlib/extBuffer.ml: [TYPE_CONV_PATH] adapted

	* src/core/extlib/extUnix.ml: [open_connection] now uses [ **> ] instead of [ <| ]

	* src/core/extlib/extPervasives.mli: <| renamed **>, |> renamed <**

	* src/core/extlib/std.ml*: <| renamed **>, |> renamed <**


2009-01-11  David Teller  <David.Teller@univ-orleans.fr>

	* src/core/extlib/rope.ml: [sub] now defined from a function [aux]
	
	* src/core/extlib/rope.ml: [left], [right], [head], [tail] now use new order of arguments for [sub]
	
	* src/core/extlib/rope.mli: changed order of arguments in [sub]

	* src/core/extlib/uCharParser.ml: [Rope.concat] replaced with [Rope.append]

	* src/core/extlib/rope.ml*: [concat_sep] renamed [concat]

	* src/core/extlib/rope.ml: [append] renamed [append_us]

	* src/core/extlib/path.ml: [RopeAdapter.length_bytes] is now defined from [Rope.length]

	* src/core/extlib/rope.mli: [compare], [compare_without_case] added

	* src/core/extlib/extPervasives.ml: [Enum] now not included anymore

	* src/core/extlib/rope.ml: [compare] implemented

	* src/core/extlib/rope.ml: [compare_without_case] implemented

	* src/core/extlib/enum.ml*: [compare] added

	* src/core/extlib/enum.mli: added documentation hyperlink to [Stream]

	* src/core/extlib/path.ml: replaced [R.of_string] with [R.of_latin1]
	
2009-01-11  David Teller  <David.Teller@univ-orleans.fr>

	* src/core/extlib/path.ml: added

	* src/core/extlib/path.mli: added

2009-01-06  David Teller  <David.Teller@univ-orleans.fr>

	* src/core/extlib/interfaces.ml*: header added

	* build/odoc_tags.ml: [generate_element_index_by_topic] now prints exception in case of error

	* build/odoc_tags.ml: in [adjust_top_from_comment], propagating [acc] instead of [top]

	* build/odoc_tags.ml: [modules_by_topics] now returns an empty list instead of [Not_found]

	* build/odoc_tags.ml: in initializer, removed custom tag "topic"

	* build/odoc_tags.ml: in [sort_by_topics], replaced "topic" with "topic"/"{topic"

2009-01-05  David Teller  <David.Teller@univ-orleans.fr>

	* src/core/extlib/extStr.mli: created

	* src/core/extlib/extStr.ml: created

	* src/core/extlib.mlpack: [ExtStr] added

	* src/main/threads/batteries.ml: [Batlib_Baselib_Str] replaced with [Extlib.ExtStr.Str]

	* src/main/threads/batteries.mllib: [Batlib_Baselib_Str] removed

	* src/main/nothreads/batteries.ml: [Batlib_Baselib_Str] replaced with [Extlib.ExtStr.Str]

	* src/main/nothreads/batteries.mllib: [Batlib_Baselib_Str] removed

2009-01-03  David Teller  <David.Teller@univ-orleans.fr>

	* src/main/nothreads/batteries.ml: [Digest] renamed [MD5]

	* src/main/threads/batteries.ml: [Digest] renamed [MD5]

2008-12-16  David Teller  <David.Teller@univ-orleans.fr>

	* build/odoc_tags.ml: [generate_elements_index_by_topic], [modules_by_topic], [topics] added

	* build/odoc_tags.ml: [modules_by_topic], [topics] now initialized in [generate]

	* build/odoc_tags.ml: [sort_by_topics] now uses a [StringSet] for the set of topics

	* src/main/threads/batteries.ml: [Dlllist], [Dynarray], [MultiPMap], [Base64] added

	* src/main/nothreads/batteries.ml: [Dlllist], Dynarray], MultiPMap], [Base64] added

2008-12-15  David Teller  <David.Teller@univ-orleans.fr>

	* src/main/threads/batteries.mllib: Batlib_Baselib_Thread, Batlib_Baselib_Mutex, Batlib_Baselib_Condition, Batlib_Baselib_Event, Batlib_Baselib_StringLabels, Batlib_Baselib_Set 	removed

	* src/core/extlib/extHashtbl.mli: removed [include] from documentation

	* src/core/extlib/enum.mli: removed [include] from documentation

2008-12-14  David Teller  <David.Teller@univ-orleans.fr>

	* src/core/extlib/enum.mli: ExceptionLess documentation modified

2008-12-08  David Teller  <David.Teller@univ-orleans.fr>

	* src/core/extlib/extPervasives.ml*: [undefined] added

2008-12-06  David Teller  <David.Teller@univ-orleans.fr>

	* examples/unicode.ml: [rope1] now defined from [u1] rather than [s1]

	* examples/unicode.ml: flattened

	* examples/shuffle2.ml: flattened

	* src/main/threads/batteries.ml: [Random] is now [Extlib.ExtRandom.Random]

	* src/main/nothreads/batteries.ml: [Random] is now [Extlib.ExtRandom.Random]

	* examples/parallelsort.ml: flattened

	* examples/netchan-cat.ml: flattened

	* src/main/nothreads/batteries.ml: [Netchannels] added

	* examples/gzip.ml: flattened

	* examples/gunzip.ml: flattened

	* examples/cat.ml: flattened

	* examples/accumulator.ml: flattened

	* src/core/extlib/pSet.ml:  [PA_TYPE_CONV] flattened

	* src/core/extlib/pSet.ml:  [exists] now uses [Return] instead of [Label]

	* src/core/extlib/extString.ml: [PA_TYPE_CONV] flattened

	* src/core/extlib/extString.ml*: in [Cap.t], removed constraints
	

2008-11-30  David Teller  <David.Teller@univ-orleans.fr>

	* src/core/extlib/extString.ml*: [repeat] added

2008-11-25  David Teller  <David.Teller@univ-orleans.fr>

	* build/odoc_tags.ml: created

	* src/main/threads/batteries.ml: rewritten
	
	* src/main/nothreads/batteries.ml: rewritten

	* src/core/extlib/extInt.ml*: [SafeInt] renamed [Safe_int]

	* src/core/extlib/extInt.ml: [PA_TYPE_CONV] flattened

	* src/core/extlib.mlpack: [ExtOo] added

	* src/core/extlib/enum.ml: [PA_TYPE_CONV] flattened

	* src/core/extlib/extOo.ml*: created

	* src/core/extlib/enum.ml*: [of_object], [to_object] created

2008-11-20  David Teller  <David.Teller@univ-orleans.fr>

	* src/main/nothreads/batteries_flat.ml: created

	* build/tags.ml: created

2008-11-18  David Teller  <David.Teller@univ-orleans.fr>

	* src/core/extlib/rope.ml: propagaged name change of [Labels]

	* src/core/extlib/labels.ml*: renamed return.*

	* batteries.ml (both): [Labels] renamed [Return]

	* src/core/batteries_core_threads.ml: [Labels] renamed [Return]

	* src/core/batteries_core.ml: [Labels] renamed [Return]

	* src/core/extlib/IO.ml: [in_channel_of_input] created

	* src/core/extlib/file.ml: [out_chan_mode], [in_chan_mode] created

	* src/core/extlib/file.ml*: [open_temporary_out_flag], [open_temporary_out], [with_temporary_out] created

	* src/core/extlib/extPervasives.ml*: redefined [first], [second]

2008-11-17  Edgar Friendly  <thelema314@gmail.com>

	* src/core/extlib/interfaces.ml (et al): Add Data.Interfaces as the place to put module types / interfaces (i.e. OrderedType)

2008-11-16  David Teller  <David.Teller@univ-orleans.fr>

	* src/core/extlib/extBigarray.ml*: created

	* src/main/nothreads/batteries.mllib: [HashtblLabels] removed

	* src/main/nothreads/batteries.ml: [MoreLabels] added, [HashtblLabels] removed
	
	* src/main/threads/batteries.ml: [MoreLabels] added, [HashtblLabels] removed

	* src/main/threads/batteries.mllib: [HashtblLabels] removed

	* src/core/batteries_core_threads.ml: [HashtblLabels] removed

	* src/core/batteries_core.ml: [HashtblLabels] removed

	* src/core/extlib/extHashtbl.ml*: [map] now passes to [f] both the value and the key

	* src/core/batteries_core_threads.ml: removed [SetLabels]

	* src/main/threads/batteries.ml: removed [SetLabels]

	* src/core/extlib/extSet.mli: [Labels], [ExceptionLess] added

	* src/core/extlib/extArray.ml*: [Cap.Labels] added

2008-11-15  David Teller  <David.Teller@univ-orleans.fr>

	* Makefile.in: [reinstall] now builds [top], [syntax]
	
	* src/core/extlib.mlpack: [EnumLabels] removed

	* src/core/batteries_core.ml: [ArrayLabels] removed

	* src/core/extlib/extArray.ml: module [Labels] added

	* src/core/extlib/extArray.ml*: [filter_map] added

	* src/core/extlib/extArray.ml*: module [ExceptionLess] added

	* src/core/extlib/extArray.ml*: [iter2i] added

	* src/core/extlib/enum.ml: module [Labels] added

	* src/core/extlib/enumLabels.ml*: removed

	* src/syntax/pa_openin/pa_openin_r.ml: [multi_module_expr] now uses keyword [include], [module_binding0] exported

	* src/syntax/pa_openin/pa_openin.ml: [multi_module_expr] now uses keyword [include]

	* doc/batteries/html/extensions.html: Documentation on multi-aliasing

	* src/core/extlib/enum.mli: Documentation on override modules

	* src/main/nothreads/batteries.ml: [Common] added

	* src/main/threads/batteries.ml: [RMutex], [Common] added

	* src/core/extlib_threads/extPervasivesThreads.ml: removed content

	* src/core/extlib/extPervasives.ml*: [lock] added

	* src/core/extlib/concurrent.ml*: [create] added

	* src/core/extlib_threads/extUnixThreads.ml: [lock] is now a [Concurrent.lock]

	* src/main/nothreads/batteries.mllib: [InnerIO] removed

	* src/main/threads/batteries.mllib: [InnerIO] removed

	* src/core/extlib.mlpack: [InnerIO] added

	* src/core/extlib/concurrent.mli: [type lock] becomes abstract

2008-11-14  David Teller  <David.Teller@univ-orleans.fr>

	* src/core/extlib/innerIO.ml: [flush], [flush_all] now use [Concurrent.sync]

	* src/core/extlib/concurrent.ml*: [try_lock] added

	* src/core/extlib_threads/IOThreads.ml: now defines [lock] and [lock_factory]

	* src/core/extlib_threads/IOThreads.mli: removed

	* src/core/extlib_threads/extMutex.ml*: [make] added

	* src/core/batteries_core_threads.ml: [Concurrency.Common] added

	* src/core/batteries_core.ml: [Concurrency.Common] added

	* src/core/extlib/IO.ml: [synchronize_in], [synchronize_out], [lock_factory] added

	* src/core/extlib/innerIO.ml: [wrap_in] now uses [Concurrent]

	* src/core/extlib/innerIO.ml: [wrap_out] now uses [Concurrent]

	* src/core/extlib/innerIO.mli: now uses [Concurrent]

	* src/core/extlib.mlpack: [Concurrent] added

	* src/core/extlib/concurrent.ml*: created

2008-11-13  David Teller  <David.Teller@univ-orleans.fr>

	* src/syntax/pa_openin/pa_openin_r.ml: [module_binding0], [multi_module_expr] added

	* src/syntax/pa_openin/pa_openin.ml: [module_binding0], [multi_module_expr] added

	* src/core/batteries_core_threads.ml: [IO] is now [Extlib_threads.IOThreads]

	* src/core/extlib_threads/IOThreads.mli: created

	* src/core/batteries_core_threads.ml: [Mutex] is now [Extlib_threads.ExtMutex.Mutex]

	* src/core/extlib_threads.mlpack: [ExtMutex] added

	* src/core/extlib_threads/extMutex.ml*: created

	* src/core/extlib/innerIO.ml: [outputs_add], [outputs_remove], [create_in], [create_out] now protected by [lock], [unlock]

	* src/core/extlib_threads/extPervasivesThreads.ml: [io_mutex], [io_lock], [io_unlock] added

	* src/core/extlib/innerIO.ml*: [lock], [unlock] added

	* src/core/extlib/innerIO.ml: [outputs_add] added

2008-11-12  David Teller  <David.Teller@univ-orleans.fr>

	* src/core/extlib_threads/extPervasivesThreads.ml*: created

	* src/core/extlib_threads.mlpack: [ExtPervasivesThreads] added

	* src/core/batteries_core_threads.ml: [Standard] is now [ExtPervasivesThreads.Pervasives]

	* src/core/extlib/extUnix.ml*: [open_process_in], [open_process], [open_process_full], [establish_server], [open_connection] now accept an additional argument [autoclose]

	* src/core/extlib/extUnix.ml*: [input_of_descr], [output_of_descr], [descr_of_input], [descr_of_output] added

	* src/core/extlib/innerIO.ml: [empty_in] added, used in [input_channel]

	* src/core/extlib/enum.mli: fixed documentation of [for_all]

2008-11-11  David Teller  <David.Teller@univ-orleans.fr>

	* src/core/extlib/enum.ml: [seq] now applies post-operation rather than pre-operation