31 KiB
Changelog
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 ones -
add
CCEqualLabels -
add
CCArray_sliceLabels -
add
CCStringLabels -
add
CCResult.get_or_failwith -
add
CCInt.( ** )for integer exponentiation -
add
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
Labelsmodule - doc: 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 IEEE754 -
fix(build): remove
[@inline]attributes since they break on 4.02.3 -
Fix 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
CCInt64compatible withInt64(breaking!) (closes #192) -
Add
CCBijectionin containers.data -
feat(mono): add dotted comparison operators for floats
-
add
?marginparameter toCCFormat.ksprintf -
add
CCUtf8_stringwith basic encoding and decoding functionalities -
Add
CCLazy_list.<|> -
Adding
CCNativeint -
enrich
CCInt.Infixto 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_vecdata structure for fast functional vectors -
fix: strong type aliases in Random (closes #210)
-
use standard
List.sort_uniq -
remove explicit dep on
bytesin jbuild files -
update 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 CCMonomorphicinContainersmodule - Shadow the physical equality operator
- Shadow polymorphic functions in
CCList
- Internally shadow polymorphic operators and functions from Pervasives
by
- rename
printtoppfor Format printers (closes #153, #181) - remove
CCFlatHashtbl
others
-
many typos and style fixes (from Fourchaux)
-
Add
CCList.iteri2andCCList.foldi2 -
remove
PARAM.min_sizeinCCPool -
Add
CCEqual.physical -
Avoid uses of the polymorphic operators
-
Add a
CCMonomorphicmodule shipped into acontainers.monomorphiclibrary -
make complexity of
Array.lookupexplicit (closes #174) -
add
CCFormat.lazy_{or,force}for printing thunks -
now that ocaml >= 4.02 is required, use
Format.pp_print_textdirectly -
add
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 styles -
fix bug: don't reverse twice in
CCList.repeat
1.5.1, 1.5.2
- re-export
Formattypes and functions inCCFormat
1.5
-
have
CCList.{get,insert,set}_at_idxwork with negative indices -
Add CCCache.add
-
missing function in
CCListLabels -
Allow negative indexes in CCList.remove_at_idx
-
add an optional
dropparameter to string-splitting functions -
add
Hash.const0for trivial hash function that ignores its input -
improve 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 comparison -
remove 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.mapUsing efficient chunking algorithm -
Fix
CCVector.append_array(empty vector case) -
CCFQueue.take_back_exnraised InvalidArg instead of Empty on an empty queue -
faster
CCString.{prefix,suffix} -
speed improvements and benchmarks for
CCString.{prefix,suffix} -
add ocp-indent file
-
fix
CCFun.tapexample in doc -
specify behavior of
CCFQueue.take_{front,back}_lin some corner cases -
More 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_queueto containers.data -
small change for consistency in
CCIntMap -
bugfix in
CCRingBuffer.skip, and corresponding tests -
cleanup 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_divandCCInt.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_ksffor colored printing -
add
CCInt.range{,',by}for iterating on integer ranges -
add
CCString.Sub.get -
add
CCResult.add_ctx{,f}for replacing stack traces -
add
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_lockfor locking whole files -
add
CCFormat.of_chan -
add
CCFormat.flush -
Add
{map_lazy, or_, or_lazy, to_result, to_result_lazy, of_result}toCCOpt -
annotations in
CCEqual, for optimization -
Add 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.Dumpfor tuples -
update 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
resulteverywhere - remove 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_hashfor combining hashes - split
CCList.Zipperinto its own module,CCZipperin containers.data - change argument ordering in
CCList.Assoc - remove
CCList.Idx, rename its functions to toplevel - remove
CCList.Set, move functions to toplevel and rename them - rewrite
CCBitFieldwith a much simpler interface - split
CCArray.SubintoCCArray_slice - remove containers.string
- remove CCParse and CCKMP (will be replaced in core)
CCFormat:- remove
start/stopargs, makesepaunit printer - many other improvements and additions
- add
CCFormat.tee - add
CCFormat.Dump.{result,to_string}
- remove
- replace
or_bydefaultin labelled functions - remove trailing
_inCCOrdprimitives - remove
containers.io(deprecated for a while) - remove
containers.bigarray - remove
CCSexpM, use ocamllex for a much simplerCCSexpusing ocamllex - add
CCParseinto core, a simple, lightweight version of parser combs - remove
CCPrint, useCCFormatinstead (also, update tests relying on it) - remove containers.advanced
- change type of
CCUnix.escape_str
Additions:
CCHashtbl:CCHash.{list,array}_commCCHashtbl.Polyand 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
CCUnixa bit - update
containers.mlso as to include all core containers - add
CCOrd.Infix - use
Labelsversions ofCCListandCCArray - add
CCString.edit_distance - expose
CCString.Findfor efficient sub-string searching
Bugfixes:
CCIO: deal properly with broken symlinks and permission errors- test for #94 (using Thread.yield to trigger segfault)
Fix
CCSemaphore.with_acquire: release a non locked mutex is UB - containers.top: remove printers on structural types (#71)
- add doc for
of_listin relevant modules (close #85) - bugfix: do not use
Sequence.flatMap(close #90)
0.22
- threads/CCLock: add
try_with_lockto wrapMutex.try_lock - Add
CCMultiSet.remove_all - document errors in
CCIO(close #86) - use the new qtest/qcheck
0.21
-
(breaking) make default
start/stoparguments empty in printers (#82) -
add
CCFormat.{with_color_sf,fprintf_dyn_color,sprintf_dyn_color} -
add
CCFormat.Dumpfor easy debugging (see #82) -
add
CCArray.Sub.to_list -
add
CCArray.{sorted,sort_indices,sort_ranking}(closes #81) -
handle
\rin 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,map2 -
add
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.Makesig - cleanup and more tests in
CCHeap - fix bugs in
CCFlatHashtbl, add some tests - add more generic printers for
CCErrorandCCResult(close #73) - add
CCstring.of_char - update headers
0.18
- update implem of
CCVector.equal - add
CCOpt.get_orwith 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.padfor more webscale - add
(--^)to CCRAl, CCFQueue, CCKlist (closes #56); addCCKList.Infix - add monomorphic signatures in
CCIntandCCFloat - add
CCList.{sorted_insert,is_sorted} - add
CCLazy_listin containers.iter (with a few functions) - add
CCTrie.longest_prefix - provide additional ordering properties in
CCTrie.{above,below} - add
CCOpt.if_ - have
CCRandom.split_listfail onlen=0CCRandom.sample_without_replacementfail 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/mapito 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_tempfor creating temporary files - add
{CCArray,CCVector,CCList}.(--^)for right-open ranges - add
Containers.{Char,Result} - modify
CCPersistentHashtbl.mergeand addCCMap.merge_safe - add
CCHet, heterogeneous containers (table/map) indexed by keys - add
CCString.rev - add
CCImmutArrayinto containers.data - add
CCList.Assoc.remove
Fixes, misc
-
Make
CCPersistentHashtbl.S.mergemore 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:
watchtarget should build all- add version constraint on sequence
- migrate to new qtest
- add an
IOsection to the tutorial - enable
-j 0for ocamlbuild
0.16
breaking
- change the signature of
CCHeap.{of_gen,of_seq,of_klist} - change the API of
CCMixmap - make type
CCHash.stateabstract (used to beint64) - optional argument
~eqtoCCGraph.Dot.pp - rename
CCFutureintoCCPool
deprecations
- deprecate
containers.bigarray - deprecate
CCHashtbl.{Counter,Default}tables - deprecate
CCLinqin 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}.Infixmodules - add
CCOpt.map_or, deprecatingCCopt.maybe - add
CCFormat.sprintf_no_color - add
CCFormat.{h,v,hov,hv}boxprinter combinators - add
CCFormat.{with_color, with_colorf} - add
CCList.hd_tl - add
CCResult.{map_or,get_or} - add
CCGraph.makeand utils - add
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 files - add
CCRandom.pick_{list,array} - add
CCList.Assoc.update - add
CCList.Assoc.mem - add
{CCMap,CCHashtbl}.get_orfor lookup with default value - add
CCLock.{decr_then_get, get_then_{decr,set,clear}} - rename
CCFutureintoCCPool, expose the thread pool - split
CCTimerout ofCCFuture, a standalone 1-thread timer - move
CCThread.QueueintoCCBlockingQueue - add
CCResult, with dependency onresultfor retrocompat - add
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_sexpso it can read on stdin - add
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 codes -
add
CCVector.ro_vectoras a convenience alias -
add
CCOrd.option -
add
CCMap.{keys,values} -
add wip
CCAllocCache, an allocation cache for short-lived arrays -
add
CCError.{join,both}applicative functions for CCError -
opam: depend on ecamlbuild
-
work on
CCRandomby octachron:- add an uniformity test
- Make
split_listuniform - Add sample_without_replacement
-
bugfix: forgot to export
{Set.Map}.OrderedTypeinContainers
0.14
breaking changes
- change the type
'a CCParse.twith continuations - add labels on
CCParse.parse_*functions - change 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.printandSet.print -
add
CCFormat.{ksprintf,string_quoted} -
add
CCArray.sort_genericfor sorting over array-like structures in place -
add
CCHashtbl.addmimicking the stdlibHashtbl.add -
add
CCString.replaceand tests -
add
CCPersistentHashtbl.stats -
reimplementation of
CCPersistentHashtbl -
add
make watchtarget -
add
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.Hashtblwith 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.memoizefor costly computations -
add
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.replaceifsub="" -
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
inputandParseErrorinCCParse - move
containers.miscandcontainers.lwtinto their own repo - change the exceptions in
CCVector - change signature of
CCDeque.of_seq
Other changes
-
add module
CCWBTree, a weight-balanced tree, incontainers.data. -
add module
CCBloomincontainers.data, a bloom filter -
new module
CCHashTrieincontainers.data, HAMT-like associative map -
add module
CCBitFieldincontainers.data, a safe abstraction for bitfields of< 62 bits -
add module
CCHashSetintocontainers.data, a mutable set -
add module
CCInt64 -
move module
RALintocontainers.dataasCCRAL -
new module
CCThreadincontainers.thread, utils for threading (+ blocking queue) -
new module
CCSemaphoreincontainers.thread, with simple semaphore -
add
containers.top, a small library that installs printers -
add
CCParse.memofor memoization (changesCCParse.input) -
add
CCString.compare_versions -
update
CCHashwith a functor and module type for generic hashing -
add
CCList.{take,drop}_while; improve map performance -
add
CCList.cons_maybe -
add
CCArray.bsearch(back from batteries) -
add fair functions to
CCKList -
deprecate
CCList.split, introduceCCList.take_dropinstead. -
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.Barrierfor simple synchronization -
add
CCPersistentArray.{append,flatten,flat_map,of_gen,to_gen} -
add
CCDeque.clear -
add
CCDeque.{fold,append_{front,back},{of,to}_{gen,list}}and others -
add
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.listto skip newlines -
add
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 efficient -
update makefile (target devel)
0.12
breaking
- change type of
CCString.blitso 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.setfor updating immutable strings -
add
CCList.consfunction -
enable
-safe-stringon the project; fix-safe-stringissues -
move
CCIOfromcontainers.iotocontainers, add dummy module incontainers.io -
add
CCIO.read_all_bytes, reading a whole file into aBytes.t -
add
CCIO.with_in_outto read and write a file -
add
CCArray1in containers.bigarray, a module on 1-dim bigarrays (experimental) -
add module
CCGraphincontainers.data, a simple graph abstraction similar toLazyGraph -
add a lot of string functions in
CCString -
add
CCError.catch, in prevision of the future standardResult.ttype -
add
CCError.Infixmodule -
add
CCHashconsedSetincontainers.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_stringandcontainers_advanced - add
Containers_string.Parse, very simple monadic parser combinators - add
CCList.{find_pred,find_pred_exn} - bugfix in
CCUnix.escape_str - add methods and accessors to
CCUnix - in
CCUnix, useUnix.environmentas the default environment - add
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 keys- disable warning 32 (unused val) in .merlin
- some infix operators for
CCUnix - add
CCUnix.async_callfor spawning and communicating with subprocess - add
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.data- bugfix in
CCFQueue.add_seq_front - add
CCFQueue.{rev, --} - add
App_parseincontainers.string, experimental applicative parser combinators - remove
containers.pervasives, add the moduleContainersto core - bugfix in
CCFormat.to_file
0.9
- add
Float,Ref,Set,FormattoCCPervasives CCRingBuffer.append(simple implementation)containers.datanow depends on bytes- new
CCRingBuffermodule, imperative deque with batch (blit) operations, mostly done by Carmelo Piccione - new
Lwt_pipeandLwt_kliststreams for Lwt, respectively (un)bounded synchronized queues and lazy lists CCKTree.print, a simple S-expressions printer for generic trees- Add
CCMixmapin containers.data (close #40), functional alternative toCCMixtbl - remove old META file
- simplified
CCTrieimplementation - use "compiledObject: best" in
_oasisfor binaries - document some invariants in
CCCache(see #38) - tests for
CCCache.lru - fix
CCFormat.seqcombinator - add
CCSetmodule in core/ - add
CCRefmodule in core/
0.8
- add
@Emmto authors - refactored heavily
CCFuture(much simpler, cleaner, basic API and thread pool) - add
CCLockin containers.thread - merged
test_levenshteinwith other tests - Add experimental rose tree in
Containers_misc.RoseTree. - remove a lot of stuff from
containers.misc(see_oasisfor details) make develcommand, activating most flags, for developers (see #27)- use benchmark 1.4, with the upstreamed tree system
- test
ccvector.iteri - add
CCFormatinto core/ - infix map operators for
CCArray fold_whileimpl forCCListandCCArray- Added
CCBigstring.lengthfor more consistency with theCCStringmodule. - 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}_listin 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
CCGenandCCsequence(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:CCSexpnow split intoCCSexp(manipulating expressions) andCCSexpStream- add
CCSexpMfor a simpler, monadic parser of S-expressions (deprecatingCCSexpStream)
core:CCString.foldCCstring.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_listio:CCIO.read_allnow with ?size parameter- use
Bytes.extend(praise modernity!) - bugfix in
CCIO.read_allandCCIO.read_chunks
- use
-no-alias-deps
0.6.1
- use subtree
gen/forCCGen(symlink) rather than a copy. - Add benchmarks for the function
iterof iterators. CCKTree: more printers (to files),FormatprinterCCOpt.get_lazyconvenience function- introduce
CCFloat, add float functions toCCRandom(thanks to @struktured)
0.6
breaking changes
- new
CCIOmodule, much simpler, but incompatible interface - renamed
CCIOtoadvanced.CCMonadIO
other changes
CCMultiSet.{add_mult,remove_mult,update}CCVector.{top,top_exn}CCFun.compose_binop(binary composition)CCList.initCCError.map2has 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
- moved from
lwt/Lwt_actorstub, for erlang-style concurrency (albeit much much more naive)misc/Mixtbladded from its old repository- more 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.OptionLevenshtein.Index.removechanged signature (useless param removed)
other changes
- stronger inlining for
CCVector(so that e.g. push is inline) - more tests for
CCVector - removed many warnings
CCSequencenow provides some bytes-dependent operationsCCList.(>|=)map operatorCCOpt.filterCCInt.negCCMapwrapper to the standardMapmodule- make some functions in
CCFunandCCStringdepend on ocaml version - thanks 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/union CCMultiset: Add meet- update of readme
- generate doc for
containers.advanced
0.4
core/CCSexpfor fast and lightweight S-expressions parsing/printing- moved
CCLinq,CCBatchandCCatfrom 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
CCHashtbltoCCFlatHashtbl; new moduleCCHashtblthat wraps and extends the standard hashtable CCPervasivesmodule, replacing modules of the standard library- removed type alias
CCString.t(duplicate of String.t which already exists)
0.3.4
- subtree for
sequencerepo CCSequenceis now a copy ofsequenceCCOpt.wrap{1,2}CCList.findi,CCArray.findiandCCArray.find_idx- better
Formatprinters (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-values- explicit finalizer system, to use a
>>>=operator rather than callbacks Filefor basic filenames manipulationsSeqfor streams
- explicit finalizer system, to use a
CCMultiMap: functor for bidirectional mappingsCCMultiSet: sequence- renamed threads/future to threads/CCFuture
- big upgrade of
RAL(random access lists) CCList.Refto help use references on listsCCKList:group,uniq,sort,sort_uniq,repeatandcycle, infix ops, applicative,productCCTrie.above/below: ranges of items- more functions in
CCPair CCCat: funny (though useless) definitions inspired from HaskellCCList: applicative instanceCCString.initCCError.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
PrintBoxnow more powerful - constructors for 1 or 2 elements fqueues
- bugfixes in BTree (insertion should work now)
CCFQueue: logarithmic access by index- add BTree partial implementation (not working yet)
- fix bug in
CCPrint.to_file CCArray.lookupfor divide-and-conquer searchCCList.sort_uniqCCError: retry and choose combinators- stub for monadic IO in
CCPrint CCopt.pure- updated
CCPersistentHashtblwith new functions; updated doc, simplified code - move
CCStringinto 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 bugfixes- applicative and lifting operators for
CCError CCError.map2- more combinators in
CCError
0.3.1
- test for
CCArray.shuffle - bugfix in
CCArray.shuffle CCOpt.get_exnCCOpt.sequence_l- mplus instance for
CCOpt - monad instance for
CCFun - updated description in
_oasis CCTrie, a compressed functorial persistent trie structure- fix
CCPrint.unit, addCCPrint.silent - fix type mismatch
NOTE: git log --no-merges previous_version..HEAD --pretty=%s