package containers
Install
Authors
Maintainers
Sources
md5=d74226924b65697a8558eb34a6074417
sha512=d5094e362f9ad7fe91aa060ef5c9805812cf888b326f0f0070f929205a83169a64c78dfce58a2ec0da77555b21c69a1f287fb38da9867cd6b16507f6c20fa666
CHANGELOG.md.html
Changelog
3.12
add
containers.pp
sublibrary, with Wadler-style pretty printing combinatorsadd
CCArray.{max,argmax,min,argmin}
and their _exn counterpartsadd
CCParse.take_until_success
add
Option.flat_map_l
add
CCSet.{find_first_map,find_last_map}
CCHash
: native FNV hash for int64/int32fix bugs in CCParse related to
recurse
andSlice
fix: fix Set.find_last_map on OCaml 4.03
fix: make sure
Vector.to_{seq,gen}
captures the length initially
3.11
official OCaml 5 support
add
CCFun.(let@)
(if OCaml >= 4.08)add
CCHet.Tbl.{clear,reset}
fix(CCVector): concurrent modification safety in
resize_with
fix(CCVector): always obtain a copy of array before using unsafe_{set,get}
CI: add ocaml 5.0.x
3.10
CCArray
: addmapi_inplace
add sublibrary
containers.scc
for strongly connected componentsCCSeq
: addconcat_map
CCSeq
: add some missing function from 4.14add
CCInt64.{hash,hash_to_int64}
Ref
: addprotect
functionfix: include
Seq
inCCSeq
for ocaml >= 4.07
3.9
feat: add
Containers_cbor
modulefeat(CCInt32): add popcount function
feat(CCInt64): add
popcount
operationCCBV:
more extensive test suite
use
bytes
underneath, not an array of integers
add
containers_testlib
, removing qtest and ounit.cbor
: use int64 as main int typefix: handle uppercase in string/hex
3.8
add
Containers_bencode
for lightweight (de)serperf(CCHash): improve a bit commutative hashing of arrays/lists
perf(CCHash): only hash prefix of string/bytes
feat(CCList): Add
Assoc.{keys,values,map_values}
feat(CCArray): add
CCArray.map_inplace
add
CCString.{to_hex,of_hex}
fix(Atomic): prevent race conditions under flambda, for now
3.7
add
Format.styling
make
Format
compatible with OCaml 5.0, using Stag for colorsnew preprocessor, compatible with merlin, using
[@@@ifge 4.12]
-style pragmasfeat: add
Byte_buf
, a byte buffer.add
CCSeq.{zip_i,of_string}
add
CCResult.opt_map
to simplify result function application over optionals (#397)add shims for Atomic and Unit
expose
CCParse.pos
to get current pos; improve perfadd
CCVector.resize_with
andCCVector.resize_with_init
, tests and doc (#389)add
CCVector.insert
update dune to 1.10, condition some rules to unix
perf: reduce allocations in
CCSeq.to_array
fix asymptotic behavior of resize functions in
CCVector
fix: rely on
either
compatibility library
3.6.1
use
either
compatibility library instead of shims
3.6
rename
CCOpt
toCCOption
and deprecateCCOpt
add iterator functions to
CCIO
CCOrd
: addpoly
, deprecatecompare
add
CCIO.File.walk_iter
CCParse
: heavy refactoring, many new functionsbacktracking by default
add
slice
and the ability to recurse on themexpose Position module, add
or_
,both
,lookahead
,U.bool
example Sexpr parser, and a test
example and test of an IRC log parser
fix bug in
CCIO.read_lines_seq
3.5.1
fix bug in
CCIO.read_lines_seq
(backported from 3.6)
3.5
add
CCHash.map
andCCHash.bytes
CCIO: add many
Seq.t
based functionsCCUtf8string: add
{make,empty,of_uchar}
add
CCFormat.{const_string,opaque}
add
CCOpt.{some,none}
CCFormat: expose
ANSI_codes
moduleCCBV: add
equal
, refactor for performance and readabilityCCList: add
{sorted_diff_uniq,sorted_mem,sorted_diff,sorted_remove}
fix(bv): index error in union
test: add some property tests on
Csexp/Canonical_sexp
bv: add more tests, including regression for #370
3.4
Add
CCOpt.get_exn_or
and deprecateCCOpt.get_exn
CCRAL: add
get_and_remove_exn
operationCCString: add
CCString.uniq
refactor
CCHash
to use FNV in many combinatorsCCInt: improve perf by using a single implementation of popcount using int64
fix: CCRAL.remove does not always remove
fix(sexp): re-export the
loc
type to the functor's argument's typerefactor and clarify
cutoff
inString.edit_distance
fix(CCInt): make sure hash is always positive
big upgrade to CI thanks to @Fardale
3.3
feat: add code-generator for optimal bitfields; add tests
new Canonical sexpr module with printer and parser
CCSeq: Add
for_all
andexists
feat(sexp): expose last location in decoder
feat(CCChar): add CCChar.Infix
feat(CCString): add CCString.foldi
feat(CCFormat): add
string_lines
combinatorfeat(CCList): update with regards to
partition_map
add
CCList.cons'
implement {of,add}_*_with family of function in
CCMap
with update (#352)add
CCMap.of_{list,iter,seq}_with
functionsadd
CCHashtbl.{of,add}_{list,seq,iter}_with
Fix integer overflow warning on jsoo (#346)
updated fuzzer scripts
Containers-thread
refactor(pool): less locking, fix deadlock, more parallelism
feat(pool): keep one idle thread
small optim in
Pool.sequence_a
3.2
add CCEither module
add
CCList.chunks
add iter/seq functions to
CCString
add
CCList.reduce
(resolves #305)fix: in
CCInt
pick popcount at runtime on 64 bitsfix: in shims, use configurator properly to determine int size
in
CCFormat
, addappend
,append_l
, infix++
for sequencing,space
,break
,cut
fix: in
CCSexp
, handle non-ascii escapes in stringsCCUtf8_string
: add and exposeuchar_to_bytes
enable auto deploy of doc
improve CI: test core on non ubuntu platform, test all on ubuntu
update readme
CCImmutArray: add tests (#344)
add fuzzing (#339)
add stronger test to compare with uutf in ccutf8string
3.1
add
List.combine_chop
and corresponding(and&)
synchronized productchore: remove travis to use github CI instead
add
CCList.mguard
function for list comprehensionsadd some basic tests to CCMutHeap
un-specify order of elements in
CCMap.to_list
Move definition of
CCMap.update
so that it is shadowed by Stdlib.Map.updatefix(intmap): order of arguments for the HO param should be stable
feat(containers-data): add
CCMutHeap
mutable heap with increase/decrease
3.0.1
fix build on 32 bits architectures
3.0
Breaking changes
see https://github.com/c-cube/ocaml-containers/issues/290 for a summary of a subset of these changes.
packaging:
split the library into separate packages
containers
,containers-data
, andcontainers-thread
.delete
containers.iter
and merge parts of it intocontainers-data
;move
CCSexp
into the core library, removecontainers.sexp
.
api:
remove slice APIs in string and array.
change pp functions to take unit printer for sep/stop/start (#295)
CCPair: use more standard name for some map functions (#316)
add CCSeq module, mostly adapted from
CCKlist
remove
CCKlist
from everywhereCCGraph: remove deprecated module and function
rename
<op>_std_seq
to<op>_seq
, makingSeq.t
the standard everywhere; remove the old<op>_seq
that were previously deprecated in favor of<op>_iter
.CCVector: rename
shrink
intotruncate
CCVector: rename
remove to CCVector.remove_unordered
CCList: make mem compatible with the Stdlib by making
?eq
optionalCCVector: rename
filter'
intofilter_in_place
Other changes
CI: add github actions in addition to travis
feat: add infix operators to
String
feat: add opt.bind
CCResult: add
<$>
operatorCCResult: add
get_lazy
put infix operators in
Infix
module, then include itccnativeint: complete CCNativeint with regards to CCInt
Int64: complete CCInt64 with regards to CCInt
CCInt32: complete CCInt32 with regards to CCInt
implement
CCInt.sign
usingCCInt.compare
CCInt: include module Int for ocaml >= 4.08
CCInt: add
of_float
CCInt: add
of_string_exn
add
CCResult.get_lazy
add
Int.popcount
operatorCCFloat: add
pi
CCFloat: add
of_string_opt
fix: expose
always_eq
/never_eq
inCCEqual
string: add optional
cutoff
arg onString.edit_distance
CCVector: add
remove_and_shift
CCArray: add optional argument eq to mem
CCSexp: Escape empty atoms
substitute 'Pervasives' with 'Stdlib'
CCFormat: add
exn
combinatorIO: add
copy_into
for transferring data between channelsExtend benchmark:
to_array
, cons andcons_fold
Extend benchmark: Sek, iter and pop
benchmark for memory usage of data structures
And many, many bugfixes.
2.8.1
add missing
CCVector.of_iter
2.8
Breaking:
bump minimum version of OCaml to 4.03, drop deps
{result,uchar}
deprecate
{of,to}_seq
a bit everywheredeprecate
CCKList
as it's subsumed bySeq
feat: on
>= 4.08
, support let+ and let* operatorsfeat(list): add indexed functions and
fold_on_map
refactor: also port
CCGraph
to iterfeat: add
{to,of,add}_{iter,std_seq}
where relevantfeat(unix): add
ensure_session_leader
and add some docsfeat(pool): add infix operators on futures
fix(pp): improve printing of hashtables
feat: add
monoid_product
to Array and Vectorimproved gc behavior for
CCvector
deprecate
CCVector.fill_empty_slots_with
CCVector.shrink_to_fit
to limit memory usageadd
CCVector.clear_and_reset
feat(sexp): expose
parse_string_list
and the list decoderadd
CCUnix.with_temp_dir
functiondeprecate
CCOpt.to_seq
, provideto_iter
insteadadd
CCOpt.value
to improve compat withStdlib.Option
add
CCVector.mapi
fix: restore
CCSexp.atom
andlist
which was lost in 2.7fix(sexp): set location properly when parsing a file
fix: properly alias to
CCChar
in containers.mluse older dune dialect
remove unlabel, remove all traces of Result
require dune configurator explicitly in opam
Re-enable mdx tests
fix benchs so they don't depend on clarity and they compile again
2.7
deprecate CCKList in favor of the standard Seq
CCIO: add
_gen
suffixes to some functionsccsexp: provide ability to annotate parsed S-exprs with their position
ccsexp: functorize the parser/printer
ccsexp: support
#;
for commenting a sexpfix: remove dep from vec to list
add
to_string
to many modules (#270)add
CCDeque.{remove_*;update_*}
,CCDeque.{*_opt}
add
CCDeque.{filter,filter_map}
add
CCDeque.filter_in_place
add
CCBool.{to,of}_int
add
Result.flatten_l
to turn a list of results into a result of listrefactor: remove stdlib's code, simple reimplementation of
Stdlib.Fun
add
CCArray.Infix
Document behaviour of
Fun.finally
when finaliser raisestravis: test on OCaml 4.09, too.
more docs for IO
2.6.1
bugfix release:
fix(parse): error in
many
chore: add 4.08 to travis
fix
Containers.Stdlib
on OCaml 4.07
2.6
introduce shim modules for 4.08 compat
remove reference to sequence, use
iter
instead for testsadd
remove
function to het map/tblmissing type annotation for specializing int.compare
doc: fix bad example in CCIO
use
iter
, notsequence
, in testsfix: use same evaluation order as stdlib for
CCList.init
fix: make
Array.random_choose
fail on empty array at creation timebreaking: make
Array.random_choose
raise invalid_arg instead of not_foundmigrate readme to .md, using mdx to test it
2.5
perf: annotate types in monomorphic/float/int to help specialize builtins
use GADT to discard impossible case on
CCFQueue
(@dinosaure).fix(funvec): expose
pop
, fix off by one error
2.4.1
revert some compatibility-breaking changes in label modules
2.4
breaking:
rename
Random.sample_without_{replacement,duplicates}
Features
add
CCResult.iter_err
add
CCEqual.{always,never}_eq
add
containersLabels.ml
, generate unlabelled interfaces from labelled onesadd
CCEqualLabels
add
CCArray_sliceLabels
add
CCStringLabels
add
CCResult.get_or_failwith
add
CCInt.( ** )
for integer exponentiationadd
List.counts
, related toList.count
(#230)migrate to dune
migrate to opam2
add CODE_OF_CONDUCT.md
Fixes
#235: release memory in vector/ringbuffer (thanks to @copy)
remove spurious
Labels
moduledoc: fix small inaccuracy in comments and API
test: improve perf by changing random gens
2.3
feat(vector): add
Vector.{filter,filter_map}_in_place
perf(hashtrie): use int64 for 64-bits branching factor and popcount
feat(intmap): add
CCIntMap.{filter,filter_map,merge,is_empty}
Add
CCHeap.Make_from_compare
(#225)add relational ops
CCList.{group_by,join,join_by,join_all_by,group_join_by}
fix(float): make
Float.{min,max}
compliant with revised IEEE754fix(build): remove
[@inline]
attributes since they break on 4.02.3Fix Int32 and Int64 operators that are not visible (#224)
some performance tweaks in Vector
test(float): add some tests for FP min/max
2.2
Improving comments presentation
Add
CCOpt.return_if
Add
CCOpt.flatten
Add
CCString.{,r}drop_while
add many missing functions to
CCListLabels
test: consistency
CCList{,Labels}
fix(arrayLabels): compatibility with 4.07
fix: compatibility for CCArrayLabels
test: add compatibility checks between
CCArray{,Labels}
2.1
make
CCInt64
compatible withInt64
(breaking!) (closes #192)Add
CCBijection
in containers.datafeat(mono): add dotted comparison operators for floats
add
?margin
parameter toCCFormat.ksprintf
add
CCUtf8_string
with basic encoding and decoding functionalitiesAdd
CCLazy_list.<|>
Adding
CCNativeint
enrich
CCInt.Infix
to get a uniform interface withCCInt{32,64}
add
CCInt{32,64}.Infix
Adding CCInt32 module
add
CCHash.combine{5,6}
Add infix operators to CCFloat
feat(list): add
{interleave,intersperse}
(closes #191)add missing signatures of
CCArrayLabels
(closes #193)Add CCFun.iterate
add experimental
CCFun_vec
data structure for fast functional vectorsfix: strong type aliases in Random (closes #210)
use standard
List.sort_uniq
remove explicit dep on
bytes
in jbuild filesupdate printers names in containers.top (closes #201)
Enable support for Travis CI and Appveyor
test deps are required when we run tests
point to JST's blog post on poly compare
2.0
breaking
move to jbuilder (closes #165), requiring at least OCaml 4.02
become defensive w.r.t polymorphic operators:
Internally shadow polymorphic operators and functions from Pervasives by
include CCMonomorphic
inContainers
moduleShadow the physical equality operator
Shadow polymorphic functions in
CCList
rename
print
topp
for Format printers (closes #153, #181)remove
CCFlatHashtbl
others
many typos and style fixes (from Fourchaux)
Add
CCList.iteri2
andCCList.foldi2
remove
PARAM.min_size
inCCPool
Add
CCEqual.physical
Avoid uses of the polymorphic operators
Add a
CCMonomorphic
module shipped into acontainers.monomorphic
librarymake complexity of
Array.lookup
explicit (closes #174)add
CCFormat.lazy_{or,force}
for printing thunksnow that ocaml >= 4.02 is required, use
Format.pp_print_text
directlyadd
CCHeap.delete_{one,all}
add
CCList.tail_opt
remove qtest makefile and use a script instead
add many tests
fix bug in
CCRAL.drop
(see #184)CCFormat
: fix support of unrecognized stylesfix bug: don't reverse twice in
CCList.repeat
1.5.1, 1.5.2
re-export
Format
types and functions inCCFormat
1.5
have
CCList.{get,insert,set}_at_idx
work with negative indicesAdd CCCache.add
missing function in
CCListLabels
Allow negative indexes in CCList.remove_at_idx
add an optional
drop
parameter to string-splitting functionsadd
Hash.const0
for trivial hash function that ignores its inputimprove compatibility with the stdlib
Add List.count
Add String.is_empty
add missing compatibility functions:
{assoc_opt,assq_opt}
backport some functions added in 4.05 in
CCList
add functions from 4.05 into
CC{Map,Set}
Implement
CCImmutArray.sub
bugfix in
CCTrie.Make
: Remove polymorphic comparisonremove dependency on cppo
add travis support
update doc of
CCList.cartesian_product
, which returns results in unspecified order (close #154)fix containers.top (closes #155)
1.4
add
CCMap.union
add
CCRef.swap
add
CCArray.swap
change signature of
CCWBTree.get_rank
add
CCWBTree.get_rank{,_exn}
more efficient
List.map
Using efficient chunking algorithmFix
CCVector.append_array
(empty vector case)CCFQueue.take_back_exn
raised InvalidArg instead of Empty on an empty queuefaster
CCString.{prefix,suffix}
speed improvements and benchmarks for
CCString.{prefix,suffix}
add ocp-indent file
fix
CCFun.tap
example in docspecify behavior of
CCFQueue.take_{front,back}_l
in some corner casesMore tests for CCVector.append and CCVector.append_array
assertions and cleanup in
CCPool
1.3
deprecate
CCBool.negate
add
CCString.compare_natural
(closes #146)add callbacks in
CCCache.with_cache{,_rec}
(closes #140)tail-rec
CCList.split
(by @bikalgurung, see #138)change
CCRingBuffer.peek_{front,back}
to return options (closes #127)add
CCRingBuffer.is_full
add
CCArray.find_map{,_i}
, deprecated older names (closes #129)add
CCList.{keep,all}_{some,ok}
(closes #124)large refactor of
CCSimple_queue
(close #125)add
CCSimple_queue
to containers.datasmall change for consistency in
CCIntMap
bugfix in
CCRingBuffer.skip
, and corresponding testscleanup and refactor of
CCRingBuffer
(see #126). Add strong tests.add rich testsuite to
CCIntMap
, based on @jmid's work
1.2
make many modules extensions of stdlib (close #109) the modules are:
String List ListLabels Array ArrayLabels Char Random
add
CCString.{l,r}trim
(close #121)add
CCInt.floor_div
andCCInt.rem
add test and bugfix for
CCBV
add
CCList.take_drop_while
(close #120)add
CCstring.equal_caseless
(close #112)add alias
CCString.split
(close #115)add
CCFormat.text
(close #111)add
CCFormat.{newline,substring}
add
CCList.combine_gen
(close #110)add module
CCEqual
add
CCResult.fold_ok
(closes #107)add
CCFormat.with_color_ksf
for colored printingadd
CCInt.range{,',by}
for iterating on integer rangesadd
CCString.Sub.get
add
CCResult.add_ctx{,f}
for replacing stack tracesadd
CCString.split_on_char
add
CCArray.{fold_map,scan_left}
(close #101)add
CCList.scan_left
add
CCList.{cartesian_product,map_product_l}
add
CCUnix.with_file_lock
for locking whole filesadd
CCFormat.of_chan
add
CCFormat.flush
Add
{map_lazy, or_, or_lazy, to_result, to_result_lazy, of_result}
toCCOpt
annotations in
CCEqual
, for optimizationAdd a tail-recursive implementation of
List.combine
fix too restrictive type in
CCResult
build unix support by default
bugfix and test for
CCZipper.is_focused
(closes #102)use boxes in
CCFormat.Dump
for tuplesupdate header, and use more
(##)
inCCIntMap
1.1
bugfixes:
fix bug in
CCGraph
(in DFS traversal)fix bug in
CCOpt.filter
(close #100)
new features:
add
CCHeap.to_seq_sorted
add
CCHeap.to_list_sorted
add
CCIO.File.walk_l
cleanup and doc:
remove dead code
new test for
CCPool
new test and small readme section on
CCParse
remove CCError from tutorial
merge tutorial into readme, cleanup
1.0
See https://github.com/c-cube/ocaml-containers/issues/84 for an overview.
Breaking and Removals:
simplify and cleanup of CCGraph
remove poly-variant based errors, use
result
everywhereremove deprecated functions and modules
remove
CCVHashconsedSet
remove
CCAllocCache
remove
CCBloom
update benchmarks (ignoring hamt); remove useless old script
simplify
CCHash
, changing the type to'a -> int
, relying onHashtbl.seeded_hash
for combining hashessplit
CCList.Zipper
into its own module,CCZipper
in containers.datachange argument ordering in
CCList.Assoc
remove
CCList.Idx
, rename its functions to toplevelremove
CCList.Set
, move functions to toplevel and rename themrewrite
CCBitField
with a much simpler interfacesplit
CCArray.Sub
intoCCArray_slice
remove containers.string
remove CCParse and CCKMP (will be replaced in core)
CCFormat
:remove
start/stop
args, makesep
aunit printer
many other improvements and additions
add
CCFormat.tee
add
CCFormat.Dump.{result,to_string}
replace
or_
bydefault
in labelled functionsremove trailing
_
inCCOrd
primitivesremove
containers.io
(deprecated for a while)remove
containers.bigarray
remove
CCSexpM
, use ocamllex for a much simplerCCSexp
using ocamllexadd
CCParse
into core, a simple, lightweight version of parser combsremove
CCPrint
, useCCFormat
instead (also, update tests relying on it)remove containers.advanced
change type of
CCUnix.escape_str
Additions:
CCHashtbl
:CCHash.{list,array}_comm
CCHashtbl.Poly
and fix issue in Containers (close #46)CCHashtbl.get_or_add
CCList.sublists_of_len
(close #97)Char.{of_int{,_exn},to_int}
(close #95)Add
CCResult.{is_ok,is_error}
improve
CCUnix
a bitupdate
containers.ml
so as to include all core containersadd
CCOrd.Infix
use
Labels
versions ofCCList
andCCArray
add
CCString.edit_distance
expose
CCString.Find
for efficient sub-string searching
Bugfixes:
CCIO
: deal properly with broken symlinks and permission errorstest for #94 (using Thread.yield to trigger segfault) Fix
CCSemaphore.with_acquire
: release a non locked mutex is UBcontainers.top: remove printers on structural types (#71)
add doc for
of_list
in relevant modules (close #85)bugfix: do not use
Sequence.flatMap
(close #90)
0.22
threads/CCLock: add
try_with_lock
to wrapMutex.try_lock
Add
CCMultiSet.remove_all
document errors in
CCIO
(close #86)use the new qtest/qcheck
0.21
(breaking) make default
start
/stop
arguments empty in printers (#82)add
CCFormat.{with_color_sf,fprintf_dyn_color,sprintf_dyn_color}
add
CCFormat.Dump
for easy debugging (see #82)add
CCArray.Sub.to_list
add
CCArray.{sorted,sort_indices,sort_ranking}
(closes #81)handle
\r
in CCSexpM (fixes #83)add alias
Containers.IO
bugfixes in
CCArray.Sub
bugfix + tests for
CCArray.Sub.sub
disable parallel build to support cygwin
0.20
bugfix in
CCArray.equal
fix
CCString.*_ascii
; addCCChar.{upper,lower}case_ascii
add functions in
CCArray
: fold2,iter2,map2add
CCArray.rev
add
CCFloat.round
add
CCVector.append_gen
add
CCList.{head_opt,last_opt}
add
CCInt.{print_binary,to_string_binary}
+ tests (thanks @gsg)more general types for
CCArray.{for_all2,exists2}
more general type for
CCResult.map_or
0.19
add regression test for #75
Fix
CCString.Split.{left,right}
(#75)additional functions in
CCMultiSet
show ocaml array type concretely in
CCRingBuffer.Make
sigcleanup and more tests in
CCHeap
fix bugs in
CCFlatHashtbl
, add some testsadd more generic printers for
CCError
andCCResult
(close #73)add
CCstring.of_char
update headers
0.18
update implem of
CCVector.equal
add
CCOpt.get_or
with label, deprecatesget
add
CCArray.get_safe
(close #70)add
CCGraph.is_dag
add aliases to deprecated functions from
String
, addFun.opaque_identity
add
CCLazy_list.take
add
Lazy_list.filter
add
CCList.range_by
0.17
potentially breaking
change the semantics of
CCString.find_all
(allow overlaps)
Additions
add
CCString.pad
for more webscaleadd
(--^)
to CCRAl, CCFQueue, CCKlist (closes #56); addCCKList.Infix
add monomorphic signatures in
CCInt
andCCFloat
add
CCList.{sorted_insert,is_sorted}
add
CCLazy_list
in containers.iter (with a few functions)add
CCTrie.longest_prefix
provide additional ordering properties in
CCTrie.{above,below}
add
CCOpt.if_
have
CCRandom.split_list
fail onlen=0
CCRandom.sample_without_replacement
fail ifn<=0
add
CCOpt.{for_all, exists}
add
CCRef.{get_then_incr,incr_then_get}
add
Result.{to,of}_err
add
CCFormat.within
add
map/mapi
to some of the map types.add
CCString.{drop,take,chop_prefix,chop_suffix,filter,filter_map}
add
CCList.fold_filter_map
add
CCIO.File.with_temp
for creating temporary filesadd
{CCArray,CCVector,CCList}.(--^)
for right-open rangesadd
Containers.{Char,Result}
modify
CCPersistentHashtbl.merge
and addCCMap.merge_safe
add
CCHet
, heterogeneous containers (table/map) indexed by keysadd
CCString.rev
add
CCImmutArray
into containers.dataadd
CCList.Assoc.remove
Fixes, misc
Make
CCPersistentHashtbl.S.merge
more general.optimize KMP search in
CCString.Find
(hand-specialize code)bugfix in
CCFormat.to_file
(fd was closed too early)add a special case for pattern of length 1 in
CCString.find
more tests, bugfixes, and benchs for KMP in CCString
in CCString, use KMP for faster sub-string search; add
find_all{,_l}
others:
watch
target should build alladd version constraint on sequence
migrate to new qtest
add an
IO
section to the tutorialenable
-j 0
for ocamlbuild
0.16
breaking
change the signature of
CCHeap.{of_gen,of_seq,of_klist}
change the API of
CCMixmap
make type
CCHash.state
abstract (used to beint64
)optional argument
~eq
toCCGraph.Dot.pp
rename
CCFuture
intoCCPool
deprecations
deprecate
containers.bigarray
deprecate
CCHashtbl.{Counter,Default}
tablesdeprecate
CCLinq
in favor of standaloneOLinq
(to be released)
bugfixes
fix wrong signature of
CCHashtbl.Make.{keys,values}_list
missing constraint in
CCSexpM.ID_MONAD
new features
add a tutorial file
add a printer into CCHeap
add
{CCList,CCOpt}.Infix
modulesadd
CCOpt.map_or
, deprecatingCCopt.maybe
add
CCFormat.sprintf_no_color
add
CCFormat.{h,v,hov,hv}box
printer combinatorsadd
CCFormat.{with_color, with_colorf}
add
CCList.hd_tl
add
CCResult.{map_or,get_or}
add
CCGraph.make
and utilsadd
CCHashtbl.add_list
add counter function in
CCHashtbl
, to replaceCCHashtbl.Counter
add
CCPair.make
add
CCString.Split.{left,right}_exn
add
CCIO.File.{read,write,append}
for quickly handling filesadd
CCRandom.pick_{list,array}
add
CCList.Assoc.update
add
CCList.Assoc.mem
add
{CCMap,CCHashtbl}.get_or
for lookup with default valueadd
CCLock.{decr_then_get, get_then_{decr,set,clear}}
rename
CCFuture
intoCCPool
, expose the thread poolsplit
CCTimer
out ofCCFuture
, a standalone 1-thread timermove
CCThread.Queue
intoCCBlockingQueue
add
CCResult
, with dependency onresult
for retrocompatadd
CCThread.spawn{1,2}
add many helpers in
CCUnix
(for sockets, files, and processes)add
CCFun.finally{1,2}
, convenience aroundfinally
add
CCLock.update_map
add
CCLock.{incr_then_get,get_then_incr}
add breaking space in
CCFormat.{pair,triple,quad}
update
examples/id_sexp
so it can read on stdinadd
CCList.fold_map2
0.15
breaking changes
remove deprecated
CCFloat.sign
remove deprecated
CCSexpStream
other changes
basic color handling in
CCFormat
, using tags and ANSI codesadd
CCVector.ro_vector
as a convenience aliasadd
CCOrd.option
add
CCMap.{keys,values}
add wip
CCAllocCache
, an allocation cache for short-lived arraysadd
CCError.{join,both}
applicative functions for CCErroropam: depend on ecamlbuild
work on
CCRandom
by octachron:add an uniformity test
Make
split_list
uniformAdd sample_without_replacement
bugfix: forgot to export
{Set.Map}.OrderedType
inContainers
0.14
breaking changes
change the type
'a CCParse.t
with continuationsadd labels on
CCParse.parse_*
functionschange semantics of
CCList.Zipper.is_empty
other changes
deprecate
CCVector.rev'
, renamed intoCCVector.rev_in_place
deprecate
CCVector.flat_map'
, renamedflat_map_seq
add
CCMap.add_{list,seqe
add
CCSet.add_{list,seq}
fix small ugliness in
Map.print
andSet.print
add
CCFormat.{ksprintf,string_quoted}
add
CCArray.sort_generic
for sorting over array-like structures in placeadd
CCHashtbl.add
mimicking the stdlibHashtbl.add
add
CCString.replace
and testsadd
CCPersistentHashtbl.stats
reimplementation of
CCPersistentHashtbl
add
make watch
targetadd
CCVector.rev_iter
add
CCVector.append_list
add
CCVector.ensure_with
add
CCVector.return
add
CCVector.find_map
add
CCVector.flat_map_list
add
Containers.Hashtbl
with most combinators ofCCHashtbl
many more functions in
CCList.Zipper
large update of
CCList.Zipper
add
CCHashtbl.update
improve
CCHashtbl.MakeCounter
add
CCList.fold_flat_map
add module
CCChar
add functions in
CCFormat
add
CCPrint.char
add
CCVector.to_seq_rev
doc and tests for
CCLevenshtein
expose blocking decoder in
CCSexpM
add
CCList.fold_map
add
CCError.guard_str_trace
add
CCError.of_exn_trace
add
CCKlist.memoize
for costly computationsadd
CCLevenshtein.Index.{of,to}_{gen,seq}
andcardinal
small bugfix in
CCSexpM.print
fix broken link to changelog (fix #51)
fix doc generation for
containers.string
bugfix in
CCString.find
raise exception in
CCString.replace
ifsub=""
bugfix in hashtable printing
bugfix in
CCKList.take
, it was slightly too eager
0.13
Breaking changes
big refactoring of
CCLinq
(now simpler and cleaner)changed the types
input
andParseError
inCCParse
move
containers.misc
andcontainers.lwt
into their own repochange the exceptions in
CCVector
change signature of
CCDeque.of_seq
Other changes
add module
CCWBTree
, a weight-balanced tree, incontainers.data
.add module
CCBloom
incontainers.data
, a bloom filternew module
CCHashTrie
incontainers.data
, HAMT-like associative mapadd module
CCBitField
incontainers.data
, a safe abstraction for bitfields of< 62 bits
add module
CCHashSet
intocontainers.data
, a mutable setadd module
CCInt64
move module
RAL
intocontainers.data
asCCRAL
new module
CCThread
incontainers.thread
, utils for threading (+ blocking queue)new module
CCSemaphore
incontainers.thread
, with simple semaphoreadd
containers.top
, a small library that installs printersadd
CCParse.memo
for memoization (changesCCParse.input
)add
CCString.compare_versions
update
CCHash
with a functor and module type for generic hashingadd
CCList.{take,drop}_while
; improve map performanceadd
CCList.cons_maybe
add
CCArray.bsearch
(back from batteries)add fair functions to
CCKList
deprecate
CCList.split
, introduceCCList.take_drop
instead.add
CCKtree.force
add tests to
CCIntMap
; now flagged "stable" (for the API)add
CCOpt.choice_seq
add
CCOpt.print
add
CCIntMap.{equal,compare,{of,to,add}_{gen,klist}}
add
CCThread.Barrier
for simple synchronizationadd
CCPersistentArray.{append,flatten,flat_map,of_gen,to_gen}
add
CCDeque.clear
add
CCDeque.{fold,append_{front,back},{of,to}_{gen,list}}
and othersadd
CCKList.{zip, unzip}
add
CCKList.{of_array,to_array}
add
CCKList.{head,tail,mapi,iteri}
add
CCKList.{unfold,of_gen}
add
CCParse.{input_of_chan,parse_file,parse_file_exn}
modify
CCParse.U.list
to skip newlinesadd
CCDeque.print
add
CCBV.print
add printer to
CCHashtbl
bugfix in
CCSexpM
new tests in
CCTrie
; bugfix inCCTrie.below
lots of new tests
more benchmarks; cleanup of benchmarks
migration of tests to 100% qtest
migration markdown to asciidoc for doc (readme, etc.)
add tests to
CCIntMap
, add type safety, and fix various bugs in{union,inter}
more efficient
CCThread.Queue.{push,take}_list
slightly different implem for
CCThread.Queue.{take,push}
new implementation for
CCDeque
, more efficientupdate makefile (target devel)
0.12
breaking
change type of
CCString.blit
so it writes intoBytes.t
better default opening flags for
CCIO.with_{in, out}
non-breaking
NOTE: use of containers.io
is deprecated (its only module has moved to containers
)
add
CCString.mem
add
CCString.set
for updating immutable stringsadd
CCList.cons
functionenable
-safe-string
on the project; fix-safe-string
issuesmove
CCIO
fromcontainers.io
tocontainers
, add dummy module incontainers.io
add
CCIO.read_all_bytes
, reading a whole file into aBytes.t
add
CCIO.with_in_out
to read and write a fileadd
CCArray1
in containers.bigarray, a module on 1-dim bigarrays (experimental)add module
CCGraph
incontainers.data
, a simple graph abstraction similar toLazyGraph
add a lot of string functions in
CCString
add
CCError.catch
, in prevision of the future standardResult.t
typeadd
CCError.Infix
moduleadd
CCHashconsedSet
incontainers.data
(set with maximal struct sharing)fix: use the proper array module in
CCRingBuffer
bugfix:
CCRandom.float_range
0.11
add
CCList.{remove,is_empty}
add
CCOpt.is_none
remove packs for
containers_string
andcontainers_advanced
add
Containers_string.Parse
, very simple monadic parser combinatorsadd
CCList.{find_pred,find_pred_exn}
bugfix in
CCUnix.escape_str
add methods and accessors to
CCUnix
in
CCUnix
, useUnix.environment
as the default environmentadd
CCList.partition_map
RingBuffer.{of_array, to_array}
convenience functionscontainers.misc.RAL
: more efficient in memory (unfold list)add
CCInt.pow
(thanks to bernardofpc)add
CCList.group_succ
containers.data.CCMixset
, set of values indexed by poly keysdisable warning 32 (unused val) in .merlin
some infix operators for
CCUnix
add
CCUnix.async_call
for spawning and communicating with subprocessadd
CCList.Set.{add,remove}
fix doc of
CCstring.Split.list_
0.10
add
containers.misc.Puf.iter
add
CCString.{lines,unlines,concat_gen}
CCUnix
(with a small subprocess API)add
CCList.{sorted_merge_uniq, uniq_succ}
breaking: fix documentation of
CCList.sorted_merge
(different semantics)CCPersistentArray
(credit to @gbury and Jean-Christophe Filliâtre)CCIntMap
(big-endian patricia trees) in containers.databugfix in
CCFQueue.add_seq_front
add
CCFQueue.{rev, --}
add
App_parse
incontainers.string
, experimental applicative parser combinatorsremove
containers.pervasives
, add the moduleContainers
to corebugfix in
CCFormat.to_file
0.9
add
Float
,Ref
,Set
,Format
toCCPervasives
CCRingBuffer.append
(simple implementation)containers.data
now depends on bytesnew
CCRingBuffer
module, imperative deque with batch (blit) operations, mostly done by Carmelo Piccionenew
Lwt_pipe
andLwt_klist
streams for Lwt, respectively (un)bounded synchronized queues and lazy listsCCKTree.print
, a simple S-expressions printer for generic treesAdd
CCMixmap
in containers.data (close #40), functional alternative toCCMixtbl
remove old META file
simplified
CCTrie
implementationuse "compiledObject: best" in
_oasis
for binariesdocument some invariants in
CCCache
(see #38)tests for
CCCache.lru
fix
CCFormat.seq
combinatoradd
CCSet
module in core/add
CCRef
module in core/
0.8
add
@Emm
to authorsrefactored heavily
CCFuture
(much simpler, cleaner, basic API and thread pool)add
CCLock
in containers.threadmerged
test_levenshtein
with other testsAdd experimental rose tree in
Containers_misc.RoseTree
.remove a lot of stuff from
containers.misc
(see_oasis
for details)make devel
command, activating most flags, for developers (see #27)use benchmark 1.4, with the upstreamed tree system
test
ccvector.iteri
add
CCFormat
into core/infix map operators for
CCArray
fold_while
impl forCCList
andCCArray
Added
CCBigstring.length
for more consistency with theCCString
module.Added name and dev fields in the OPAM file for local pinning.
Fix
CCIO.remove*
functions.Added
CCIO.remove_safe
.only build doc if all the required flags are enabled
CCHashtbl.{keys,values}_list
in the functor as well. Better doc.CCHashtbl.{keys,values}_list
more accurate type for
CCHashtbl.Make
0.7
breaking
remove
cgi
/removed useless Lwt-related module
remove
CCGen
andCCsequence
(use the separate libraries)split the library into smaller pieces (with
containers.io
,containers.iter
,containers.sexp
,containers.data
)
other changes
cleanup: move sub-libraries to their own subdir each; mv everything into
src/
sexp
:CCSexp
now split intoCCSexp
(manipulating expressions) andCCSexpStream
add
CCSexpM
for a simpler, monadic parser of S-expressions (deprecatingCCSexpStream
)
core
:CCString.fold
CCstring.suffix
more efficient
CCString.init
fix errors in documentation of
CCString
(slightly over-reaching sed)add
CCFloat.{fsign, sign_exn}
(thanks @bernardofpc)
new
containers.bigarray
, withCCBigstring
CCHashtbl.map_list
io
:CCIO.read_all
now with ?size parameteruse
Bytes.extend
(praise modernity!)bugfix in
CCIO.read_all
andCCIO.read_chunks
use
-no-alias-deps
0.6.1
use subtree
gen/
forCCGen
(symlink) rather than a copy.Add benchmarks for the function
iter
of iterators.CCKTree
: more printers (to files),Format
printerCCOpt.get_lazy
convenience functionintroduce
CCFloat
, add float functions toCCRandom
(thanks to @struktured)
0.6
breaking changes
new
CCIO
module, much simpler, but incompatible interfacerenamed
CCIO
toadvanced.CCMonadIO
other changes
CCMultiSet.{add_mult,remove_mult,update}
CCVector.{top,top_exn}
CCFun.compose_binop
(binary composition)CCList.init
CCError.map2
has a more general type (thanks to @hcarty)new module
CCCache
moved from
misc
add
CCache
.{size,iter}incompatible interface (functor -> values), much simpler to use
lwt/Lwt_actor
stub, for erlang-style concurrency (albeit much much more naive)misc/Mixtbl
added from its old repositorymore benchmarks, with a more general system to select/run them
more efficient versions of
CCList.{flatten,append,flat_map}
, some functions are now tailrec
0.5
breaking changes
dependency on
cppo
(thanks to @whitequark, seeAUTHORS.md
) andbytes
CCError
:now polymorphic on the error type
some retro-incompatibilies (wrap,guard)
CCPervasives.Opt
->CCPervasives.Option
Levenshtein.Index.remove
changed signature (useless param removed)
other changes
stronger inlining for
CCVector
(so that e.g. push is inline)more tests for
CCVector
removed many warnings
CCSequence
now provides some bytes-dependent operationsCCList.(>|=)
map operatorCCOpt.filter
CCInt.neg
CCMap
wrapper to the standardMap
modulemake some functions in
CCFun
andCCString
depend on ocaml versionthanks to @whitequark, could use cppo for preprocessing files
add Format printers to
CCString
AUTHORS.md
0.4.1
CCOpt.get
new functions in
CCSexp.Traverse
comments in
CCMultiSet.mli
, to explain meet/intersection/unionCCMultiset
: Add meetupdate of readme
generate doc for
containers.advanced
0.4
core/CCSexp
for fast and lightweight S-expressions parsing/printingmoved
CCLinq
,CCBatch
andCCat
from core/ to advanced/ensure compatibility with ocaml 4.00
get rid of deprecated
Array.create
move benchmarks to benchs/ so they are separate from tests
CCError.{iter,get_exn}
CCPair.print
some small improvements to
CCRandom
moved
CCHashtbl
toCCFlatHashtbl
; new moduleCCHashtbl
that wraps and extends the standard hashtableCCPervasives
module, replacing modules of the standard libraryremoved type alias
CCString.t
(duplicate of String.t which already exists)
0.3.4
subtree for
sequence
repoCCSequence
is now a copy ofsequence
CCOpt.wrap{1,2}
CCList.findi
,CCArray.findi
andCCArray.find_idx
better
Format
printers (using break hints)specialize some comparison functions
CCOrd.map
0.3.3
readme: add ci hook (to http://ci.cedeela.fr)
CCIO
: monad for IO actions-as-valuesexplicit finalizer system, to use a
>>>=
operator rather than callbacksFile
for basic filenames manipulationsSeq
for streams
CCMultiMap
: functor for bidirectional mappingsCCMultiSet
: sequencerenamed threads/future to threads/CCFuture
big upgrade of
RAL
(random access lists)CCList.Ref
to help use references on listsCCKList
:group,uniq,sort,sort_uniq,repeat
andcycle
, infix ops, applicative,productCCTrie.above/below
: ranges of itemsmore functions in
CCPair
CCCat
: funny (though useless) definitions inspired from HaskellCCList
: applicative instanceCCString.init
CCError.fail_printf
0.3.2
small change in makefile
conversions for
CCString
CCHashtbl
: open-addressing table (Robin-Hood hashing)registered printers for
CCError
.guard,wrap1,etc.monadic operator in
CCList
:map_m_par
simple interface to
PrintBox
now more powerfulconstructors for 1 or 2 elements fqueues
bugfixes in BTree (insertion should work now)
CCFQueue
: logarithmic access by indexadd BTree partial implementation (not working yet)
fix bug in
CCPrint.to_file
CCArray.lookup
for divide-and-conquer searchCCList.sort_uniq
CCError
: retry and choose combinatorsstub for monadic IO in
CCPrint
CCopt.pure
updated
CCPersistentHashtbl
with new functions; updated doc, simplified codemove
CCString
into core/, since it deals with a basic type; also add some features toCCString
(Sub and Split modules to deal with slices and splitting by a string)CCArray.blit
,.Sub.to_slice
; some bugfixesapplicative and lifting operators for
CCError
CCError.map2
more combinators in
CCError
0.3.1
test for
CCArray.shuffle
bugfix in
CCArray.shuffle
CCOpt.get_exn
CCOpt.sequence_l
mplus instance for
CCOpt
monad instance for
CCFun
updated description in
_oasis
CCTrie
, a compressed functorial persistent trie structurefix
CCPrint.unit
, addCCPrint.silent
fix type mismatch
NOTE: git log --no-merges previous_version..HEAD --pretty=%s