@cloudbitmaps/roaring 0.23.0 → 0.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/NOTICE CHANGED
@@ -7,6 +7,6 @@ file. You may obtain a copy of the License at:
7
7
 
8
8
  http://www.apache.org/licenses/LICENSE-2.0
9
9
 
10
- @cloudbitmaps/roaring builds on the Roaring Bitmap data structure and uses the CRoaring
11
- engine (via the `roaring` Node.js binding) for in-memory bit math.
10
+ @cloudbitmaps/roaring builds on the Roaring Bitmap data structure and implements the Roaring format and
11
+ algorithms of Lemire et al.; CRoaring is used in its tests as the reference.
12
12
  Those projects are independent works under their own licenses.
package/PRIVACY.md CHANGED
@@ -104,7 +104,7 @@ again, the row changes a second time.
104
104
 
105
105
  Two of the rules while you erase. **Do not load a segment while erasing from it**: a load that lands after the rewrite carries whatever
106
106
  its source held, and the library cannot know that source was meant to exclude the id — fix the source first, or
107
- quiesce loads of the affected segments for the duration. A writer that lands *during* the rewrite is caught and
107
+ quiesce loads of the affected segments for the duration, and let loads already running finish before you start. Every load that read the row before an erasure that found the id began is refused (`superseded`) and never publishes what its source held, whether by this erasure's own [write to the row](https://github.com/cloudbitmaps/cloudbitmaps/blob/main/docs/guide/correctness.md#ledger-loses-what-it-deletes) or by an earlier write that changed the row's `pointerId` or its ledger since the erasure read it (a retention or residency write does not count); a load that starts during the erasure is not covered. A writer that lands *during* the rewrite is caught and
108
108
  the entry says `erased: false, note: 'superseded'` — because the publish was refused **by that fence**, because
109
109
  a racing **erasure** (which collects with `keep: 0`) deleted the generation the rewrite was still streaming, or
110
110
  because an operator's `rollback` moved the pointer while the call was deleting generations above it. When two
package/README.md CHANGED
@@ -19,14 +19,7 @@ pnpm add @cloudbitmaps/tools # optional: price a store, offline
19
19
 
20
20
  Install the same version of every `@cloudbitmaps/*` package: they release together, and each pins the exact version of `core` it was built with.
21
21
 
22
- `roaring` needs its one install script to fetch its native binary, and newer clients run a dependency's script only if you allow it. Allow it before you install:
23
-
24
- - **npm 12:** add `{ "allowScripts": { "roaring": true } }` to your `package.json`. Without it the install exits 0 and the package throws at `import`. npm 11 runs the script but warns until you allow it the same way.
25
- - **pnpm 11 and later:** put `allowBuilds: { roaring: true }` in a `pnpm-workspace.yaml` beside your `package.json`. Those versions no longer read the `package.json` `pnpm` key. Without it the install exits 1 with `ERR_PNPM_IGNORED_BUILDS`.
26
- - **pnpm 10:** add `{ "pnpm": { "onlyBuiltDependencies": ["roaring"] } }` to your `package.json`. Without it the install exits 0 and the package throws at `import`.
27
- - **pnpm 9:** nothing extra.
28
-
29
- [Details](https://github.com/cloudbitmaps/cloudbitmaps/blob/main/docs/guide/getting-started.md#cannot-find-module-buildreleaseroaringnode-after-a-successful-install).
22
+ The store's Roaring is written in TypeScript, with no native code: [what that means](https://github.com/cloudbitmaps/cloudbitmaps/blob/main/docs/guide/roaring-codec.md).
30
23
 
31
24
  ## Use
32
25
 
@@ -133,6 +126,21 @@ says what else differs.
133
126
  - [Changelog](https://github.com/cloudbitmaps/cloudbitmaps/blob/main/CHANGELOG.md)
134
127
  - [Privacy and shared responsibility](https://github.com/cloudbitmaps/cloudbitmaps/blob/main/PRIVACY.md)
135
128
 
129
+ ## Credits
130
+
131
+ The Roaring Bitmap format and its algorithms are the work of Daniel Lemire and colleagues. See
132
+ [roaringbitmap.org](https://roaringbitmap.org/) and the [Roaring format specification](https://github.com/RoaringBitmap/RoaringFormatSpec),
133
+ which defines the portable bytes every chunk of a `.crbm` object holds. The store's codec implements that format and those
134
+ algorithms in TypeScript ([how it is held to CRoaring](https://github.com/cloudbitmaps/cloudbitmaps/blob/main/docs/guide/roaring-codec.md#the-guarantee-the-same-bytes)); CRoaring, through the `roaring` binding, is the reference its tests compare it against. The papers:
135
+
136
+ - S. Chambi, D. Lemire, O. Kaser, R. Godin, "Better bitmap performance with Roaring bitmaps", *Software: Practice and
137
+ Experience* 46(5), 2016. [arXiv:1402.6407](https://arxiv.org/abs/1402.6407)
138
+ - D. Lemire, G. Ssi-Yan-Kai, O. Kaser, "Consistently faster and smaller compressed bitmaps with Roaring", *Software:
139
+ Practice and Experience* 46(11), 2016. [arXiv:1603.06549](https://arxiv.org/abs/1603.06549)
140
+ - D. Lemire, O. Kaser, N. Kurz, L. Deri, C. O'Hara, F. Saint-Jacques, G. Ssi-Yan-Kai, "Roaring Bitmaps: Implementation
141
+ of an Optimized Software Library", *Software: Practice and Experience* 48(4), 2018.
142
+ [arXiv:1709.07821](https://arxiv.org/abs/1709.07821)
143
+
136
144
  ## License
137
145
 
138
146
  Apache-2.0