@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 +2 -2
- package/PRIVACY.md +1 -1
- package/README.md +16 -8
- package/dist/bin/export-segments.js +1611 -248
- package/dist/bin/export-segments.js.map +4 -4
- package/dist/index.d.ts +4 -3
- package/dist/index.js +1609 -221
- package/dist/index.js.map +4 -4
- package/dist/roaring-codec.d.ts +22 -92
- package/package.json +2 -4
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
|
|
11
|
-
|
|
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
|
-
|
|
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
|