package containers-data
 sectionYPositions = computeSectionYPositions($el), 10)"
  x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
  >
  
  
On This Page
  
  
  A set of advanced datatypes for containers
Install
    
    dune-project
 Dependency
Authors
Maintainers
Sources
  
    
      v3.0.1.tar.gz
    
    
        
    
  
  
  
    
  
  
    
  
        md5=438a7bbcb789e116eead04c8a59641f0
    
    
  sha512=b5551a9ebb9500e14482852c9294c9b4cc3df8153ba64b8e4c4de1dacbd0322ebe4a212316b308c94af562a40099c85b89a8415780cf4e2e0e519870f7342c1b
    
    
  doc/CHANGELOG.html
Changelog
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.iterand merge parts of it intocontainers-data;
- move CCSexpinto 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)
- remove CCKlistfrom everywhere
- CCGraph: remove deprecated module and function
- rename <op>_std_seqto<op>_seq, makingSeq.tthe standard everywhere; remove the old<op>_seqthat were previously deprecated in favor of<op>_iter.
- CCVector: rename shrinkintotruncate
- CCVector: rename remove to CCVector.remove_unordered
- CCList: make mem compatible with the Stdlib by making ?eqoptional
- CCVector: 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 <$>operator
- CCResult: add get_lazy
- put infix operators in Infixmodule, then include it
- ccnativeint: complete CCNativeint with regards to CCInt
- Int64: complete CCInt64 with regards to CCInt
- CCInt32: complete CCInt32 with regards to CCInt
- implement CCInt.signusingCCInt.compare
- CCInt: include module Int for ocaml >= 4.08
- CCInt: add of_float
- CCInt: add of_string_exn
- add CCResult.get_lazy
- add Int.popcountoperator
- CCFloat: add pi
- CCFloat: add of_string_opt
- fix: expose always_eq/never_eqinCCEqual
- string: add optional cutoffarg 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 exncombinator
- IO: add copy_intofor transferring data between channels
- Extend 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}_seqa bit everywhere
- deprecate CCKListas it's subsumed bySeq
- feat: on >= 4.08, support let+ and let* operators
- feat(list): add indexed functions and fold_on_map
- refactor: also port CCGraphto iter
- feat: add {to,of,add}_{iter,std_seq}where relevant
- feat(unix): add ensure_session_leaderand add some docs
- feat(pool): add infix operators on futures
- fix(pp): improve printing of hashtables
- feat: add monoid_productto Array and Vector
- improved gc behavior for CCvector
- deprecate CCVector.fill_empty_slots_with
- CCVector.shrink_to_fitto limit memory usage
- add CCVector.clear_and_reset
- feat(sexp): expose parse_string_listand the list decoder
- add CCUnix.with_temp_dirfunction
- deprecate CCOpt.to_seq, provideto_iterinstead
- add CCOpt.valueto improve compat withStdlib.Option
- add CCVector.mapi
- fix: restore CCSexp.atomandlistwhich was lost in 2.7
- fix(sexp): set location properly when parsing a file
- fix: properly alias to CCCharin containers.ml
- use 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 _gensuffixes to some functions
- ccsexp: provide ability to annotate parsed S-exprs with their position
- ccsexp: functorize the parser/printer
- ccsexp: support #;for commenting a sexp
- fix: remove dep from vec to list
- add to_stringto 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_lto turn a list of results into a result of list
- refactor: remove stdlib's code, simple reimplementation of Stdlib.Fun
- add CCArray.Infix
- Document behaviour of Fun.finallywhen finaliser raises
- travis: 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.Stdlibon OCaml 4.07
2.6
- introduce shim modules for 4.08 compat
- remove reference to sequence, use iterinstead for tests
- add removefunction to het map/tbl
- missing type annotation for specializing int.compare
- doc: fix bad example in CCIO
- use iter, notsequence, in tests
- fix: use same evaluation order as stdlib for CCList.init
- fix: make Array.random_choosefail on empty array at creation time
- breaking: make Array.random_chooseraise invalid_arg instead of not_found
- migrate 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 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}_comm
- CCHashtbl.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 on- len=0
- CCRandom.sample_without_replacementfail if- n<=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 functions
- containers.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 for- CCListand- CCArray
- 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 into- CCSexp(manipulating expressions) and- CCSexpStream
- add CCSexpMfor 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_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),- Formatprinter
- CCOpt.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.init
- CCError.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.Option
- Levenshtein.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 operations
- CCList.(>|=)map operator
- CCOpt.filter
- CCInt.neg
- CCMapwrapper to the standard- Mapmodule
- 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 of- sequence
- CCOpt.wrap{1,2}
- CCList.findi,- CCArray.findiand- CCArray.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 manipulations
- Seqfor streams
 
- explicit finalizer system, to use a 
- CCMultiMap: functor for bidirectional mappings
- CCMultiSet: sequence
- renamed threads/future to threads/CCFuture
- big upgrade of RAL(random access lists)
- CCList.Refto help use references on lists
- CCKList:- group,uniq,sort,sort_uniq,repeatand- cycle, infix ops, applicative,product
- CCTrie.above/below: ranges of items
- more functions in CCPair
- CCCat: funny (though useless) definitions inspired from Haskell
- CCList: applicative instance
- CCString.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 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 search
- CCList.sort_uniq
- CCError: 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_exn
- CCOpt.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
 sectionYPositions = computeSectionYPositions($el), 10)"
  x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
  >
  
  
  On This Page