package index
- Overview
 - No Docs
 
You can search for identifiers within the package.
in-package search v0.2.0
 sectionYPositions = computeSectionYPositions($el), 10)"
  x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
  >
  
  
On This Page
  
  
  A platform-agnostic multi-level index for OCaml
Install
    
    dune-project
 Dependency
Authors
Maintainers
Sources
  
    
      index-1.4.1.tbz
    
    
        
    
  
  
  
    
  
  
    
  
        sha256=dde943f595ee9bb7d9b84cde05d0cb4675097e785dbf833521761fd843252206
    
    
  sha512=9b4e1e2d684222205a5cb17370acfd90d36026de147d548319b7b411fa0c2c36fce970f3e7604880a38f5a17dfe338efd9e33cd70e51ee3d8cb66b038f2a8a69
    
    
  doc/CHANGES.html
1.4.1 (2021-07-16)
Fixed
- Proper cleaning of merge file descriptors when aborting a merge (#326)
 - Recover from crash of the merge thread. When this happen, the main thread can continue to run and will need to recover from the crash before doing a new merge. This fixes a critical issue which might cause data loss (#339)
 - Make sure that no entries can disappear for read-only instances during log_async recovery (#338)
 
1.4.0 (2021-06-16)
Fixed
- Fixed a crash-consistency bug due to a potential flush of an incomplete entry to disk. Entries are now flushed as complete strings. (#301)
 - Attempt to recover from 
log_asyncinvariant violations during an explicit sync operation, rather than failing immediately. (#329) 
Changed
- Release overly defensive warnings occuring when pre-fetching the disk. (#322)
 - Optimised the in-memory representation of index handles and intermediate buffers, resulting in a significant reduction in memory use. (#273, #279)
 - Benches are now executed 3 times and a new option 
nb-exechas been added (#292) Index.Makenow requires an implementation of a monotonic time source. (#321)- The 
Index.Makefunctor now takes a singlePlatformargument containing all system dependencies (i.e.IO,Clock,SemaphoreandThread). ThePlatformmodule holds the necessary types for these modules. (#321, #330) 
Added
- Added benchmarks that replay a trace of index operations. (#300)
 - Log reporter for the benches
 
1.3.1 (2021-04-29)
Fixed
- Reduce allocations during merge (#274, #277)
 - Protect concurrent syncs with a lock (#309)
 - Fixed a performance issue for 
Index.syncwhen there is a blocking merge in progress: thelog_asyncfile was not cached properly and fully reloaded from disk every time. (#310) - Release the merge lock if a merge raises an exception (#312)
 - Added fsync after 
Index.clearto signal more quickly to read-only instances than something has changed in the file (#308) 
Changed
- Specialise 
IO.vto create read-only or read-write instances. (#291) clearremoves the files on disks and opens new ones containing only the header. (#288, #307, #317)
1.3.0 (2021-01-05)
Added
- Added 
flush_callbackparameter to the creation of a store, to register a callback before a flush. This callback can be temporarily disabled by~no_callback:()toflush. (#189, #216) - Added 
Stats.merge_durationsto list the duration of the last 10 merges. (#193) - Added 
is_mergingto detect if a merge is running. (#192) - New 
IO.Header.{get,set}functions to read and write the file headers atomically (#175, #204, @icristescu, @CraigFe, @samoht) - Added a 
throttleconfiguration option to select the strategy to use when the cache are full and an async merge is already in progress. The current behavior is the (default)`Block_writesstrategy. The new`Overcommit_memorydoes not block but continue to fill the cache instead. (#209, @samoht) - Add 
IO.existsobligation for IO implementations, to be used for lazy creation of IO instances. (#233, @CraigFe) Index.closenow takes an~immediately:()argument. When passed, this causescloseto terminate any ongoing asynchronous merge operation, rather than waiting for it to finish. (#185, #234)- Added 
Index.Checks.cli, which provides offline integrity checking of Index stores. (#236) Index.replacenow takes a~overcommitargument to postpone a merge. (#253)Index.mergeis now part of the public API. (#253)Index.try_mergeis now part of the public API.try_merge' is a no-op if the number of entries in the write-ahead log is smaller thanlog_size, otherwise it'smerge'. (#253 @samoht)
Changed
synchas to be called by the read-only instance to synchronise with the files on disk. (#175)- Caching of 
Indexinstances is now explicit:Index.Makerequires a cache implementation, andIndex.vmay be passed a cache to be used for instance sharing. The default behaviour is not to share instances. (#188) 
Fixed
- Added values after a clear are found by read-only instances. (#168)
 - Fix a race between 
mergeandsync(#203, @samoht, @CraigFe) - Fix a potential loss of data if a crash occurs at the end of a merge (#232)
 - Fix 
Index.iterto only iterate once over elements persisted on the disk (#260, @samoht, @icristescu) 
1.2.1 (2020-06-24)
Added
- Added 
Index_unix.Syscalls, a module exposing various Unix bindings for interacting with file-systems. (#176) 
Fixed
- Fail when 
Index_unix.IOfile version number is not as expected. (#178) - Fixed creation of an index when an empty 
datafile exists. (#173) 
1.2.0 (2020-02-25)
Added
- Added 
filter, removing bindings depending on a predicate (#165) 
Changed
- Parameterise 
Index.Makeover arbitrary mutex and thread implementations (and remove the obligation forIOto provide this functionality). (#160, #161) 
1.1.0 (2019-12-21)
Changed
- Improve the cooperativeness of the 
mergeoperation, allowing concurrent read operations to share CPU resources with ongoing merges. (#152) - Improve speed of read operations for read-only instances. (#141)
 
Removed
- Remove 
force_mergefromIndex.S, due to difficulties with guaranteeing sensible semantics to this function under MRSW access patterns. (#147, #150) 
1.0.1 (2019-11-29)
Added
- Provide a better CLI interface for the benchmarks (#130, #133)
 
Fixed
- Fix a segmentation fault when using musl <= 1.1.20 by not allocating 64k-byte buffers on the thread stack (#132)
 - Do not call 
pwritewithlen=0(#131) - Clear 
log.memonclose(#135) - Load 
log_asyncon startup (#136) 
1.0.0 (2019-11-14)
First stable release.
 sectionYPositions = computeSectionYPositions($el), 10)"
  x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
  >
  
  
  On This Page