package base
Install
Dune Dependency
Authors
Maintainers
Sources
sha256=68537496a3468e19008d422dc0a97528720a4d13aca8828a5b719ef4e4660eef
md5=e522176bc2cca7c12745539fa72356ad
CHANGES.md.html
git version
Ordered_collection_common.get_pos_len
now returns anOr_error.t
Added
Bool.Non_short_circuiting
.Added
Float.square
.Remove module
Or_error.Ok
.module
Ref
doesn't implementContainer.S1
anymore.Rename parameter of
Sequence.merge
fromcmp
tocompare
.Added
Info.of_lazy_t
Added
List.partition_result
function, to partition a list ofResult.t
valuesChanged the signature of
equal
from'a t -> 'a t -> equal:('a -> 'a -> bool) -> bool
to('a -> 'a -> bool) -> 'a t -> 'a t -> bool
.Optimized
Lazy.compare
to check physical equality before forcing the lazy values.Deprecated
Args
in theApplicative
interface in favor of usingppx_let
.Deprecated
Array.replace arr i ~f
in favor of usingarr.(i) <- (f (arr.(i)))
Rename collection length parameter of
Ordered_collection_common
functions fromlength
tototal_length
, and add a unit argument toget_pos_len
andget_pos_len_exn
.Removed functions that were deprecated in 2016 from the
Array
andSet
modules.[Int.Hex.of_string] and friends no longer silently ignore a suffix of non-hexadecimal garbage.
Added
?backtrace
argument toOr_error.of_exn_result
.List.zip
now returns aList.Or_unequal_lengths.t
instead of anoption
.Remove functions from the
Sequence
module that were deprecated in 2015.Container.Make
andContainer.Make0
now require callers to either provide a customlength
function or request that one be derived fromfold
.Container.to_array
's signature is also changed to acceptlength
anditer
instead offold
.
v0.11
Deprecated
Not_found
, people who need it can useCaml.Not_found
, but its use isn't recommended.Added the
Sexp.Not_found_s
exception which will replaceCaml.Not_found
as the default exception in a future release.Document that
Array.find_exn
,Array.find_map_exn
, andArray.findi_exn
may throwCaml.Not_found
orNot_found_s
.Document that
Hashtbl.find_exn
may throwCaml.Not_found
orNot_found_s
.Document that
List.find_exn
, andList.find_map_exn
may throwCaml.Not_found
orNot_found_s
.Document that
List.find_exn
may throwCaml.Not_found
orNot_found_s
.Document that
String.lsplit2_exn
, andString.rsplit2_exn
may throwCaml.Not_found
orNot_found_s
.Added
Sys.backend_type
.Removed unnecessary unit argument from
Hashtbl.create
.Removed deprecated operations from
Hashtbl
.Removed
Hashable.t
constructors fromHashtbl
andHash_set
, instead favoring the first-class module constructors.Removed
Container
operations fromEither.First
andEither.Second
.Changed the type of
fold_until
in theContainer
interfaces. Rather than returning aFinished_or_stopped_early.t
(which has also been removed), the function now takes afinish
function that will be applied the result iff
never returned aStop _
.Removed the
String_dict
module.Added a
Queue
module that is backed by anOption_array
for efficient and (non-allocating) implementations of most operations.Added a
Poly
submodule toMap
andSet
that exposes constructors that use polymorphic compare.Deprecated
all_ignore
in theMonad
andApplicative
interfaces in favor ofall_unit
.Deprecated
Array.replace_all
in favor ofArray.map_inplace
, which is the standard name for that sort of operation within Base.Document that
List.find_exn
, andList.find_map_exn
may throwCaml.Not_found
orNot_found_s
.Make
~compare
a required argument toList.dedup_and_sort
,List.dedup
,List.find_a_dup
,List.contains_dup
, andList.find_all_dups
.Removed
List.exn_if_dup
. It is still available in core_kernel.Removed "normalized" index operation
List.slice
. It is still available in core_kernel.Remove "normalized" index operations from
Array
, which inclucedArray.normalize
,Array.slice
,Array.nget
andArray.nset
. These operations are still available in core_kernel.Added
Uniform_array
module that is just like anArray
except guarantees that the representation array is not tagged withDouble_array_tag
, the tag for float arrays.Added
Option_array
module that allows for a compact representation of'a optoin array
, which avoids allocating heap objects representingSome a
.Remove "normalized" index operations from
String
, which inclucedString.normalize
,String.slice
,String.nget
andString.nset
. These operations are still available in core_kernel.Added missing conversions between
Int63
and other integer types, specifically, the versions that return options.Added truncating versions of integer conversions, with a suffix of
_trunc
. These allow fast conversions via bit arithmetic without any conditional failure; excess bits beyond the width of the output type are simply dropped.Added
Sequence.group
, similar toList.group
.Reimplemented
String.Caseless.compare
so that it does not allocate.Added
String.is_substring_at string ~pos ~substring
. Used it as back-end foris_suffix
andis_prefix
.Moved all remaining
Replace_polymorphic_compare
submodules from Base types and consolidated them in one place withinImport0
.Removed
(<=.)
and its friends.Added
Sys.argv
.Added a infix exponentation operator for int.
Added a
Formatter
module to reexport theFormat.formatter
type and updated the deprecation message forFormat
.
v0.10
(Changes that can break existing programs are marked with a "*")
Bugfixes
Generalized the type of
Printf.ifprintf
to reflect OCaml's stdlib.Made
Sequence.fold_m
anditer_m
respectSkip
steps and explicitly bind when they occur.Changed
Float.is_negative
andis_non_positive
onNaN
to returnfalse
rather thantrue
.Fixed the
Validate.protect
function, which was mistakenly raising exceptions.
API changes
Renamed
Map.add
asset
, and deprecatedadd
. A later feature will addadd
andadd_exn
in the style ofHashtbl
.A different hash function is used to implement [Base.Int.hash]. The old implementation was [Int.abs] but collision resistance is not enough, we want avalanching as well. The new function is an adaptation of one of the Thomas Wang hash functions to OCaml (63-bit integers), which results in reasonably good avalanching.
Made
open Base
expose infix float operators (+., -., etc.).
Renamed
List.dedup
toList.dedup_and_sort
, to better reflect its existing behavior.
Added
Hashtbl.find_multi
andMap.find_multi
.Added function
Map.of_increasing_sequence
for constructing aMap.t
from an orderedSequence.t
Added function
List.chunks_of : 'a t -> length : int -> 'a t t
, for breaking a list into chunks of equal length.Add to module
Random
numeric functions that take upper and lower inclusive bounds, e.g.Random.int_incl : int -> int -> int
.
Replaced
Exn.Never_elide_backtrace
withBacktrace.elide
, aref
cell that determines whetherBacktrace.to_string
andBacktrace.sexp_of_t
elide backtraces.
Exposed infix operator
Base.( @@ )
.Exposed modules
Base.Continue_or_stop
andFinished_or_stopped_early
, used with theContainer.fold_until
function.Exposed module types Base.T, T1, T2, and T3.
Added
Sequence.Expert
functionsnext_step
anddelayed_fold_step
, for clients that want to explicitly handleSkip
steps.Added
Bytes
module. This includes the submodulesFrom_string
andTo_string
with blit functions. N.B. the signature (and name) ofunsafe_to_string
andunsafe_of_string
are different from the one in the standard library (and hopefully more explicit).Add bytes functions to
Buffer
. Also addedBuffer.content_bytes
, the analog ofcontents
but that returnsbytes
rather thanstring
.
Enabled
-safe-string
.
Added function
Int63.of_int32
, which was missing.
Deprecated a number of
String
mutating functions.
Added module
Obj_array
, moved in fromCore_kernel
.
In module type
Hashtbl.Accessors
, removed deprecated functions, moving them into a new module type,Deprecated
.
Exported
sexp_*
types that are recognized byppx_sexp_*
converters:sexp_array
,sexp_list
,sexp_opaque
,sexp_option
.
Reworked the
Or_error
module's interface, moving theContainer.S
interface to anOk
submodule, and adding functionsis_ok
,is_error
, andok
to more closely resemble the interface of theResult
module.
Removed
Int.O.of_int_exn
.Exposed
Base.force
function.Changed the deprecation warning for
mod
to recommend( % )
rather thanCaml.( mod )
.
Performance related changes
Optimized
List.compare
, removing its closure allocation.Optimized
String.mem
to not allocate.Optimized
Float.is_negative
,is_non_negative
,is_positive
, andis_non_positive
to avoid some boxing.Changed
Hashtbl.merge
to relax its equality check on the input tables'Hashable.t
records, checking physical equality componentwise if the records aren't physically equal.Added
Result.combine_errors
, similar toOr_error.combine_errors
, with a slightly different type.Added
Result.combine_errors_unit
, similar toOr_error.combine_errors_unit
.Optimized the
With_return.return
type by adding the[@@unboxed]
attribute.Improved a number of deprecation warnings.
v0.9
Initial release.