Skip to content

Releases: ocaml-batteries-team/batteries-included

v3.3.0 (minor release)

02 Mar 01:10
Compare
Choose a tag to compare

v3.3.0 (minor release)

Compatible with OCaml-4.12.0 plus some small changes:

  • Several fixes for OCaml-4.12
    #994, #992,
    (kit-ty-kate)

  • Support for ocaml-multicore in the Gc module
    #991
    (kit-ty-kate, review by Gabriel Scherer)

  • Significant work preparing switch to dune
    #1025, #1024, #1023, #1022, #1021, #1020, #1019, #1017
    (Gabriel Scherer, review by Francois Berenger)

  • Remove -rectypes from BatFingerTree and simpler implementation
    #1012
    (Gabriel Scherer)

  • new BatEither module; available in all OCaml versions supported by batteries
    #1027
    The implementation comes from the stdlib and is due to Gabriel Scherer.
    (Francois Berenger, review by Gabriel Scherer)

  • BatList.partition_map: ('a -> ('b, 'c) BatEither.t) -> 'a list ->
    'b list * 'c list
    #1028
    (Francois Berenger, review by Gabriel Scherer)

  • BatSet: added several missing methods for compatibility with stdlib.
    The implementation of filter, map and filter_map was adapted from
    stdlib, authors of the original implementation are Xavier Leroy,
    Albin Coquereau and Gabriel Scherer
    #1006, #1008
    (Jakob Krainz, review by Gabriel Scherer)

  • BatSeq: compatibility with stdlib.Seq
    #1005, #1007
    (Jakob Krainz, review by Gabriel Scherer)

  • BatMap, BatSplay: find_first, find_first_opt, find_last, find_last_opt,
    to_rev_seq
    For compatibility with the stdlib.
    The implementation in BatMap was adapted from stdlib;
    authors of the original implementation are Albin Coquereau
    and Gabriel de Perthuis.
    #1000, #1031
    (Jakob Krainz, review by Gabriel Scherer)

  • BatArray.remove_at: int -> 'a array -> 'a array
    #996
    For compatibility with BatList
    (Francois Berenger, review by Cedric Cellier)

  • BatDynArray: several new functions
    BatDynArray now exposes almost the same functionalities as BatArray
    #872
    (andrepd, review by Florent Monnier and Francois Berenger)

  • BatDynArray: uniformization of exceptions and more documentation
    #988
    (Florent Monnier, review by Francois Berenger)

  • BatDynArray: user input checks in left, right, tail
    #987
    (Florent Monnier, review by Francois Berenger)

  • Fix stack overflow on Int32/64.pow with negative exponent (issue #989)
    #990
    (Cedric Cellier, review by Francois Berenger)

  • BatList.unfold_exn is an alias for unfold_exc.
    BatRefList.find_exn is an alias for find_exc.
    #978
    (Cedric Cellier, review by Francois Berenger)

Many thanks to all contributors for this release!
The batteries team.

v3.2.0

09 Nov 02:42
Compare
Choose a tag to compare

v3.2.0 (minor release)

  • BatArray.fold_while: ('acc -> 'a -> bool) -> ('acc -> 'a -> 'acc) ->
    'acc -> 'a array -> 'acc * int
    #974
    (Francois Berenger, review by Cedric Cellier)

  • Support for OCaml 4.12
    #980
    (kit-ty-kate)

  • BatArray.fold is an alias for fold_left
    #976
    (Francois Berenger)

  • BatList.fold is an alias for fold_left
    #975
    (Francois Berenger)

  • BatArray.count_matching: ('a -> bool) -> 'a array -> int
    #972
    (Francois Berenger)

  • BatList.count_matching: ('a -> bool) -> 'a list -> int
    #816
    (Francois Berenger)

  • Provide an explicitly unthreaded package
    For Dune, provide an alternative batteries.unthreaded package
    #970
    (Jerome Vouillon)

  • BatList.findi: correct documentation
    #967
    (Francois Berenger)

  • BatOptParse.unprogify: bug fix (issue #965)
    '%prog' was replaced only once, now it is always replaced
    (in accordance with the documentation)
    #966
    (Francois Berenger, report by OnkV)

  • Expose Map.remove_exn and Set.remove_exn: 'a -> 'a t -> 'a t
    #954
    (Cedric Cellier)

v3.1.0

26 Aug 06:45
Compare
Choose a tag to compare

v3.1.0 (minor release)

This minor release adds support for OCaml 4.11.

  • Compatibility fixes for OCaml-4.11
    #962
    (Jerome Vouillon)

  • BatEnum: added combination
    #518
    (Chimrod, review by hcarty)

  • fix benchmarks
    #956
    (Cedric Cellier)

  • BatFile: added count_lines
    #953
    (Francois Berenger, review by Cedric Cellier)

  • BatArray: use unsafe_get and unsafe_set more often
    #947
    (Francois Berenger, review by Cedric Cellier)

  • fix some tests for ocaml-4.10.0
    #944
    (kit-ty-kate)

  • BatResult: BatPervasives.result is now equal to Stdlib.result
    instead of sharing constructors without being the same type
    #939, #957
    (Clément Busschaert, Cedric Cellier).

v3.0.0

17 Feb 14:50
Compare
Choose a tag to compare
v3.0.0 Pre-release
Pre-release

v3.0.0 (major release)

  • added BatSplay.find_opt and BatMap.find_opt
    #941
    (nicoTolly, review by Francois Berenger)
  • BatList and BatArray: sum of an empty container now return 0 rather than
    raising an exception.
    #519
    (Cedric Cellier, report by Simon Cruanes, review by François Berenger)
  • BatString: split_on_char and nsplit now return a sigle empty string (rather
    than an empty list) on empty strings.
    #845, #846
    (Cedric Cellier, report by Thibault Suzanne, review by François Berenger)
  • BatSeq: change Exceptionless.combine signature to make it really
    exceptionless.
    #418
    (Cedric Cellier, report by Hezekiah M. Carty, review by François Berenger)
  • BatOo: This module was unwelcomed and has been removed
    #848
    (Cedric Cellier, report by Max Mouratov, review by François Berenger)
  • BatFilename: Added to Batteries from the stdlib, with the addition of
    split_extension.
    #445
    (Cedric Cellier, report and review by François Berenger)
  • BatSet: the Infix module is no more, as it was incompatible with
    metaocaml
    #908
    (Cedric Cellier, review by Gabriel Scherer and François Berenger)
  • BatIO: make the ?cleanup parameter of BatIO.input_channel true by default:
    closing the returned input will close the underlying input channel
    #109, #489
    (Simon Cruanes, report by Michael Ekstrand)
  • BatArray: add split : 'a BatOrd.ord -> 'a array -> 'a -> int * int
    search for the range equal to a given element in a sorted array
    #443, #470
    (Simon Cruanes, Gabriel Scherer, request by François Berenger)
  • BatEnum: BatEnum.combine is now curried, just like List.combine,
    its signature changes from:
    val combine: 'a t * 'b t -> ('a * 'b) t
    to
    val combine: 'a t -> 'b t -> ('a * 'b) t
    #578
    (François Berenger)
  • PSet: add a ?cmp argument to every function that creates a PSet:
    of_enum, of_list, of_array are changed. The default value is Pervasives.compare.
    #679
    (Cedric Cellier)

v2.11.0: updated opam file

16 Dec 03:20
Compare
Choose a tag to compare

v2.11.0 (minor release)

This minor release fixes a few bugs or interface mismatch with OCaml stdlib,
and is compatible with BER MetaOCaml.

This is the last planned release of the v2 series.
Next planned release (v3.0.0) will introduce some API changes.

Notable changes:

  • Add Unix.with_locked_file
    #904
    (Simon Cruanes, Cedric Cellier, review by Francois Berenger)

  • Build with -strict-sequence
    #927
    (Armaël Guéneau, review by Francois Berenger)

  • Add Legacy.Result for OCaml >= 4.8.0
    #913
    (Cedric Cellier, review by Francois Berenger)

  • Remove BatOo
    #915
    (Cedric Cellier, review by Francois Berenger)

  • Add BatFilename
    #910
    (Cedric Cellier, review by Francois Berenger)

  • Make batteries usable with BER MetaOCaml
    #909
    (Cedric Cellier, review by Francois Berenger and Gabriel Scherer)

  • Unix.sleepf is provided across all OCaml versions;
    previously it was only for OCaml >= 4.03.0
    #930
    (Francois Berenger, review by Cedric Cellier)

v2.10.0

19 Aug 07:44
Compare
Choose a tag to compare

v2.10.0 (minor release)

This minor release adds support for OCaml 4.08.0.

This release is compatible with OCaml 4.08.0, but it is not complete
with respect to the standard library of OCaml 4.08.0: this release saw
a lot of changes to the standard library, which have not yet been made
available in the corresponding Batteries module. This means that users
of OCaml 4.08.0 (and Batteries 2.10.0) will have access to these
functions, but users of older OCaml versions (and Batteries 2.10.0)
will not. If you are looking for this kind of backward-compatibility
of new functions, as provided by previous Batteries releases, we
recommend trying the 'stdcompat' library.

  • added LazyList.equal: ('a -> 'b -> bool) -> 'a t -> 'b t -> bool
    #811
    (Marshall Abrams, review by Gabriel Scherer)

  • added BatList.fold_while : ('acc -> 'a -> bool) -> ('acc -> 'a -> 'acc) ->
    'acc -> 'a list -> 'acc * 'a list
    #889
    (Francois Berenger, Thibault Suzanne)

  • fix BatNum.of_float_string on inputs between -1 and 0:
    "-0.5" or "-.5" would be interpreted as "0.5" or ".5".
    #886, #887
    (Gabriel Scherer, report by Marcel Hark)

  • added BatHashtbl.merge and merge_all
    #891
    (Cedric Cellier, Francois Berenger, Gabriel Scherer)

Batteries 2.9.0

11 Sep 08:13
Compare
Choose a tag to compare

This minor release adds support for OCaml 4.07.0, as well as a certain
number of fixes, improvements and documentation clarification from our
contributors. Thanks in particular to Max Mouratov for his varied
contributions.

This release is compatible with OCaml 4.07.0, but it is not complete
with respect to the standard library of OCaml 4.07.0: this release saw
a lot of changes to the standard library, which have not yet been made
available in the corresponding Batteries module. This means that users
of OCaml 4.07.0 (and Batteries 2.9.0) will have access to these
functions, but users of older OCaml versions (and Batteries 2.9.0)
will not. If you are looking for this kind of backward-compatibility
of new functions, as provided by previous Batteries releases, we
recommend trying the new 'stdcompat' library by Thierry Martinez:

https://github.com/thierry-martinez/stdcompat

Full changelog:

  • add BatString.cut_on_char : char -> int -> string -> string
    (Kahina Fekir, Thibault Suzanne, request by François Bérenger)
    #807, #856

  • add BatString.index_after_n : char -> int -> string -> int
    (Kahina Fekir)

  • faster BatArray.partition
    #829
    (Francois Berenger, Gabriel Scherer)

  • add BatArray.split: ('a * 'b) array -> 'a array * 'b array
    #826
    (Francois Berenger)

  • add BatString.count_string: string -> string -> int
    #799
    (Francois Berenger)

  • Int: optimized implementation of Safe_int.mul
    #808, #851
    (Max Mouratov)

  • Fix: in case of conflicted bindings, [Map.union m1 m2] should
    prefer the value from [m2], as stated in documentation.
    #814
    (Max Mouratov)

  • Fix: [Map.update k1 k2 v m] did not work correctly when [k1 = k2].
    #833
    (Max Mouratov)

  • Fix: [Map.update k1 k2 v m] should throw [Not_found] if [k1] is not bound
    in [m], as stated in documentation.
    #833
    (Max Mouratov)

  • Fix: [Set.update x y s] should throw [Not_found] if [x] is not in [s],
    as stated in documentation.
    #833
    (Max Mouratov)

  • Fix: documentation of BatList.{hd,last} to match implementation w.r.t
    raised exceptions
    #840, #754
    (FkHina)

  • Fix: [Array.insert] should throw a more relevant message on invalid indices
    instead of the generic [invalid_arg "index out of bounds].
    The assertion is now documented.
    #841
    (Max Mouratov)

  • Implementation of [Array.insert] now uses [unsafe_get] and [unsafe_set].
    #841
    (Max Mouratov)

  • Fix documentation of [String.right].
    #849, #844
    (Max Mouratov, reported by Thibault Suzanne)

  • Fix: [Heap.del_min] should throw [Invalid_argument] with the specified
    "del_min" message instead of "find_min_tree".
    #850
    (Max Mouratov)

  • More uniform and correct [Invalid_argument] messages.
    #850
    (Max Mouratov)

  • Optimization of List.unique_cmp (using Set instead of Map).
    #852
    (Max Mouratov)

  • Documentation of List.append and List.concat should not include invalid
    estimates of stack usage.
    #854
    (Max Mouratov)

  • Implementation of String should use unsafe versions of [set] and [get].
    #836
    (Max Mouratov, review by Gabriel Scherer)

  • Fix erroneous mentions of [Different_list_size] in List.mli.
    #857, #744
    (Max Mouratov, reported by Christoph Höger)

  • fix Map.equal (for polymorphic maps) with custom equality function
    #865
    (Ralf Vogler)

  • ocamlfind plugin support in META file
    (Arlen Cox)
    #867

Batteries 2.8.0

14 Nov 06:23
Compare
Choose a tag to compare

This minor release supports the -safe-string mode for OCaml
compilation, enforcing a type-level separation between (immutable)
strings and mutable byte sequences.

  • support -safe-string compilation
    #673
    (Gabriel Scherer)

  • Support for the upcoming OCaml release 4.06
    (Gabriel Scherer)

Batteries 2.7.0

17 Aug 00:31
Compare
Choose a tag to compare

This minor release is the first to support OCaml 4.05.0. As with
previous OCaml versions, we backported new 4.05.0 convenience function
from the compiler stdlib, allowing Batteries user to use them with
older OCaml versions, and thus write backward-compatible code. In
particular, the new *_opt functions returning option values instead of
exceptions are all backported.

Detailed changelog

  • BatNum: fix of_float_string to handle negative numbers properly
    #780
    (Anton Yabchinskiy)

  • added BatArray.min_max
    #757
    (Francois Berenger)

  • added a Label module to BatVect
    #763
    (Varun Gandhi, review by Francois Berenger, Gabriel Scherer, Thibault Suzanne)

  • fix documentation of BatVect.insert to match (correct) implementation
    #766, #767
    (Gabriel Scherer, report by Varun Gandhi)

  • avoid using exceptions for internal control-flow
    #768, #769
    This purely internal change should improve performances when using
    js_of_ocaml, which generates much slower code for local exceptions
    raising/catching than the native OCaml backend.
    Internal exceptions (trough the BatReturn label) have been removed
    from the modules BatString, BatSubstring and BatVect.
    (Gabriel Scherer, request and review by Clément Pit-Claudel)

  • added BatVect.find_opt : ('a -> bool) -> 'a t -> 'a option
    and BatVect.Make.find_opt
    #769
    (Gabriel Scherer)

  • Documents exceptions for List.(min, max)
    #770
    (Varun Gandhi)

  • BatText: bugfixes in rindex{,_from} and rcontains_from
    #775
    (Gabriel Scherer)

  • Support for the new OCaml release 4.05
    the *_opt functions and List.compare_lengths, compare_length_with
    are also backported to older OCaml releases, so code using them from
    Batteries should be backwards-compatible
    #777, #779
    (Tej Chajed, Gabriel Scherer)

Batteries 2.6.0

17 Aug 00:30
Compare
Choose a tag to compare

Detailed changelog

  • added Bat{Set,Map,Splay}.any and fixed Bat{Map,Splay}.choose
    #751
    (Cedric Cellier)

  • added BatList.favg and faster BatList.fsum
    #746
    (Gabriel Scherer, Francois Berenger)

  • install .cmt and .cmti files
    #740
    (Francois Berenger, Gabriel Scherer)

  • BatMap: added find_default
    #730
    (Francois Berenger)

  • added scripts/test_install.sh
    #743
    (Francois Berenger)

  • BatHashtbl: added {to|of}_list, bindings
    #728
    (Francois Berenger, Thibault Suzanne)

  • added {BatList|BatArray}.shuffle
    #702, #707
    (Francois Berenger, Gabriel Scherer)

  • Clarification and improvements to the documentation
    #682, #685, #693
    (Florian Angeletti, Johannes Kloos, Michael Färber)

  • make LazyList.split_at lazy:
    split_at : int -> 'a t -> 'a t * 'a t
    would previously eagerly force the prefix of the list
    and only be lazy in its second returned value.
    #694
    (Michael Färber, Gabriel Scherer, Thibault Suzanne)

  • Add List.{map2i,iter2i}
    #696
    (Thibault Suzanne)

  • Added Result.{map,map_both}
    #705
    (Ifaz Kabir)

  • Add {BatSet,BatMap}.{Int,Int32,Int64,Nativeint,Float,Char,String} as
    common instantions of the respective Make functor.
    #709, #712
    (Thibault Suzanne, François Bérenger)

  • BatString: add chop : ?l:int -> ?r:int -> string -> string
    #714, #716
    (Gabriel Scherer, request by François Bérenger)

  • BatSet: make to_array allocate the resulting array at first
    instead of using Dynarray (faster, uses less memory).
    #724
    (Thibault Suzanne)

  • BatList: add fold_left_map : ('a -> 'b -> 'a * 'c) -> 'a -> 'b list -> 'a * 'c list
    #734
    (Thibault Suzanne, review by Gabriel Scherer, request by Oscar Gauthier)

  • add BatList.frange : float -> [< `To | `Downto ] -> float -> int -> float list
    frange 0. `To 1. 3 is [0.; 0.5; 1.].
    #745
    (François Bérenger)