<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Home on CedarDB</title><link>https://cedardb.com/</link><description>Recent content in Home on CedarDB</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Tue, 04 Aug 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://cedardb.com/index.xml" rel="self" type="application/rss+xml"/><item><title>Encoding or Compression: Why not both?</title><link>https://cedardb.com/blog/encoding_vs_compression/</link><pubDate>Tue, 04 Aug 2026 00:00:00 +0000</pubDate><guid>https://cedardb.com/blog/encoding_vs_compression/</guid><description>&lt;p&gt;Data compression and data encoding get thrown around as if they meant the same thing. And to be fair, if you go by the textbook definition of &lt;a href="https://en.wikipedia.org/wiki/Entropy_(information_theory)"&gt;Shannon Entropy&lt;/a&gt;, they actually do. Both change the byte representation of input data to achieve a size reduction. But if you leave the text book behind and apply them in a system that stores and processes a lot of data, encoding and compression are two different tools that solve two different problems.&lt;/p&gt;</description></item><item><title>Live Market Demo</title><link>https://cedardb.com/demo/stock-exchange/</link><pubDate>Thu, 02 Jul 2026 00:00:00 +0000</pubDate><guid>https://cedardb.com/demo/stock-exchange/</guid><description/></item><item><title>CedarDB Launches HTAP (10 Years Ago)</title><link>https://cedardb.com/blog/cedardb_launches_htap/</link><pubDate>Mon, 29 Jun 2026 00:00:00 +0000</pubDate><guid>https://cedardb.com/blog/cedardb_launches_htap/</guid><description>&lt;p&gt;The term &amp;ldquo;HTAP&amp;rdquo; is the holy grail of database systems. It describes what every data engineer would
love: Being able to do all your data &lt;strong&gt;P&lt;/strong&gt;rocessing, no matter if it&amp;rsquo;s complex &lt;strong&gt;A&lt;/strong&gt;nalytics or
fast-paced &lt;strong&gt;T&lt;/strong&gt;ransactional operations in a single &lt;strong&gt;H&lt;/strong&gt;ybrid system.&lt;/p&gt;
&lt;p&gt;Many system have tried to enable HTAP but have found that building a truly hybrid system is an
impossible challenge. The keynote talk at Databricks Data + AI Summit 2026 highlighted that it is
impossible to get a query on the analytical warehouse to execute in less than 1 second. As a new
solution that solves this, the Databricks cofounder Reynold Xin announced &amp;ldquo;Databricks LTAP&amp;rdquo; and
directly cited our paper on &amp;ldquo;Morsel-Driven Parallelism&amp;rdquo; as one of the &amp;ldquo;latest and coolest academic
papers&amp;rdquo;:&lt;/p&gt;</description></item><item><title>Prompts Don't Enforce Business Rules. Databases Do.</title><link>https://cedardb.com/blog/enforce_database_permissions_agents/</link><pubDate>Thu, 11 Jun 2026 00:00:00 +0000</pubDate><guid>https://cedardb.com/blog/enforce_database_permissions_agents/</guid><description>&lt;p&gt;CedarDB co-founder Lukas Vogel on why AI agents are forcing a long-overdue conversation about where enforcement actually lives.
AI agents can now write and execute SQL. That changes everything about how you think about data security.&lt;/p&gt;
&lt;p&gt;For decades, permission checks lived in the application layer. That worked fine when applications were deterministic. But agents generate queries dynamically, decide what actions to take, and move fast. If enforcement lives above the database, eventually something gets through that shouldn&amp;rsquo;t.&lt;/p&gt;</description></item><item><title>CedarDB: Features of April 2026</title><link>https://cedardb.com/blog/release_notes/april_2026/</link><pubDate>Wed, 27 May 2026 00:00:00 +0000</pubDate><guid>https://cedardb.com/blog/release_notes/april_2026/</guid><description>&lt;p&gt;This post takes a closer look at some of the most impactful features we have shipped in CedarDB across our &lt;a href="https://cedardb.com/docs/releases/"&gt;recent releases&lt;/a&gt;. Whether you have been following along closely or are just catching up, here is a deeper look at the additions we are most excited about.&lt;/p&gt;
&lt;h2 id="set-returning-functions-lock-step-evaluation"&gt;Set-Returning Functions: Lock-Step Evaluation&lt;/h2&gt;
&lt;p class="post-version"&gt;v2026-04-20&lt;/p&gt;

&lt;p&gt;When handling bulk data transformations or speeding up database inserts, a popular developer trick is to use multiple set-returning functions side-by-side in the &lt;code&gt;SELECT&lt;/code&gt; clause to &amp;ldquo;zip&amp;rdquo; arrays together into individual rows. To improve performance and scalability, PostgreSQL changed its behavior regarding this in version 10, shifting from generating a massive cross-product to a much more efficient lock-step evaluation (see the &lt;a href="https://www.postgresql.org/docs/10/release-10.html"&gt;PostgreSQL 10 Release Notes&lt;/a&gt;).&lt;/p&gt;</description></item><item><title>Introducing DoomBench - Can Your Data Stack Run DOOM?</title><link>https://cedardb.com/blog/doombench/</link><pubDate>Wed, 22 Apr 2026 00:00:00 +0000</pubDate><guid>https://cedardb.com/blog/doombench/</guid><description>&lt;h1 id="can-your-data-stack-run-doom"&gt;Can Your Data Stack Run DOOM?&lt;/h1&gt;
&lt;h2 id="tldr"&gt;TL;DR&lt;/h2&gt;
&lt;p&gt;We ran a multiplayer DOOM server in pure SQL on different data stack architectures, recorded nice videos, and measured what breaks first.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://cedardb.com/doombench/"&gt;Click here&lt;/a&gt; to go directly to the benchmark page (with videos).&lt;/li&gt;
&lt;li&gt;Here is a video of CedarDB being &amp;ldquo;DOOMbench&amp;rdquo;-ed:
&lt;video controls loop&gt;
&lt;source src="cedardb_replay.mp4" type="video/mp4"&gt;
Your browser does not support the video tag.
&lt;/video&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="why-doom"&gt;Why DOOM?&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;Pedantic note: The original DOOMQL uses raycasting, not &lt;a href="https://en.wikipedia.org/wiki/Binary_space_partitioning"&gt;BSP trees&lt;/a&gt;, making it technically more Wolfenstein than DOOM as some people &lt;a href="https://news.ycombinator.com/item?id=45196767"&gt;pointed out&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>CedarDB: Features of March 2026</title><link>https://cedardb.com/blog/release_notes/march_2026/</link><pubDate>Wed, 15 Apr 2026 00:00:00 +0000</pubDate><guid>https://cedardb.com/blog/release_notes/march_2026/</guid><description>&lt;p&gt;This post takes a closer look at some of the most impactful features we have shipped in CedarDB across our &lt;a href="https://cedardb.com/docs/releases/"&gt;recent releases&lt;/a&gt;. Whether you have been following along closely or are just catching up, here is a deeper look at the additions we are most excited about.&lt;/p&gt;
&lt;h2 id="role-based-access-control"&gt;Role-Based Access Control&lt;/h2&gt;
&lt;p class="post-version"&gt;v2026-04-02&lt;/p&gt;

&lt;p&gt;Controlling who can access and modify data is foundational for any production deployment. CedarDB now ships a fully PostgreSQL-compatible &lt;strong&gt;role-based access control (RBAC)&lt;/strong&gt; system that lets you define fine-grained permissions and compose them into hierarchies that mirror your organization.&lt;/p&gt;</description></item><item><title>CedarDB: Catching Up on Recent Releases</title><link>https://cedardb.com/blog/release_notes/early_2026/</link><pubDate>Fri, 20 Mar 2026 00:00:00 +0000</pubDate><guid>https://cedardb.com/blog/release_notes/early_2026/</guid><description>&lt;h1 id="cedardb-catching-up-on-recent-releases"&gt;CedarDB: Catching Up on Recent Releases&lt;/h1&gt;
&lt;p&gt;This post takes a closer look at some of the most impactful features we have shipped in CedarDB across our &lt;a href="https://cedardb.com/docs/releases/"&gt;recent releases&lt;/a&gt;. Whether you have been following along closely or are just catching up, here is a deeper look at the additions we are most excited about.&lt;/p&gt;
&lt;h2 id="parquet-support-your-on-ramp-to-cedardb"&gt;Parquet support: Your On-Ramp to CedarDB&lt;/h2&gt;
&lt;p class="post-version"&gt;v2026-03-03&lt;/p&gt;

&lt;p&gt;Due to the significant compression facilitated by its columnar format, Parquet has become quite popular in the past several years. Today we find Parquet in projects like Spark, DuckDB, Apache Iceberg, ClickHouse, and others. Because of this, Parquet has become not only a data format for running analytical queries, but also a handy format for data exchange between OLAP engines. CedarDB is now able to read Parquet data and directly load it into its own native data format with a single SQL statement:&lt;/p&gt;</description></item><item><title>Get Started</title><link>https://cedardb.com/get-started/</link><pubDate>Wed, 11 Feb 2026 00:00:00 +0000</pubDate><guid>https://cedardb.com/get-started/</guid><description/></item><item><title>Parquet as our 'Ski Lift' to Migrate from ClickHouse to CedarDB</title><link>https://cedardb.com/blog/ski_parquet/</link><pubDate>Wed, 11 Feb 2026 00:00:00 +0000</pubDate><guid>https://cedardb.com/blog/ski_parquet/</guid><description>&lt;h2 id="the-newly-released-parquet-support-in-cedardb-streamlines-data-exchange"&gt;The newly released Parquet support in CedarDB streamlines data exchange.&lt;/h2&gt;
&lt;p&gt;My recent
&lt;a href="https://www.linkedin.com/posts/migoddard_all-this-snow-has-me-thinking-about-skiing-activity-7422324296859078657-tO21"&gt;LinkedIn post&lt;/a&gt;
(below, with minor changes) provides the motivation for the more detailed deep
dive presented in this article:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;All this snow has me thinking about skiing (again). And data. And databases.
I was inspired by the &amp;ldquo;Analyzing &lt;strong&gt;Stack Overflow&lt;/strong&gt; data with ClickHouse&amp;rdquo; article I
read, thinking how amazing it is they just raised $400M. After working through
their examples, it occurred to me that, as fun as that was, the SQL queries
there were very simple. In skiing jargon, I might liken them to the green ski
runs, for beginners.&lt;/em&gt;&lt;/p&gt;</description></item><item><title>My Take on Vibe Coding</title><link>https://cedardb.com/blog/moritz/vibe_coding/</link><pubDate>Wed, 04 Feb 2026 00:00:00 +0000</pubDate><guid>https://cedardb.com/blog/moritz/vibe_coding/</guid><description>&lt;p&gt;I often enjoy vibe coding, but I think we&amp;rsquo;re still far away from AI writing all your code. Newer models improve your development speed, even for complex applications. However, writing a usable browser from scratch without the heavy involvement of an experienced engineer is certainly not something that&amp;rsquo;s currently possible.&lt;/p&gt;
&lt;p&gt;For me, vibe coding works well most of the time if I have a very good understanding of what I need. For tasks that Claude Code solves well, it saves me a lot of time, but it&amp;rsquo;s still not &amp;ldquo;hands-off&amp;rdquo;. To converge to an acceptable result faster, I often need to give very specific instructions (e.g. &amp;ldquo;don&amp;rsquo;t manually create and delete temporary files in Python, just use the tempfile module&amp;rdquo;). Sometimes, I also just waste a lot of time and don&amp;rsquo;t get any working result at all.&lt;/p&gt;</description></item><item><title>Efficient String Compression for Modern Database Systems</title><link>https://cedardb.com/blog/string_compression/</link><pubDate>Thu, 29 Jan 2026 00:00:00 +0000</pubDate><guid>https://cedardb.com/blog/string_compression/</guid><description>&lt;h2 id="why-you-should-care-about-strings"&gt;Why you should care about strings&lt;/h2&gt;
&lt;p&gt;If dealing with strings wasn&amp;rsquo;t important, why bother thinking about compressing them?
Whether you like it or not, &amp;ldquo;strings are everywhere&amp;rdquo;&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;. They are by far the most prominent data type in the real world. In fact, roughly 50% of data is &lt;strong&gt;stored&lt;/strong&gt; as strings.
This is largely because strings are flexible and convenient: you can store almost anything as a string. As a result, they’re often used even when better alternatives exist.
For example, have you ever found yourself storing enum-like values in a text column? Or, even worse, using a text column for UUIDs? Guilty as charged, I&amp;rsquo;ve done it too, and it turns out this is actually very common.&lt;sup id="fnref1:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;</description></item><item><title>The Agent-Native Database</title><link>https://cedardb.com/ai/</link><pubDate>Thu, 01 Jan 2026 08:00:00 -0700</pubDate><guid>https://cedardb.com/ai/</guid><description/></item><item><title>Stop Nesting Database Systems</title><link>https://cedardb.com/blog/unnest_dbs/</link><pubDate>Wed, 18 Dec 2024 00:00:00 +0000</pubDate><guid>https://cedardb.com/blog/unnest_dbs/</guid><description>&lt;p&gt;The idea of embedding fast data processing engines into other systems to speed up analytics is not new.
In fact, DuckDBs started out as &lt;a href="https://duckdb.org/2021/05/14/sql-on-pandas"&gt;SQL Analytics on Pandas&lt;/a&gt;.
Meta had a similar vision for its &lt;a href="https://velox-lib.io/"&gt;Velox project&lt;/a&gt;, which takes a slightly different approach by building an embeddable execution engine distributed as a C++ library.
If you&amp;rsquo;re considering building your own analytics engine, embedding an existing engine is almost always a better choice. Don&amp;rsquo;t roll your own &lt;del&gt;crypto&lt;/del&gt; analytics engine.&lt;/p&gt;</description></item><item><title>CedarDB Takes to the Slopes!</title><link>https://cedardb.com/blog/takes_to_the_slopes/</link><pubDate>Tue, 25 Nov 2025 00:00:00 +0000</pubDate><guid>https://cedardb.com/blog/takes_to_the_slopes/</guid><description>&lt;h2 id="cedardb-tames-the-slopes-of-the-graph"&gt;CedarDB Tames the Slopes (of the graph)&lt;/h2&gt;
&lt;p&gt;It would be natural to ask about the connection between skiing, or &lt;em&gt;taking to
the slopes&lt;/em&gt;, and database systems. That connection arose out of the way I related to
the graph, below, that I created for a recent POC, showing the relationship between the time to run 750 queries
against a table, for various row counts, in PostgreSQL, TimescaleDB, and CedarDB.&lt;/p&gt;
&lt;p&gt;&lt;img src="./track_plays_n_rows_vs_t_PG_TimescaleDB_CedarDB.png" alt="Time as a function of row count"&gt;&lt;/p&gt;</description></item><item><title>Down with template (or not)!</title><link>https://cedardb.com/blog/down_with_template/</link><pubDate>Fri, 31 Oct 2025 00:00:00 +0000</pubDate><guid>https://cedardb.com/blog/down_with_template/</guid><description>&lt;h1 id="down-with-template-or-not"&gt;Down with template (or not)!&lt;/h1&gt;
&lt;p&gt;If you are one of the few people in the world who, like me, actively follow the progress of the C++ standardization, you know that the C++ standard evolves significantly from each version to the next. The proposals often even have funny names like “&lt;a href="https://wg21.link/P0738"&gt;I Stream, You Stream, We All Stream for istream_iterator&lt;/a&gt;”, “&lt;a href="https://wg21.link/P3776"&gt;More trailing commas&lt;/a&gt;”, “&lt;a href="https://wg21.link/P3737"&gt;std::array is a wrapper for an array!&lt;/a&gt;”, or “&lt;a href="https://wg21.link/P0634"&gt;Down with typename!&lt;/a&gt;”.&lt;/p&gt;</description></item><item><title>Building a DOOM-like multiplayer shooter in pure SQL</title><link>https://cedardb.com/blog/doomql/</link><pubDate>Mon, 08 Sep 2025 00:00:00 +0000</pubDate><guid>https://cedardb.com/blog/doomql/</guid><description>&lt;h1 id="doomql-a-doom-like-multiplayer-shooter-in-pure-sql"&gt;DOOMQL: A DOOM-like multiplayer shooter in pure SQL&lt;/h1&gt;
&lt;p&gt;I recently stumbled across Patrick&amp;rsquo;s excellent &lt;a href="https://www.hey.earth/posts/duckdb-doom"&gt;DOOM clone&lt;/a&gt; running in a browser powered by DuckDB-WASM.
Ever since I&amp;rsquo;ve read that, I wanted to push his awesome idea to the logical extreme: Build a &lt;strong&gt;multiplayer&lt;/strong&gt; DOOM-like shooter &lt;strong&gt;entirely&lt;/strong&gt; in SQL with CedarDB doing all the heavy lifting.
During a month of parental leave (i.e., a lot of sleepless nights), I tried exactly that.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s a sneak peek at DOOMQL:&lt;/p&gt;</description></item><item><title>CockroachDB and CedarDB: Better Together</title><link>https://cedardb.com/blog/crdb_cdc_cedardb/</link><pubDate>Thu, 21 Aug 2025 00:00:00 +0000</pubDate><guid>https://cedardb.com/blog/crdb_cdc_cedardb/</guid><description>&lt;h2 id="cockroachdb-and-cedardb-better-together"&gt;CockroachDB and CedarDB: Better Together&lt;/h2&gt;
&lt;p&gt;Even simple and innocent looking queries can prove quite challenging for
industry-leading transactional databse systems. Take the innocent task of
finding the the 10 top-grossing items, along with how much we sold, how much
money they made, what we usually charge per unit, how often they ship from a
remote warehouse, and how much stock is still left in the warehouse.&lt;/p&gt;
&lt;p&gt;&lt;img src="./tpcc_erd.png" alt="TPC-C entity relationship diagram"&gt;&lt;/p&gt;</description></item><item><title>CedarDB Community and Enterprise Edition - Open Source Licenses</title><link>https://cedardb.com/legal/oss_licenses/</link><pubDate>Wed, 20 Aug 2025 00:00:00 +0000</pubDate><guid>https://cedardb.com/legal/oss_licenses/</guid><description>&lt;!-- BEGIN CedarDB GENERATED LICENSES --&gt;
&lt;details class="collapsible"&gt;
 &lt;summary&gt;The LLVM Project&lt;/summary&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;==============================================================================
The LLVM Project is under the Apache License v2.0 with LLVM Exceptions:
==============================================================================

 Apache License
 Version 2.0, January 2004
 http://www.apache.org/licenses/

 TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

 1. Definitions.

 &amp;#34;License&amp;#34; shall mean the terms and conditions for use, reproduction,
 and distribution as defined by Sections 1 through 9 of this document.

 &amp;#34;Licensor&amp;#34; shall mean the copyright owner or entity authorized by
 the copyright owner that is granting the License.

 &amp;#34;Legal Entity&amp;#34; shall mean the union of the acting entity and all
 other entities that control, are controlled by, or are under common
 control with that entity. For the purposes of this definition,
 &amp;#34;control&amp;#34; means (i) the power, direct or indirect, to cause the
 direction or management of such entity, whether by contract or
 otherwise, or (ii) ownership of fifty percent (50%) or more of the
 outstanding shares, or (iii) beneficial ownership of such entity.

 &amp;#34;You&amp;#34; (or &amp;#34;Your&amp;#34;) shall mean an individual or Legal Entity
 exercising permissions granted by this License.

 &amp;#34;Source&amp;#34; form shall mean the preferred form for making modifications,
 including but not limited to software source code, documentation
 source, and configuration files.

 &amp;#34;Object&amp;#34; form shall mean any form resulting from mechanical
 transformation or translation of a Source form, including but
 not limited to compiled object code, generated documentation,
 and conversions to other media types.

 &amp;#34;Work&amp;#34; shall mean the work of authorship, whether in Source or
 Object form, made available under the License, as indicated by a
 copyright notice that is included in or attached to the work
 (an example is provided in the Appendix below).

 &amp;#34;Derivative Works&amp;#34; shall mean any work, whether in Source or Object
 form, that is based on (or derived from) the Work and for which the
 editorial revisions, annotations, elaborations, or other modifications
 represent, as a whole, an original work of authorship. For the purposes
 of this License, Derivative Works shall not include works that remain
 separable from, or merely link (or bind by name) to the interfaces of,
 the Work and Derivative Works thereof.

 &amp;#34;Contribution&amp;#34; shall mean any work of authorship, including
 the original version of the Work and any modifications or additions
 to that Work or Derivative Works thereof, that is intentionally
 submitted to Licensor for inclusion in the Work by the copyright owner
 or by an individual or Legal Entity authorized to submit on behalf of
 the copyright owner. For the purposes of this definition, &amp;#34;submitted&amp;#34;
 means any form of electronic, verbal, or written communication sent
 to the Licensor or its representatives, including but not limited to
 communication on electronic mailing lists, source code control systems,
 and issue tracking systems that are managed by, or on behalf of, the
 Licensor for the purpose of discussing and improving the Work, but
 excluding communication that is conspicuously marked or otherwise
 designated in writing by the copyright owner as &amp;#34;Not a Contribution.&amp;#34;

 &amp;#34;Contributor&amp;#34; shall mean Licensor and any individual or Legal Entity
 on behalf of whom a Contribution has been received by Licensor and
 subsequently incorporated within the Work.

 2. Grant of Copyright License. Subject to the terms and conditions of
 this License, each Contributor hereby grants to You a perpetual,
 worldwide, non-exclusive, no-charge, royalty-free, irrevocable
 copyright license to reproduce, prepare Derivative Works of,
 publicly display, publicly perform, sublicense, and distribute the
 Work and such Derivative Works in Source or Object form.

 3. Grant of Patent License. Subject to the terms and conditions of
 this License, each Contributor hereby grants to You a perpetual,
 worldwide, non-exclusive, no-charge, royalty-free, irrevocable
 (except as stated in this section) patent license to make, have made,
 use, offer to sell, sell, import, and otherwise transfer the Work,
 where such license applies only to those patent claims licensable
 by such Contributor that are necessarily infringed by their
 Contribution(s) alone or by combination of their Contribution(s)
 with the Work to which such Contribution(s) was submitted. If You
 institute patent litigation against any entity (including a
 cross-claim or counterclaim in a lawsuit) alleging that the Work
 or a Contribution incorporated within the Work constitutes direct
 or contributory patent infringement, then any patent licenses
 granted to You under this License for that Work shall terminate
 as of the date such litigation is filed.

 4. Redistribution. You may reproduce and distribute copies of the
 Work or Derivative Works thereof in any medium, with or without
 modifications, and in Source or Object form, provided that You
 meet the following conditions:

 (a) You must give any other recipients of the Work or
 Derivative Works a copy of this License; and

 (b) You must cause any modified files to carry prominent notices
 stating that You changed the files; and

 (c) You must retain, in the Source form of any Derivative Works
 that You distribute, all copyright, patent, trademark, and
 attribution notices from the Source form of the Work,
 excluding those notices that do not pertain to any part of
 the Derivative Works; and

 (d) If the Work includes a &amp;#34;NOTICE&amp;#34; text file as part of its
 distribution, then any Derivative Works that You distribute must
 include a readable copy of the attribution notices contained
 within such NOTICE file, excluding those notices that do not
 pertain to any part of the Derivative Works, in at least one
 of the following places: within a NOTICE text file distributed
 as part of the Derivative Works; within the Source form or
 documentation, if provided along with the Derivative Works; or,
 within a display generated by the Derivative Works, if and
 wherever such third-party notices normally appear. The contents
 of the NOTICE file are for informational purposes only and
 do not modify the License. You may add Your own attribution
 notices within Derivative Works that You distribute, alongside
 or as an addendum to the NOTICE text from the Work, provided
 that such additional attribution notices cannot be construed
 as modifying the License.

 You may add Your own copyright statement to Your modifications and
 may provide additional or different license terms and conditions
 for use, reproduction, or distribution of Your modifications, or
 for any such Derivative Works as a whole, provided Your use,
 reproduction, and distribution of the Work otherwise complies with
 the conditions stated in this License.

 5. Submission of Contributions. Unless You explicitly state otherwise,
 any Contribution intentionally submitted for inclusion in the Work
 by You to the Licensor shall be under the terms and conditions of
 this License, without any additional terms or conditions.
 Notwithstanding the above, nothing herein shall supersede or modify
 the terms of any separate license agreement you may have executed
 with Licensor regarding such Contributions.

 6. Trademarks. This License does not grant permission to use the trade
 names, trademarks, service marks, or product names of the Licensor,
 except as required for reasonable and customary use in describing the
 origin of the Work and reproducing the content of the NOTICE file.

 7. Disclaimer of Warranty. Unless required by applicable law or
 agreed to in writing, Licensor provides the Work (and each
 Contributor provides its Contributions) on an &amp;#34;AS IS&amp;#34; BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
 implied, including, without limitation, any warranties or conditions
 of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
 PARTICULAR PURPOSE. You are solely responsible for determining the
 appropriateness of using or redistributing the Work and assume any
 risks associated with Your exercise of permissions under this License.

 8. Limitation of Liability. In no event and under no legal theory,
 whether in tort (including negligence), contract, or otherwise,
 unless required by applicable law (such as deliberate and grossly
 negligent acts) or agreed to in writing, shall any Contributor be
 liable to You for damages, including any direct, indirect, special,
 incidental, or consequential damages of any character arising as a
 result of this License or out of the use or inability to use the
 Work (including but not limited to damages for loss of goodwill,
 work stoppage, computer failure or malfunction, or any and all
 other commercial damages or losses), even if such Contributor
 has been advised of the possibility of such damages.

 9. Accepting Warranty or Additional Liability. While redistributing
 the Work or Derivative Works thereof, You may choose to offer,
 and charge a fee for, acceptance of support, warranty, indemnity,
 or other liability obligations and/or rights consistent with this
 License. However, in accepting such obligations, You may act only
 on Your own behalf and on Your sole responsibility, not on behalf
 of any other Contributor, and only if You agree to indemnify,
 defend, and hold each Contributor harmless for any liability
 incurred by, or claims asserted against, such Contributor by reason
 of your accepting any such warranty or additional liability.

 END OF TERMS AND CONDITIONS

 APPENDIX: How to apply the Apache License to your work.

 To apply the Apache License to your work, attach the following
 boilerplate notice, with the fields enclosed by brackets &amp;#34;[]&amp;#34;
 replaced with your own identifying information. (Don&amp;#39;t include
 the brackets!) The text should be enclosed in the appropriate
 comment syntax for the file format. We also recommend that a
 file or class name and description of purpose be included on the
 same &amp;#34;printed page&amp;#34; as the copyright notice for easier
 identification within third-party archives.

 Copyright [yyyy] [name of copyright owner]

 Licensed under the Apache License, Version 2.0 (the &amp;#34;License&amp;#34;);
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at

 http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an &amp;#34;AS IS&amp;#34; BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.


---- LLVM Exceptions to the Apache 2.0 License ----

As an exception, if, as a result of your compiling your source code, portions
of this Software are embedded into an Object form of such source code, you
may redistribute such embedded portions in such Object form without complying
with the conditions of Sections 4(a), 4(b) and 4(d) of the License.

In addition, if you combine or link compiled forms of this Software with
software that is licensed under the GPLv2 (&amp;#34;Combined Software&amp;#34;) and if a
court of competent jurisdiction determines that the patent provision (Section
3), the indemnity provision (Section 9) or other Section of the License
conflicts with the conditions of the GPLv2, you may retroactively and
prospectively choose to deem waived or otherwise exclude such Section(s) of
the License, but only in their entirety and only with respect to the Combined
Software.

==============================================================================
Software from third parties included in the LLVM Project:
==============================================================================
The LLVM Project contains third party software which is under different license
terms. All such code will be identified clearly using at least one of two
mechanisms:
1) It will be in a separate directory tree with its own `LICENSE.txt` or
 `LICENSE` file at the top containing the specific license and restrictions
 which apply to that software, or
2) It will contain specific license and restriction terms at the top of every
 file.

==============================================================================
Legacy LLVM License (https://llvm.org/docs/DeveloperPolicy.html#legacy):
==============================================================================
University of Illinois/NCSA
Open Source License

Copyright (c) 2003-2019 University of Illinois at Urbana-Champaign.
All rights reserved.

Developed by:

 LLVM Team

 University of Illinois at Urbana-Champaign

 http://llvm.org

Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the &amp;#34;Software&amp;#34;), to deal with
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
of the Software, and to permit persons to whom the Software is furnished to do
so, subject to the following conditions:

 * Redistributions of source code must retain the above copyright notice,
 this list of conditions and the following disclaimers.

 * Redistributions in binary form must reproduce the above copyright notice,
 this list of conditions and the following disclaimers in the
 documentation and/or other materials provided with the distribution.

 * Neither the names of the LLVM Team, University of Illinois at
 Urbana-Champaign, nor the names of its contributors may be used to
 endorse or promote products derived from this Software without specific
 prior written permission.

THE SOFTWARE IS PROVIDED &amp;#34;AS IS&amp;#34;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE
SOFTWARE.
&lt;/code&gt;&lt;/pre&gt;&lt;/details&gt;
&lt;details class="collapsible"&gt;
 &lt;summary&gt;Unicode ICU&lt;/summary&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;UNICODE LICENSE V3

COPYRIGHT AND PERMISSION NOTICE

Copyright © 2016-2025 Unicode, Inc.

NOTICE TO USER: Carefully read the following legal agreement. BY
DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING DATA FILES, AND/OR
SOFTWARE, YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT
DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.

Permission is hereby granted, free of charge, to any person obtaining a
copy of data files and any associated documentation (the &amp;#34;Data Files&amp;#34;) or
software and any associated documentation (the &amp;#34;Software&amp;#34;) to deal in the
Data Files or Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, and/or sell
copies of the Data Files or Software, and to permit persons to whom the
Data Files or Software are furnished to do so, provided that either (a)
this copyright and permission notice appear with all copies of the Data
Files or Software, or (b) this copyright and permission notice appear in
associated Documentation.

THE DATA FILES AND SOFTWARE ARE PROVIDED &amp;#34;AS IS&amp;#34;, WITHOUT WARRANTY OF ANY
KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
THIRD PARTY RIGHTS.

IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE
BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES,
OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA
FILES OR SOFTWARE.

Except as contained in this notice, the name of a copyright holder shall
not be used in advertising or otherwise to promote the sale, use or other
dealings in these Data Files or Software without prior written
authorization of the copyright holder.

SPDX-License-Identifier: Unicode-3.0

----------------------------------------------------------------------

Third-Party Software Licenses

This section contains third-party software notices and/or additional
terms for licensed third-party software components included within ICU
libraries.

----------------------------------------------------------------------

ICU License - ICU 1.8.1 to ICU 57.1

COPYRIGHT AND PERMISSION NOTICE

Copyright (c) 1995-2016 International Business Machines Corporation and others
All rights reserved.

Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
&amp;#34;Software&amp;#34;), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, and/or sell copies of the Software, and to permit persons
to whom the Software is furnished to do so, provided that the above
copyright notice(s) and this permission notice appear in all copies of
the Software and that both the above copyright notice(s) and this
permission notice appear in supporting documentation.

THE SOFTWARE IS PROVIDED &amp;#34;AS IS&amp;#34;, WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY
SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER
RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

Except as contained in this notice, the name of a copyright holder
shall not be used in advertising or otherwise to promote the sale, use
or other dealings in this Software without prior written authorization
of the copyright holder.

All trademarks and registered trademarks mentioned herein are the
property of their respective owners.

----------------------------------------------------------------------

Time Zone Database

 ICU uses the public domain data and code derived from Time Zone
Database for its time zone support. The ownership of the TZ database
is explained in BCP 175: Procedure for Maintaining the Time Zone
Database section 7.

 # 7. Database Ownership
 #
 # The TZ database itself is not an IETF Contribution or an IETF
 # document. Rather it is a pre-existing and regularly updated work
 # that is in the public domain, and is intended to remain in the
 # public domain. Therefore, BCPs 78 [RFC5378] and 79 [RFC3979] do
 # not apply to the TZ Database or contributions that individuals make
 # to it. Should any claims be made and substantiated against the TZ
 # Database, the organization that is providing the IANA
 # Considerations defined in this RFC, under the memorandum of
 # understanding with the IETF, currently ICANN, may act in accordance
 # with all competent court orders. No ownership claims will be made
 # by ICANN or the IETF Trust on the database or the code. Any person
 # making a contribution to the database or code waives all rights to
 # future claims in that contribution or in the TZ Database.
&lt;/code&gt;&lt;/pre&gt;&lt;/details&gt;
&lt;details class="collapsible"&gt;
 &lt;summary&gt;xbyak&lt;/summary&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Copyright (c) 2007 MITSUNARI Shigeo
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
Neither the name of the copyright owner nor the names of its contributors may
be used to endorse or promote products derived from this software without
specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &amp;#34;AS IS&amp;#34;
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.
&lt;/code&gt;&lt;/pre&gt;&lt;/details&gt;
&lt;details class="collapsible"&gt;
 &lt;summary&gt;hopscotch map&lt;/summary&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;MIT License

Copyright (c) 2016 Thibaut Goetghebuer-Planchon &amp;lt;tessil@gmx.com&amp;gt;

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the &amp;#34;Software&amp;#34;), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED &amp;#34;AS IS&amp;#34;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
&lt;/code&gt;&lt;/pre&gt;&lt;/details&gt;
&lt;details class="collapsible"&gt;
 &lt;summary&gt;replxx&lt;/summary&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Copyright (c) 2017-2018, Marcin Konarski (amok at codestation.org) 
Copyright (c) 2010, Salvatore Sanfilippo (antirez at gmail dot com) 
Copyright (c) 2010, Pieter Noordhuis (pcnoordhuis at gmail dot com)

All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

 * Redistributions of source code must retain the above copyright notice,
 this list of conditions and the following disclaimer.
 * Redistributions in binary form must reproduce the above copyright
 notice, this list of conditions and the following disclaimer in the
 documentation and/or other materials provided with the distribution.
 * Neither the name of Redis nor the names of its contributors may be used
 to endorse or promote products derived from this software without
 specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &amp;#34;AS IS&amp;#34;
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.


wcwidth.cpp
===========

Markus Kuhn -- 2007-05-26 (Unicode 5.0)

Permission to use, copy, modify, and distribute this software
for any purpose and without fee is hereby granted. The author
disclaims all warranties with regard to this software.


ConvertUTF.cpp
==============

Copyright 2001-2004 Unicode, Inc.

Disclaimer

This source code is provided as is by Unicode, Inc. No claims are
made as to fitness for any particular purpose. No warranties of any
kind are expressed or implied. The recipient agrees to determine
applicability of information provided. If this file has been
purchased on magnetic or optical media from Unicode, Inc., the
sole remedy for any claim will be exchange of defective media
within 90 days of receipt.

Limitations on Rights to Redistribute This Code

Unicode, Inc. hereby grants the right to freely use the information
supplied in this file in the creation of products supporting the
Unicode Standard, and to make copies of this file in any form
for internal or external distribution as long as this notice
remains attached.
&lt;/code&gt;&lt;/pre&gt;&lt;/details&gt;
&lt;details class="collapsible"&gt;
 &lt;summary&gt;re2&lt;/summary&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Copyright (c) 2009 The RE2 Authors. All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:

 * Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
 * Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following disclaimer
in the documentation and/or other materials provided with the
distribution.
 * Neither the name of Google Inc. nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
&amp;#34;AS IS&amp;#34; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
&lt;/code&gt;&lt;/pre&gt;&lt;/details&gt;
&lt;details class="collapsible"&gt;
 &lt;summary&gt;AnyBlob&lt;/summary&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;The source code of AnyBlob as used in this software can be found at https://github.com/cedardb/AnyBlob

Mozilla Public License Version 2.0
==================================

1. Definitions
--------------

1.1. &amp;#34;Contributor&amp;#34;
 means each individual or legal entity that creates, contributes to
 the creation of, or owns Covered Software.

1.2. &amp;#34;Contributor Version&amp;#34;
 means the combination of the Contributions of others (if any) used
 by a Contributor and that particular Contributor&amp;#39;s Contribution.

1.3. &amp;#34;Contribution&amp;#34;
 means Covered Software of a particular Contributor.

1.4. &amp;#34;Covered Software&amp;#34;
 means Source Code Form to which the initial Contributor has attached
 the notice in Exhibit A, the Executable Form of such Source Code
 Form, and Modifications of such Source Code Form, in each case
 including portions thereof.

1.5. &amp;#34;Incompatible With Secondary Licenses&amp;#34;
 means

 (a) that the initial Contributor has attached the notice described
 in Exhibit B to the Covered Software; or

 (b) that the Covered Software was made available under the terms of
 version 1.1 or earlier of the License, but not also under the
 terms of a Secondary License.

1.6. &amp;#34;Executable Form&amp;#34;
 means any form of the work other than Source Code Form.

1.7. &amp;#34;Larger Work&amp;#34;
 means a work that combines Covered Software with other material, in
 a separate file or files, that is not Covered Software.

1.8. &amp;#34;License&amp;#34;
 means this document.

1.9. &amp;#34;Licensable&amp;#34;
 means having the right to grant, to the maximum extent possible,
 whether at the time of the initial grant or subsequently, any and
 all of the rights conveyed by this License.

1.10. &amp;#34;Modifications&amp;#34;
 means any of the following:

 (a) any file in Source Code Form that results from an addition to,
 deletion from, or modification of the contents of Covered
 Software; or

 (b) any new file in Source Code Form that contains any Covered
 Software.

1.11. &amp;#34;Patent Claims&amp;#34; of a Contributor
 means any patent claim(s), including without limitation, method,
 process, and apparatus claims, in any patent Licensable by such
 Contributor that would be infringed, but for the grant of the
 License, by the making, using, selling, offering for sale, having
 made, import, or transfer of either its Contributions or its
 Contributor Version.

1.12. &amp;#34;Secondary License&amp;#34;
 means either the GNU General Public License, Version 2.0, the GNU
 Lesser General Public License, Version 2.1, the GNU Affero General
 Public License, Version 3.0, or any later versions of those
 licenses.

1.13. &amp;#34;Source Code Form&amp;#34;
 means the form of the work preferred for making modifications.

1.14. &amp;#34;You&amp;#34; (or &amp;#34;Your&amp;#34;)
 means an individual or a legal entity exercising rights under this
 License. For legal entities, &amp;#34;You&amp;#34; includes any entity that
 controls, is controlled by, or is under common control with You. For
 purposes of this definition, &amp;#34;control&amp;#34; means (a) the power, direct
 or indirect, to cause the direction or management of such entity,
 whether by contract or otherwise, or (b) ownership of more than
 fifty percent (50%) of the outstanding shares or beneficial
 ownership of such entity.

2. License Grants and Conditions
--------------------------------

2.1. Grants

Each Contributor hereby grants You a world-wide, royalty-free,
non-exclusive license:

(a) under intellectual property rights (other than patent or trademark)
 Licensable by such Contributor to use, reproduce, make available,
 modify, display, perform, distribute, and otherwise exploit its
 Contributions, either on an unmodified basis, with Modifications, or
 as part of a Larger Work; and

(b) under Patent Claims of such Contributor to make, use, sell, offer
 for sale, have made, import, and otherwise transfer either its
 Contributions or its Contributor Version.

2.2. Effective Date

The licenses granted in Section 2.1 with respect to any Contribution
become effective for each Contribution on the date the Contributor first
distributes such Contribution.

2.3. Limitations on Grant Scope

The licenses granted in this Section 2 are the only rights granted under
this License. No additional rights or licenses will be implied from the
distribution or licensing of Covered Software under this License.
Notwithstanding Section 2.1(b) above, no patent license is granted by a
Contributor:

(a) for any code that a Contributor has removed from Covered Software;
 or

(b) for infringements caused by: (i) Your and any other third party&amp;#39;s
 modifications of Covered Software, or (ii) the combination of its
 Contributions with other software (except as part of its Contributor
 Version); or

(c) under Patent Claims infringed by Covered Software in the absence of
 its Contributions.

This License does not grant any rights in the trademarks, service marks,
or logos of any Contributor (except as may be necessary to comply with
the notice requirements in Section 3.4).

2.4. Subsequent Licenses

No Contributor makes additional grants as a result of Your choice to
distribute the Covered Software under a subsequent version of this
License (see Section 10.2) or under the terms of a Secondary License (if
permitted under the terms of Section 3.3).

2.5. Representation

Each Contributor represents that the Contributor believes its
Contributions are its original creation(s) or it has sufficient rights
to grant the rights to its Contributions conveyed by this License.

2.6. Fair Use

This License is not intended to limit any rights You have under
applicable copyright doctrines of fair use, fair dealing, or other
equivalents.

2.7. Conditions

Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
in Section 2.1.

3. Responsibilities
-------------------

3.1. Distribution of Source Form

All distribution of Covered Software in Source Code Form, including any
Modifications that You create or to which You contribute, must be under
the terms of this License. You must inform recipients that the Source
Code Form of the Covered Software is governed by the terms of this
License, and how they can obtain a copy of this License. You may not
attempt to alter or restrict the recipients&amp;#39; rights in the Source Code
Form.

3.2. Distribution of Executable Form

If You distribute Covered Software in Executable Form then:

(a) such Covered Software must also be made available in Source Code
 Form, as described in Section 3.1, and You must inform recipients of
 the Executable Form how they can obtain a copy of such Source Code
 Form by reasonable means in a timely manner, at a charge no more
 than the cost of distribution to the recipient; and

(b) You may distribute such Executable Form under the terms of this
 License, or sublicense it under different terms, provided that the
 license for the Executable Form does not attempt to limit or alter
 the recipients&amp;#39; rights in the Source Code Form under this License.

3.3. Distribution of a Larger Work

You may create and distribute a Larger Work under terms of Your choice,
provided that You also comply with the requirements of this License for
the Covered Software. If the Larger Work is a combination of Covered
Software with a work governed by one or more Secondary Licenses, and the
Covered Software is not Incompatible With Secondary Licenses, this
License permits You to additionally distribute such Covered Software
under the terms of such Secondary License(s), so that the recipient of
the Larger Work may, at their option, further distribute the Covered
Software under the terms of either this License or such Secondary
License(s).

3.4. Notices

You may not remove or alter the substance of any license notices
(including copyright notices, patent notices, disclaimers of warranty,
or limitations of liability) contained within the Source Code Form of
the Covered Software, except that You may alter any license notices to
the extent required to remedy known factual inaccuracies.

3.5. Application of Additional Terms

You may choose to offer, and to charge a fee for, warranty, support,
indemnity or liability obligations to one or more recipients of Covered
Software. However, You may do so only on Your own behalf, and not on
behalf of any Contributor. You must make it absolutely clear that any
such warranty, support, indemnity, or liability obligation is offered by
You alone, and You hereby agree to indemnify every Contributor for any
liability incurred by such Contributor as a result of warranty, support,
indemnity or liability terms You offer. You may include additional
disclaimers of warranty and limitations of liability specific to any
jurisdiction.

4. Inability to Comply Due to Statute or Regulation
---------------------------------------------------

If it is impossible for You to comply with any of the terms of this
License with respect to some or all of the Covered Software due to
statute, judicial order, or regulation then You must: (a) comply with
the terms of this License to the maximum extent possible; and (b)
describe the limitations and the code they affect. Such description must
be placed in a text file included with all distributions of the Covered
Software under this License. Except to the extent prohibited by statute
or regulation, such description must be sufficiently detailed for a
recipient of ordinary skill to be able to understand it.

5. Termination
--------------

5.1. The rights granted under this License will terminate automatically
if You fail to comply with any of its terms. However, if You become
compliant, then the rights granted under this License from a particular
Contributor are reinstated (a) provisionally, unless and until such
Contributor explicitly and finally terminates Your grants, and (b) on an
ongoing basis, if such Contributor fails to notify You of the
non-compliance by some reasonable means prior to 60 days after You have
come back into compliance. Moreover, Your grants from a particular
Contributor are reinstated on an ongoing basis if such Contributor
notifies You of the non-compliance by some reasonable means, this is the
first time You have received notice of non-compliance with this License
from such Contributor, and You become compliant prior to 30 days after
Your receipt of the notice.

5.2. If You initiate litigation against any entity by asserting a patent
infringement claim (excluding declaratory judgment actions,
counter-claims, and cross-claims) alleging that a Contributor Version
directly or indirectly infringes any patent, then the rights granted to
You by any and all Contributors for the Covered Software under Section
2.1 of this License shall terminate.

5.3. In the event of termination under Sections 5.1 or 5.2 above, all
end user license agreements (excluding distributors and resellers) which
have been validly granted by You or Your distributors under this License
prior to termination shall survive termination.

************************************************************************
* *
* 6. Disclaimer of Warranty *
* ------------------------- *
* *
* Covered Software is provided under this License on an &amp;#34;as is&amp;#34; *
* basis, without warranty of any kind, either expressed, implied, or *
* statutory, including, without limitation, warranties that the *
* Covered Software is free of defects, merchantable, fit for a *
* particular purpose or non-infringing. The entire risk as to the *
* quality and performance of the Covered Software is with You. *
* Should any Covered Software prove defective in any respect, You *
* (not any Contributor) assume the cost of any necessary servicing, *
* repair, or correction. This disclaimer of warranty constitutes an *
* essential part of this License. No use of any Covered Software is *
* authorized under this License except under this disclaimer. *
* *
************************************************************************

************************************************************************
* *
* 7. Limitation of Liability *
* -------------------------- *
* *
* Under no circumstances and under no legal theory, whether tort *
* (including negligence), contract, or otherwise, shall any *
* Contributor, or anyone who distributes Covered Software as *
* permitted above, be liable to You for any direct, indirect, *
* special, incidental, or consequential damages of any character *
* including, without limitation, damages for lost profits, loss of *
* goodwill, work stoppage, computer failure or malfunction, or any *
* and all other commercial damages or losses, even if such party *
* shall have been informed of the possibility of such damages. This *
* limitation of liability shall not apply to liability for death or *
* personal injury resulting from such party&amp;#39;s negligence to the *
* extent applicable law prohibits such limitation. Some *
* jurisdictions do not allow the exclusion or limitation of *
* incidental or consequential damages, so this exclusion and *
* limitation may not apply to You. *
* *
************************************************************************

8. Litigation
-------------

Any litigation relating to this License may be brought only in the
courts of a jurisdiction where the defendant maintains its principal
place of business and such litigation shall be governed by laws of that
jurisdiction, without reference to its conflict-of-law provisions.
Nothing in this Section shall prevent a party&amp;#39;s ability to bring
cross-claims or counter-claims.

9. Miscellaneous
----------------

This License represents the complete agreement concerning the subject
matter hereof. If any provision of this License is held to be
unenforceable, such provision shall be reformed only to the extent
necessary to make it enforceable. Any law or regulation which provides
that the language of a contract shall be construed against the drafter
shall not be used to construe this License against a Contributor.

10. Versions of the License
---------------------------

10.1. New Versions

Mozilla Foundation is the license steward. Except as provided in Section
10.3, no one other than the license steward has the right to modify or
publish new versions of this License. Each version will be given a
distinguishing version number.

10.2. Effect of New Versions

You may distribute the Covered Software under the terms of the version
of the License under which You originally received the Covered Software,
or under the terms of any subsequent version published by the license
steward.

10.3. Modified Versions

If you create software not governed by this License, and you want to
create a new license for such software, you may create and use a
modified version of this License if you rename the license and remove
any references to the name of the license steward (except to note that
such modified license differs from this License).

10.4. Distributing Source Code Form that is Incompatible With Secondary
Licenses

If You choose to distribute Source Code Form that is Incompatible With
Secondary Licenses under the terms of this version of the License, the
notice described in Exhibit B of this License must be attached.

Exhibit A - Source Code Form License Notice
-------------------------------------------

 This Source Code Form is subject to the terms of the Mozilla Public
 License, v. 2.0. If a copy of the MPL was not distributed with this
 file, You can obtain one at http://mozilla.org/MPL/2.0/.

If it is not possible or desirable to put the notice in a particular
file, then You may include the notice in a location (such as a LICENSE
file in a relevant directory) where a recipient would be likely to look
for such a notice.

You may add additional accurate notices of copyright ownership.

Exhibit B - &amp;#34;Incompatible With Secondary Licenses&amp;#34; Notice
---------------------------------------------------------

 This Source Code Form is &amp;#34;Incompatible With Secondary Licenses&amp;#34;, as
 defined by the Mozilla Public License, v. 2.0.
&lt;/code&gt;&lt;/pre&gt;&lt;/details&gt;
&lt;details class="collapsible"&gt;
 &lt;summary&gt;PostgreSQL&lt;/summary&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;PostgreSQL Database Management System
(formerly known as Postgres, then as Postgres95)

Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group

Portions Copyright (c) 1994, The Regents of the University of California

Permission to use, copy, modify, and distribute this software and its
documentation for any purpose, without fee, and without a written agreement
is hereby granted, provided that the above copyright notice and this
paragraph and the following two paragraphs appear in all copies.

IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR
DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING
LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS
DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.

THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
ON AN &amp;#34;AS IS&amp;#34; BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO
PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
&lt;/code&gt;&lt;/pre&gt;&lt;/details&gt;
&lt;details class="collapsible"&gt;
 &lt;summary&gt;Apache Thrift and Parquet Format&lt;/summary&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;
 Apache License
 Version 2.0, January 2004
 http://www.apache.org/licenses/

 TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

 1. Definitions.

 &amp;#34;License&amp;#34; shall mean the terms and conditions for use, reproduction,
 and distribution as defined by Sections 1 through 9 of this document.

 &amp;#34;Licensor&amp;#34; shall mean the copyright owner or entity authorized by
 the copyright owner that is granting the License.

 &amp;#34;Legal Entity&amp;#34; shall mean the union of the acting entity and all
 other entities that control, are controlled by, or are under common
 control with that entity. For the purposes of this definition,
 &amp;#34;control&amp;#34; means (i) the power, direct or indirect, to cause the
 direction or management of such entity, whether by contract or
 otherwise, or (ii) ownership of fifty percent (50%) or more of the
 outstanding shares, or (iii) beneficial ownership of such entity.

 &amp;#34;You&amp;#34; (or &amp;#34;Your&amp;#34;) shall mean an individual or Legal Entity
 exercising permissions granted by this License.

 &amp;#34;Source&amp;#34; form shall mean the preferred form for making modifications,
 including but not limited to software source code, documentation
 source, and configuration files.

 &amp;#34;Object&amp;#34; form shall mean any form resulting from mechanical
 transformation or translation of a Source form, including but
 not limited to compiled object code, generated documentation,
 and conversions to other media types.

 &amp;#34;Work&amp;#34; shall mean the work of authorship, whether in Source or
 Object form, made available under the License, as indicated by a
 copyright notice that is included in or attached to the work
 (an example is provided in the Appendix below).

 &amp;#34;Derivative Works&amp;#34; shall mean any work, whether in Source or Object
 form, that is based on (or derived from) the Work and for which the
 editorial revisions, annotations, elaborations, or other modifications
 represent, as a whole, an original work of authorship. For the purposes
 of this License, Derivative Works shall not include works that remain
 separable from, or merely link (or bind by name) to the interfaces of,
 the Work and Derivative Works thereof.

 &amp;#34;Contribution&amp;#34; shall mean any work of authorship, including
 the original version of the Work and any modifications or additions
 to that Work or Derivative Works thereof, that is intentionally
 submitted to Licensor for inclusion in the Work by the copyright owner
 or by an individual or Legal Entity authorized to submit on behalf of
 the copyright owner. For the purposes of this definition, &amp;#34;submitted&amp;#34;
 means any form of electronic, verbal, or written communication sent
 to the Licensor or its representatives, including but not limited to
 communication on electronic mailing lists, source code control systems,
 and issue tracking systems that are managed by, or on behalf of, the
 Licensor for the purpose of discussing and improving the Work, but
 excluding communication that is conspicuously marked or otherwise
 designated in writing by the copyright owner as &amp;#34;Not a Contribution.&amp;#34;

 &amp;#34;Contributor&amp;#34; shall mean Licensor and any individual or Legal Entity
 on behalf of whom a Contribution has been received by Licensor and
 subsequently incorporated within the Work.

 2. Grant of Copyright License. Subject to the terms and conditions of
 this License, each Contributor hereby grants to You a perpetual,
 worldwide, non-exclusive, no-charge, royalty-free, irrevocable
 copyright license to reproduce, prepare Derivative Works of,
 publicly display, publicly perform, sublicense, and distribute the
 Work and such Derivative Works in Source or Object form.

 3. Grant of Patent License. Subject to the terms and conditions of
 this License, each Contributor hereby grants to You a perpetual,
 worldwide, non-exclusive, no-charge, royalty-free, irrevocable
 (except as stated in this section) patent license to make, have made,
 use, offer to sell, sell, import, and otherwise transfer the Work,
 where such license applies only to those patent claims licensable
 by such Contributor that are necessarily infringed by their
 Contribution(s) alone or by combination of their Contribution(s)
 with the Work to which such Contribution(s) was submitted. If You
 institute patent litigation against any entity (including a
 cross-claim or counterclaim in a lawsuit) alleging that the Work
 or a Contribution incorporated within the Work constitutes direct
 or contributory patent infringement, then any patent licenses
 granted to You under this License for that Work shall terminate
 as of the date such litigation is filed.

 4. Redistribution. You may reproduce and distribute copies of the
 Work or Derivative Works thereof in any medium, with or without
 modifications, and in Source or Object form, provided that You
 meet the following conditions:

 (a) You must give any other recipients of the Work or
 Derivative Works a copy of this License; and

 (b) You must cause any modified files to carry prominent notices
 stating that You changed the files; and

 (c) You must retain, in the Source form of any Derivative Works
 that You distribute, all copyright, patent, trademark, and
 attribution notices from the Source form of the Work,
 excluding those notices that do not pertain to any part of
 the Derivative Works; and

 (d) If the Work includes a &amp;#34;NOTICE&amp;#34; text file as part of its
 distribution, then any Derivative Works that You distribute must
 include a readable copy of the attribution notices contained
 within such NOTICE file, excluding those notices that do not
 pertain to any part of the Derivative Works, in at least one
 of the following places: within a NOTICE text file distributed
 as part of the Derivative Works; within the Source form or
 documentation, if provided along with the Derivative Works; or,
 within a display generated by the Derivative Works, if and
 wherever such third-party notices normally appear. The contents
 of the NOTICE file are for informational purposes only and
 do not modify the License. You may add Your own attribution
 notices within Derivative Works that You distribute, alongside
 or as an addendum to the NOTICE text from the Work, provided
 that such additional attribution notices cannot be construed
 as modifying the License.

 You may add Your own copyright statement to Your modifications and
 may provide additional or different license terms and conditions
 for use, reproduction, or distribution of Your modifications, or
 for any such Derivative Works as a whole, provided Your use,
 reproduction, and distribution of the Work otherwise complies with
 the conditions stated in this License.

 5. Submission of Contributions. Unless You explicitly state otherwise,
 any Contribution intentionally submitted for inclusion in the Work
 by You to the Licensor shall be under the terms and conditions of
 this License, without any additional terms or conditions.
 Notwithstanding the above, nothing herein shall supersede or modify
 the terms of any separate license agreement you may have executed
 with Licensor regarding such Contributions.

 6. Trademarks. This License does not grant permission to use the trade
 names, trademarks, service marks, or product names of the Licensor,
 except as required for reasonable and customary use in describing the
 origin of the Work and reproducing the content of the NOTICE file.

 7. Disclaimer of Warranty. Unless required by applicable law or
 agreed to in writing, Licensor provides the Work (and each
 Contributor provides its Contributions) on an &amp;#34;AS IS&amp;#34; BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
 implied, including, without limitation, any warranties or conditions
 of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
 PARTICULAR PURPOSE. You are solely responsible for determining the
 appropriateness of using or redistributing the Work and assume any
 risks associated with Your exercise of permissions under this License.

 8. Limitation of Liability. In no event and under no legal theory,
 whether in tort (including negligence), contract, or otherwise,
 unless required by applicable law (such as deliberate and grossly
 negligent acts) or agreed to in writing, shall any Contributor be
 liable to You for damages, including any direct, indirect, special,
 incidental, or consequential damages of any character arising as a
 result of this License or out of the use or inability to use the
 Work (including but not limited to damages for loss of goodwill,
 work stoppage, computer failure or malfunction, or any and all
 other commercial damages or losses), even if such Contributor
 has been advised of the possibility of such damages.

 9. Accepting Warranty or Additional Liability. While redistributing
 the Work or Derivative Works thereof, You may choose to offer,
 and charge a fee for, acceptance of support, warranty, indemnity,
 or other liability obligations and/or rights consistent with this
 License. However, in accepting such obligations, You may act only
 on Your own behalf and on Your sole responsibility, not on behalf
 of any other Contributor, and only if You agree to indemnify,
 defend, and hold each Contributor harmless for any liability
 incurred by, or claims asserted against, such Contributor by reason
 of your accepting any such warranty or additional liability.

 END OF TERMS AND CONDITIONS

 APPENDIX: How to apply the Apache License to your work.

 To apply the Apache License to your work, attach the following
 boilerplate notice, with the fields enclosed by brackets &amp;#34;[]&amp;#34;
 replaced with your own identifying information. (Don&amp;#39;t include
 the brackets!) The text should be enclosed in the appropriate
 comment syntax for the file format. We also recommend that a
 file or class name and description of purpose be included on the
 same &amp;#34;printed page&amp;#34; as the copyright notice for easier
 identification within third-party archives.

 Copyright [yyyy] [name of copyright owner]

 Licensed under the Apache License, Version 2.0 (the &amp;#34;License&amp;#34;);
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at

 http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an &amp;#34;AS IS&amp;#34; BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
&lt;/code&gt;&lt;/pre&gt;&lt;/details&gt;
&lt;details class="collapsible"&gt;
 &lt;summary&gt;Boost&lt;/summary&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Boost Software License - Version 1.0 - August 17th, 2003

Permission is hereby granted, free of charge, to any person or organization
obtaining a copy of the software and accompanying documentation covered by
this license (the &amp;#34;Software&amp;#34;) to use, reproduce, display, distribute,
execute, and transmit the Software, and to prepare derivative works of the
Software, and to permit third-parties to whom the Software is furnished to
do so, all subject to the following:

The copyright notices in the Software and this entire statement, including
the above license grant, this restriction and the following disclaimer,
must be included in all copies of the Software, in whole or in part, and
all derivative works of the Software, unless such copies or derivative
works are solely in the form of machine-executable object code generated by
a source language processor.

THE SOFTWARE IS PROVIDED &amp;#34;AS IS&amp;#34;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
&lt;/code&gt;&lt;/pre&gt;&lt;/details&gt;
&lt;details class="collapsible"&gt;
 &lt;summary&gt;crypto&lt;/summary&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;
 Apache License
 Version 2.0, January 2004
 https://www.apache.org/licenses/

 TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

 1. Definitions.

 &amp;#34;License&amp;#34; shall mean the terms and conditions for use, reproduction,
 and distribution as defined by Sections 1 through 9 of this document.

 &amp;#34;Licensor&amp;#34; shall mean the copyright owner or entity authorized by
 the copyright owner that is granting the License.

 &amp;#34;Legal Entity&amp;#34; shall mean the union of the acting entity and all
 other entities that control, are controlled by, or are under common
 control with that entity. For the purposes of this definition,
 &amp;#34;control&amp;#34; means (i) the power, direct or indirect, to cause the
 direction or management of such entity, whether by contract or
 otherwise, or (ii) ownership of fifty percent (50%) or more of the
 outstanding shares, or (iii) beneficial ownership of such entity.

 &amp;#34;You&amp;#34; (or &amp;#34;Your&amp;#34;) shall mean an individual or Legal Entity
 exercising permissions granted by this License.

 &amp;#34;Source&amp;#34; form shall mean the preferred form for making modifications,
 including but not limited to software source code, documentation
 source, and configuration files.

 &amp;#34;Object&amp;#34; form shall mean any form resulting from mechanical
 transformation or translation of a Source form, including but
 not limited to compiled object code, generated documentation,
 and conversions to other media types.

 &amp;#34;Work&amp;#34; shall mean the work of authorship, whether in Source or
 Object form, made available under the License, as indicated by a
 copyright notice that is included in or attached to the work
 (an example is provided in the Appendix below).

 &amp;#34;Derivative Works&amp;#34; shall mean any work, whether in Source or Object
 form, that is based on (or derived from) the Work and for which the
 editorial revisions, annotations, elaborations, or other modifications
 represent, as a whole, an original work of authorship. For the purposes
 of this License, Derivative Works shall not include works that remain
 separable from, or merely link (or bind by name) to the interfaces of,
 the Work and Derivative Works thereof.

 &amp;#34;Contribution&amp;#34; shall mean any work of authorship, including
 the original version of the Work and any modifications or additions
 to that Work or Derivative Works thereof, that is intentionally
 submitted to Licensor for inclusion in the Work by the copyright owner
 or by an individual or Legal Entity authorized to submit on behalf of
 the copyright owner. For the purposes of this definition, &amp;#34;submitted&amp;#34;
 means any form of electronic, verbal, or written communication sent
 to the Licensor or its representatives, including but not limited to
 communication on electronic mailing lists, source code control systems,
 and issue tracking systems that are managed by, or on behalf of, the
 Licensor for the purpose of discussing and improving the Work, but
 excluding communication that is conspicuously marked or otherwise
 designated in writing by the copyright owner as &amp;#34;Not a Contribution.&amp;#34;

 &amp;#34;Contributor&amp;#34; shall mean Licensor and any individual or Legal Entity
 on behalf of whom a Contribution has been received by Licensor and
 subsequently incorporated within the Work.

 2. Grant of Copyright License. Subject to the terms and conditions of
 this License, each Contributor hereby grants to You a perpetual,
 worldwide, non-exclusive, no-charge, royalty-free, irrevocable
 copyright license to reproduce, prepare Derivative Works of,
 publicly display, publicly perform, sublicense, and distribute the
 Work and such Derivative Works in Source or Object form.

 3. Grant of Patent License. Subject to the terms and conditions of
 this License, each Contributor hereby grants to You a perpetual,
 worldwide, non-exclusive, no-charge, royalty-free, irrevocable
 (except as stated in this section) patent license to make, have made,
 use, offer to sell, sell, import, and otherwise transfer the Work,
 where such license applies only to those patent claims licensable
 by such Contributor that are necessarily infringed by their
 Contribution(s) alone or by combination of their Contribution(s)
 with the Work to which such Contribution(s) was submitted. If You
 institute patent litigation against any entity (including a
 cross-claim or counterclaim in a lawsuit) alleging that the Work
 or a Contribution incorporated within the Work constitutes direct
 or contributory patent infringement, then any patent licenses
 granted to You under this License for that Work shall terminate
 as of the date such litigation is filed.

 4. Redistribution. You may reproduce and distribute copies of the
 Work or Derivative Works thereof in any medium, with or without
 modifications, and in Source or Object form, provided that You
 meet the following conditions:

 (a) You must give any other recipients of the Work or
 Derivative Works a copy of this License; and

 (b) You must cause any modified files to carry prominent notices
 stating that You changed the files; and

 (c) You must retain, in the Source form of any Derivative Works
 that You distribute, all copyright, patent, trademark, and
 attribution notices from the Source form of the Work,
 excluding those notices that do not pertain to any part of
 the Derivative Works; and

 (d) If the Work includes a &amp;#34;NOTICE&amp;#34; text file as part of its
 distribution, then any Derivative Works that You distribute must
 include a readable copy of the attribution notices contained
 within such NOTICE file, excluding those notices that do not
 pertain to any part of the Derivative Works, in at least one
 of the following places: within a NOTICE text file distributed
 as part of the Derivative Works; within the Source form or
 documentation, if provided along with the Derivative Works; or,
 within a display generated by the Derivative Works, if and
 wherever such third-party notices normally appear. The contents
 of the NOTICE file are for informational purposes only and
 do not modify the License. You may add Your own attribution
 notices within Derivative Works that You distribute, alongside
 or as an addendum to the NOTICE text from the Work, provided
 that such additional attribution notices cannot be construed
 as modifying the License.

 You may add Your own copyright statement to Your modifications and
 may provide additional or different license terms and conditions
 for use, reproduction, or distribution of Your modifications, or
 for any such Derivative Works as a whole, provided Your use,
 reproduction, and distribution of the Work otherwise complies with
 the conditions stated in this License.

 5. Submission of Contributions. Unless You explicitly state otherwise,
 any Contribution intentionally submitted for inclusion in the Work
 by You to the Licensor shall be under the terms and conditions of
 this License, without any additional terms or conditions.
 Notwithstanding the above, nothing herein shall supersede or modify
 the terms of any separate license agreement you may have executed
 with Licensor regarding such Contributions.

 6. Trademarks. This License does not grant permission to use the trade
 names, trademarks, service marks, or product names of the Licensor,
 except as required for reasonable and customary use in describing the
 origin of the Work and reproducing the content of the NOTICE file.

 7. Disclaimer of Warranty. Unless required by applicable law or
 agreed to in writing, Licensor provides the Work (and each
 Contributor provides its Contributions) on an &amp;#34;AS IS&amp;#34; BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
 implied, including, without limitation, any warranties or conditions
 of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
 PARTICULAR PURPOSE. You are solely responsible for determining the
 appropriateness of using or redistributing the Work and assume any
 risks associated with Your exercise of permissions under this License.

 8. Limitation of Liability. In no event and under no legal theory,
 whether in tort (including negligence), contract, or otherwise,
 unless required by applicable law (such as deliberate and grossly
 negligent acts) or agreed to in writing, shall any Contributor be
 liable to You for damages, including any direct, indirect, special,
 incidental, or consequential damages of any character arising as a
 result of this License or out of the use or inability to use the
 Work (including but not limited to damages for loss of goodwill,
 work stoppage, computer failure or malfunction, or any and all
 other commercial damages or losses), even if such Contributor
 has been advised of the possibility of such damages.

 9. Accepting Warranty or Additional Liability. While redistributing
 the Work or Derivative Works thereof, You may choose to offer,
 and charge a fee for, acceptance of support, warranty, indemnity,
 or other liability obligations and/or rights consistent with this
 License. However, in accepting such obligations, You may act only
 on Your own behalf and on Your sole responsibility, not on behalf
 of any other Contributor, and only if You agree to indemnify,
 defend, and hold each Contributor harmless for any liability
 incurred by, or claims asserted against, such Contributor by reason
 of your accepting any such warranty or additional liability.

 END OF TERMS AND CONDITIONS
&lt;/code&gt;&lt;/pre&gt;&lt;/details&gt;
&lt;details class="collapsible"&gt;
 &lt;summary&gt;GCC&lt;/summary&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;GCC RUNTIME LIBRARY EXCEPTION

Version 3.1, 31 March 2009

Copyright (C) 2009 Free Software Foundation, Inc. &amp;lt;http://fsf.org/&amp;gt;

Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.

This GCC Runtime Library Exception (&amp;#34;Exception&amp;#34;) is an additional
permission under section 7 of the GNU General Public License, version
3 (&amp;#34;GPLv3&amp;#34;). It applies to a given file (the &amp;#34;Runtime Library&amp;#34;) that
bears a notice placed by the copyright holder of the file stating that
the file is governed by GPLv3 along with this Exception.

When you use GCC to compile a program, GCC may combine portions of
certain GCC header files and runtime libraries with the compiled
program. The purpose of this Exception is to allow compilation of
non-GPL (including proprietary) programs to use, in this way, the
header files and runtime libraries covered by this Exception.

0. Definitions.

A file is an &amp;#34;Independent Module&amp;#34; if it either requires the Runtime
Library for execution after a Compilation Process, or makes use of an
interface provided by the Runtime Library, but is not otherwise based
on the Runtime Library.

&amp;#34;GCC&amp;#34; means a version of the GNU Compiler Collection, with or without
modifications, governed by version 3 (or a specified later version) of
the GNU General Public License (GPL) with the option of using any
subsequent versions published by the FSF.

&amp;#34;GPL-compatible Software&amp;#34; is software whose conditions of propagation,
modification and use would permit combination with GCC in accord with
the license of GCC.

&amp;#34;Target Code&amp;#34; refers to output from any compiler for a real or virtual
target processor architecture, in executable form or suitable for
input to an assembler, loader, linker and/or execution
phase. Notwithstanding that, Target Code does not include data in any
format that is used as a compiler intermediate representation, or used
for producing a compiler intermediate representation.

The &amp;#34;Compilation Process&amp;#34; transforms code entirely represented in
non-intermediate languages designed for human-written code, and/or in
Java Virtual Machine byte code, into Target Code. Thus, for example,
use of source code generators and preprocessors need not be considered
part of the Compilation Process, since the Compilation Process can be
understood as starting with the output of the generators or
preprocessors.

A Compilation Process is &amp;#34;Eligible&amp;#34; if it is done using GCC, alone or
with other GPL-compatible software, or if it is done without using any
work based on GCC. For example, using non-GPL-compatible Software to
optimize any GCC intermediate representations would not qualify as an
Eligible Compilation Process.

1. Grant of Additional Permission.

You have permission to propagate a work of Target Code formed by
combining the Runtime Library with Independent Modules, even if such
propagation would otherwise violate the terms of GPLv3, provided that
all Target Code was generated by Eligible Compilation Processes. You
may then convey such a combination under terms of your choice,
consistent with the licensing of the Independent Modules.

2. No Weakening of GCC Copyleft.

The availability of this Exception does not imply any general
presumption that third-party software is unaffected by the copyleft
requirements of the license of GCC.
&lt;/code&gt;&lt;/pre&gt;&lt;/details&gt;
&lt;details class="collapsible"&gt;
 &lt;summary&gt;pq&lt;/summary&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Copyright (c) 2010, Grant Monroe
Copyright (c) 2011, Leon P Smith

All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

 * Redistributions of source code must retain the above copyright
 notice, this list of conditions and the following disclaimer.

 * Redistributions in binary form must reproduce the above
 copyright notice, this list of conditions and the following
 disclaimer in the documentation and/or other materials provided
 with the distribution.

 * Neither the name of the authors nor the names of other
 contributors may be used to endorse or promote products derived
 from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
&amp;#34;AS IS&amp;#34; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
&lt;/code&gt;&lt;/pre&gt;&lt;/details&gt;
&lt;details class="collapsible"&gt;
 &lt;summary&gt;OpenSSL&lt;/summary&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;
 Apache License
 Version 2.0, January 2004
 https://www.apache.org/licenses/

 TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

 1. Definitions.

 &amp;#34;License&amp;#34; shall mean the terms and conditions for use, reproduction,
 and distribution as defined by Sections 1 through 9 of this document.

 &amp;#34;Licensor&amp;#34; shall mean the copyright owner or entity authorized by
 the copyright owner that is granting the License.

 &amp;#34;Legal Entity&amp;#34; shall mean the union of the acting entity and all
 other entities that control, are controlled by, or are under common
 control with that entity. For the purposes of this definition,
 &amp;#34;control&amp;#34; means (i) the power, direct or indirect, to cause the
 direction or management of such entity, whether by contract or
 otherwise, or (ii) ownership of fifty percent (50%) or more of the
 outstanding shares, or (iii) beneficial ownership of such entity.

 &amp;#34;You&amp;#34; (or &amp;#34;Your&amp;#34;) shall mean an individual or Legal Entity
 exercising permissions granted by this License.

 &amp;#34;Source&amp;#34; form shall mean the preferred form for making modifications,
 including but not limited to software source code, documentation
 source, and configuration files.

 &amp;#34;Object&amp;#34; form shall mean any form resulting from mechanical
 transformation or translation of a Source form, including but
 not limited to compiled object code, generated documentation,
 and conversions to other media types.

 &amp;#34;Work&amp;#34; shall mean the work of authorship, whether in Source or
 Object form, made available under the License, as indicated by a
 copyright notice that is included in or attached to the work
 (an example is provided in the Appendix below).

 &amp;#34;Derivative Works&amp;#34; shall mean any work, whether in Source or Object
 form, that is based on (or derived from) the Work and for which the
 editorial revisions, annotations, elaborations, or other modifications
 represent, as a whole, an original work of authorship. For the purposes
 of this License, Derivative Works shall not include works that remain
 separable from, or merely link (or bind by name) to the interfaces of,
 the Work and Derivative Works thereof.

 &amp;#34;Contribution&amp;#34; shall mean any work of authorship, including
 the original version of the Work and any modifications or additions
 to that Work or Derivative Works thereof, that is intentionally
 submitted to Licensor for inclusion in the Work by the copyright owner
 or by an individual or Legal Entity authorized to submit on behalf of
 the copyright owner. For the purposes of this definition, &amp;#34;submitted&amp;#34;
 means any form of electronic, verbal, or written communication sent
 to the Licensor or its representatives, including but not limited to
 communication on electronic mailing lists, source code control systems,
 and issue tracking systems that are managed by, or on behalf of, the
 Licensor for the purpose of discussing and improving the Work, but
 excluding communication that is conspicuously marked or otherwise
 designated in writing by the copyright owner as &amp;#34;Not a Contribution.&amp;#34;

 &amp;#34;Contributor&amp;#34; shall mean Licensor and any individual or Legal Entity
 on behalf of whom a Contribution has been received by Licensor and
 subsequently incorporated within the Work.

 2. Grant of Copyright License. Subject to the terms and conditions of
 this License, each Contributor hereby grants to You a perpetual,
 worldwide, non-exclusive, no-charge, royalty-free, irrevocable
 copyright license to reproduce, prepare Derivative Works of,
 publicly display, publicly perform, sublicense, and distribute the
 Work and such Derivative Works in Source or Object form.

 3. Grant of Patent License. Subject to the terms and conditions of
 this License, each Contributor hereby grants to You a perpetual,
 worldwide, non-exclusive, no-charge, royalty-free, irrevocable
 (except as stated in this section) patent license to make, have made,
 use, offer to sell, sell, import, and otherwise transfer the Work,
 where such license applies only to those patent claims licensable
 by such Contributor that are necessarily infringed by their
 Contribution(s) alone or by combination of their Contribution(s)
 with the Work to which such Contribution(s) was submitted. If You
 institute patent litigation against any entity (including a
 cross-claim or counterclaim in a lawsuit) alleging that the Work
 or a Contribution incorporated within the Work constitutes direct
 or contributory patent infringement, then any patent licenses
 granted to You under this License for that Work shall terminate
 as of the date such litigation is filed.

 4. Redistribution. You may reproduce and distribute copies of the
 Work or Derivative Works thereof in any medium, with or without
 modifications, and in Source or Object form, provided that You
 meet the following conditions:

 (a) You must give any other recipients of the Work or
 Derivative Works a copy of this License; and

 (b) You must cause any modified files to carry prominent notices
 stating that You changed the files; and

 (c) You must retain, in the Source form of any Derivative Works
 that You distribute, all copyright, patent, trademark, and
 attribution notices from the Source form of the Work,
 excluding those notices that do not pertain to any part of
 the Derivative Works; and

 (d) If the Work includes a &amp;#34;NOTICE&amp;#34; text file as part of its
 distribution, then any Derivative Works that You distribute must
 include a readable copy of the attribution notices contained
 within such NOTICE file, excluding those notices that do not
 pertain to any part of the Derivative Works, in at least one
 of the following places: within a NOTICE text file distributed
 as part of the Derivative Works; within the Source form or
 documentation, if provided along with the Derivative Works; or,
 within a display generated by the Derivative Works, if and
 wherever such third-party notices normally appear. The contents
 of the NOTICE file are for informational purposes only and
 do not modify the License. You may add Your own attribution
 notices within Derivative Works that You distribute, alongside
 or as an addendum to the NOTICE text from the Work, provided
 that such additional attribution notices cannot be construed
 as modifying the License.

 You may add Your own copyright statement to Your modifications and
 may provide additional or different license terms and conditions
 for use, reproduction, or distribution of Your modifications, or
 for any such Derivative Works as a whole, provided Your use,
 reproduction, and distribution of the Work otherwise complies with
 the conditions stated in this License.

 5. Submission of Contributions. Unless You explicitly state otherwise,
 any Contribution intentionally submitted for inclusion in the Work
 by You to the Licensor shall be under the terms and conditions of
 this License, without any additional terms or conditions.
 Notwithstanding the above, nothing herein shall supersede or modify
 the terms of any separate license agreement you may have executed
 with Licensor regarding such Contributions.

 6. Trademarks. This License does not grant permission to use the trade
 names, trademarks, service marks, or product names of the Licensor,
 except as required for reasonable and customary use in describing the
 origin of the Work and reproducing the content of the NOTICE file.

 7. Disclaimer of Warranty. Unless required by applicable law or
 agreed to in writing, Licensor provides the Work (and each
 Contributor provides its Contributions) on an &amp;#34;AS IS&amp;#34; BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
 implied, including, without limitation, any warranties or conditions
 of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
 PARTICULAR PURPOSE. You are solely responsible for determining the
 appropriateness of using or redistributing the Work and assume any
 risks associated with Your exercise of permissions under this License.

 8. Limitation of Liability. In no event and under no legal theory,
 whether in tort (including negligence), contract, or otherwise,
 unless required by applicable law (such as deliberate and grossly
 negligent acts) or agreed to in writing, shall any Contributor be
 liable to You for damages, including any direct, indirect, special,
 incidental, or consequential damages of any character arising as a
 result of this License or out of the use or inability to use the
 Work (including but not limited to damages for loss of goodwill,
 work stoppage, computer failure or malfunction, or any and all
 other commercial damages or losses), even if such Contributor
 has been advised of the possibility of such damages.

 9. Accepting Warranty or Additional Liability. While redistributing
 the Work or Derivative Works thereof, You may choose to offer,
 and charge a fee for, acceptance of support, warranty, indemnity,
 or other liability obligations and/or rights consistent with this
 License. However, in accepting such obligations, You may act only
 on Your own behalf and on Your sole responsibility, not on behalf
 of any other Contributor, and only if You agree to indemnify,
 defend, and hold each Contributor harmless for any liability
 incurred by, or claims asserted against, such Contributor by reason
 of your accepting any such warranty or additional liability.

 END OF TERMS AND CONDITIONS
&lt;/code&gt;&lt;/pre&gt;&lt;/details&gt;
&lt;details class="collapsible"&gt;
 &lt;summary&gt;stdc&amp;#43;&amp;#43;&lt;/summary&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;GCC RUNTIME LIBRARY EXCEPTION

Version 3.1, 31 March 2009

Copyright (C) 2009 Free Software Foundation, Inc. &amp;lt;http://fsf.org/&amp;gt;

Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.

This GCC Runtime Library Exception (&amp;#34;Exception&amp;#34;) is an additional
permission under section 7 of the GNU General Public License, version
3 (&amp;#34;GPLv3&amp;#34;). It applies to a given file (the &amp;#34;Runtime Library&amp;#34;) that
bears a notice placed by the copyright holder of the file stating that
the file is governed by GPLv3 along with this Exception.

When you use GCC to compile a program, GCC may combine portions of
certain GCC header files and runtime libraries with the compiled
program. The purpose of this Exception is to allow compilation of
non-GPL (including proprietary) programs to use, in this way, the
header files and runtime libraries covered by this Exception.

0. Definitions.

A file is an &amp;#34;Independent Module&amp;#34; if it either requires the Runtime
Library for execution after a Compilation Process, or makes use of an
interface provided by the Runtime Library, but is not otherwise based
on the Runtime Library.

&amp;#34;GCC&amp;#34; means a version of the GNU Compiler Collection, with or without
modifications, governed by version 3 (or a specified later version) of
the GNU General Public License (GPL) with the option of using any
subsequent versions published by the FSF.

&amp;#34;GPL-compatible Software&amp;#34; is software whose conditions of propagation,
modification and use would permit combination with GCC in accord with
the license of GCC.

&amp;#34;Target Code&amp;#34; refers to output from any compiler for a real or virtual
target processor architecture, in executable form or suitable for
input to an assembler, loader, linker and/or execution
phase. Notwithstanding that, Target Code does not include data in any
format that is used as a compiler intermediate representation, or used
for producing a compiler intermediate representation.

The &amp;#34;Compilation Process&amp;#34; transforms code entirely represented in
non-intermediate languages designed for human-written code, and/or in
Java Virtual Machine byte code, into Target Code. Thus, for example,
use of source code generators and preprocessors need not be considered
part of the Compilation Process, since the Compilation Process can be
understood as starting with the output of the generators or
preprocessors.

A Compilation Process is &amp;#34;Eligible&amp;#34; if it is done using GCC, alone or
with other GPL-compatible software, or if it is done without using any
work based on GCC. For example, using non-GPL-compatible Software to
optimize any GCC intermediate representations would not qualify as an
Eligible Compilation Process.

1. Grant of Additional Permission.

You have permission to propagate a work of Target Code formed by
combining the Runtime Library with Independent Modules, even if such
propagation would otherwise violate the terms of GPLv3, provided that
all Target Code was generated by Eligible Compilation Processes. You
may then convey such a combination under terms of your choice,
consistent with the licensing of the Independent Modules.

2. No Weakening of GCC Copyleft.

The availability of this Exception does not imply any general
presumption that third-party software is unaffected by the copyleft
requirements of the license of GCC.
&lt;/code&gt;&lt;/pre&gt;&lt;/details&gt;
&lt;details class="collapsible"&gt;
 &lt;summary&gt;io_uring&lt;/summary&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Copyright 2020 Jens Axboe

Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the
&amp;#34;Software&amp;#34;), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:

The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED &amp;#34;AS IS&amp;#34;, WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
&lt;/code&gt;&lt;/pre&gt;&lt;/details&gt;
&lt;details class="collapsible"&gt;
 &lt;summary&gt;snappy&lt;/summary&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Copyright 2011, Google Inc.
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:

 * Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
 * Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following disclaimer
in the documentation and/or other materials provided with the
distribution.
 * Neither the name of Google Inc. nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
&amp;#34;AS IS&amp;#34; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

===

Some of the benchmark data in testdata/ is licensed differently:

 - fireworks.jpeg is Copyright 2013 Steinar H. Gunderson, and
 is licensed under the Creative Commons Attribution 3.0 license
 (CC-BY-3.0). See https://creativecommons.org/licenses/by/3.0/
 for more information.

 - kppkn.gtb is taken from the Gaviota chess tablebase set, and
 is licensed under the MIT License. See
 https://sites.google.com/site/gaviotachessengine/Home/endgame-tablebases-1
 for more information.

 - paper-100k.pdf is an excerpt (bytes 92160 to 194560) from the paper
 “Combinatorial Modeling of Chromatin Features Quantitatively Predicts DNA
 Replication Timing in _Drosophila_” by Federico Comoglio and Renato Paro,
 which is licensed under the CC-BY license. See
 http://www.ploscompbiol.org/static/license for more ifnormation.

 - alice29.txt, asyoulik.txt, plrabn12.txt and lcet10.txt are from Project
 Gutenberg. The first three have expired copyrights and are in the public
 domain; the latter does not have expired copyright, but is still in the
 public domain according to the license information
 (http://www.gutenberg.org/ebooks/53).
&lt;/code&gt;&lt;/pre&gt;&lt;/details&gt;
&lt;details class="collapsible"&gt;
 &lt;summary&gt;zstd&lt;/summary&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;BSD License

For Zstandard software

Copyright (c) Meta Platforms, Inc. and affiliates. All rights reserved.

Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:

 * Redistributions of source code must retain the above copyright notice, this
 list of conditions and the following disclaimer.

 * Redistributions in binary form must reproduce the above copyright notice,
 this list of conditions and the following disclaimer in the documentation
 and/or other materials provided with the distribution.

 * Neither the name Facebook, nor Meta, nor the names of its contributors may
 be used to endorse or promote products derived from this software without
 specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &amp;#34;AS IS&amp;#34; AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
&lt;/code&gt;&lt;/pre&gt;&lt;/details&gt;
&lt;!-- END CedarDB GENERATED LICENSES --&gt;</description></item><item><title>What It Takes to Get a Research Project Ready for Production</title><link>https://cedardb.com/blog/research_vs_production/</link><pubDate>Thu, 24 Jul 2025 00:00:00 +0000</pubDate><guid>https://cedardb.com/blog/research_vs_production/</guid><description>&lt;h1 id="what-it-takes-to-get-a-research-project-ready-for-production"&gt;What It Takes to Get a Research Project Ready for Production&lt;/h1&gt;
&lt;p&gt;At CedarDB, we set out to bring the fruits of the highly successful &lt;a href="https://umbra-db.com/"&gt;Umbra&lt;/a&gt; research project to a wider audience. While Umbra has undoubtedly always had the potential to be the foundation of a highly performant production-grade database system, getting a research project ready for production workloads and building a company at the same time is no trivial task.&lt;/p&gt;
&lt;p&gt;When we launched a year ago, we were still figuring out the differences between building a research system at university, and building a system for widespread use. Since then, we have learned a lot.&lt;/p&gt;</description></item><item><title>Use CedarDB to search the CedarDB docs and blogs</title><link>https://cedardb.com/blog/semantic_search/</link><pubDate>Wed, 25 Jun 2025 00:00:00 +0000</pubDate><guid>https://cedardb.com/blog/semantic_search/</guid><description>&lt;h2 id="motivation"&gt;Motivation&lt;/h2&gt;
&lt;p&gt;Not so long ago, &lt;a href="https://cedardb.com/blog/geospatial/"&gt;I shared&lt;/a&gt; that I have
an interest in &lt;em&gt;finding things&lt;/em&gt; and, in that case, the question was about
&lt;strong&gt;where&lt;/strong&gt; something could be found. Another common requirement is, given some
expression of an interest, finding the set of documents that &lt;strong&gt;best answers the
question&lt;/strong&gt;. For example, coupled with the geospatial question, we might
include that we&amp;rsquo;re looking for Indian restaurants within the specified
geographic area.&lt;/p&gt;
&lt;p&gt;For this article, though, we&amp;rsquo;ll restrict the focus to the problem of finding
the most relevant documents within some collection, where that collection just
happens to be the CedarDB documentation. To that end, &lt;strong&gt;I&amp;rsquo;ll assert up front&lt;/strong&gt;
that my query &amp;ldquo;Does the CedarDB &amp;lsquo;asof join&amp;rsquo; use an index?&amp;rdquo; should return a
helpful response, while the query &amp;ldquo;Does pickled watermelon belong on a taco?&amp;rdquo;
should ideally return an empty result.&lt;/p&gt;</description></item><item><title>Solve a Geospatial (GIS) problem with CedarDB!</title><link>https://cedardb.com/blog/geospatial/</link><pubDate>Wed, 28 May 2025 00:00:00 +0000</pubDate><guid>https://cedardb.com/blog/geospatial/</guid><description>&lt;h2 id="motivation"&gt;Motivation&lt;/h2&gt;
&lt;p&gt;If you share my interest in &lt;em&gt;finding things&lt;/em&gt;, then I hope you will find this
brief post worthwhile. I&amp;rsquo;ve been interested in databases for a while now and,
during this time, I&amp;rsquo;ve consistently been intrigued by text and spatial data.
When I got my hands on CedarDB I was very excited about its potential, then I
heard a request by a user, for a geospatial related feature. He was kind
enough to share with me his specific need, which was essentially &lt;strong&gt;&lt;em&gt;given a
point, find all other points which are located within a specified distance.&lt;/em&gt;&lt;/strong&gt;
(In this exercise, we&amp;rsquo;ll show we can do this in about 10 ms on a 9M row table.)&lt;/p&gt;</description></item><item><title>Announcing the CedarDB Community Edition</title><link>https://cedardb.com/blog/launch/</link><pubDate>Wed, 14 May 2025 00:00:00 +0000</pubDate><guid>https://cedardb.com/blog/launch/</guid><description>&lt;p&gt;Almost a year ago, we launched our company with our &amp;ldquo;Ode to Postgres&amp;rdquo;, with the goal of making the fruits of the highly successful &lt;a href="https://umbra-db.com"&gt;Umbra&lt;/a&gt; research project available to you and everyone else. Umbra was created to incorporate all the lessons learned from the first 40 years of database systems into a new system built from the ground up to take advantage of modern hardware such as multi-core CPUs, fast SSDs, and cloud storage.&lt;/p&gt;</description></item><item><title>What It Takes to Be PostgreSQL Compatible</title><link>https://cedardb.com/blog/postgres_compatibility/</link><pubDate>Thu, 24 Apr 2025 00:00:00 +0000</pubDate><guid>https://cedardb.com/blog/postgres_compatibility/</guid><description>&lt;h1 id="what-it-takes-to-be-postgresql-compatible"&gt;What It Takes to Be PostgreSQL Compatible&lt;/h1&gt;
&lt;p&gt;We, and many other database enthusiasts, are big fans of PostgreSQL. Even though we built a database
system from scratch, we believe there are &lt;a href="https://cedardb.com/blog/ode_to_postgres/"&gt;many good reasons&lt;/a&gt; for using
PostgreSQL. In fact, we like PostgreSQL so much that we made sure to build CedarDB to be compatible
with PostgreSQL.&lt;/p&gt;
&lt;p&gt;Because of PostgreSQL&amp;rsquo;s popularity, we were not the first to develop a PostgreSQL compatible
database system. &lt;a href="https://dbdb.io/browse?compatible=postgresql"&gt;CMU&amp;rsquo;s &amp;ldquo;Database of Databases&amp;rdquo;&lt;/a&gt; lists
over 40 database systems that claim to be PostgreSQL compatible. Among them you can find database
systems from large cloud vendors such as &lt;a href="https://cloud.google.com/products/alloydb"&gt;AlloyDB&lt;/a&gt; from
Google or &lt;a href="https://aws.amazon.com/rds/aurora/"&gt;Aurora&lt;/a&gt; from AWS.&lt;/p&gt;</description></item><item><title>Fast Compilation or Fast Execution: Just Have Both!</title><link>https://cedardb.com/blog/compilation/</link><pubDate>Wed, 02 Apr 2025 00:00:00 +0000</pubDate><guid>https://cedardb.com/blog/compilation/</guid><description>&lt;h1 id="fast-compilation-or-fast-execution-just-have-both"&gt;Fast Compilation or Fast Execution: Just Have Both!&lt;/h1&gt;
&lt;p&gt;At CedarDB, we believe in high-performance computing. And one of the easiest tricks to high performance is to do only what you really need to do. So you want to &lt;a href="https://cedardb.com/blog/reducing_data_movement"&gt;reduce data movement&lt;/a&gt; or &lt;a href="https://cedardb.com/blog/reducing_branches"&gt;reduce unnecessary branches&lt;/a&gt;.
But how can you be sure you are only doing what you need to do? Especially when you want to be flexible and configurable at runtime.&lt;/p&gt;
&lt;p&gt;Basically, you want to tune the code based on as much information as you can get beforehand.
If you&amp;rsquo;re a programmer tasked with optimizing a snippet, you&amp;rsquo;d probably start by gathering as much information as you can about the data set.
Then you would look at data alignment and loops to remove any unnecessary checks and pre-calculate or cache as much as possible.
Finally, the code is tailored as much as possible to your challenge so that it does only one thing, but does it extremely well.
Unfortunately, as developers, we cannot just write code that does one thing because there are users.
Users demand interactivity, and in our case, they want to decide how they access the data.
So isn&amp;rsquo;t there a way to have your cake and eat it too?&lt;/p&gt;</description></item><item><title>To B or not to B: B-Trees with Optimistic Lock Coupling</title><link>https://cedardb.com/blog/optimistic_btrees/</link><pubDate>Thu, 06 Mar 2025 00:00:00 +0000</pubDate><guid>https://cedardb.com/blog/optimistic_btrees/</guid><description>&lt;h1 id="to-b-or-not-to-b-b-trees-with-optimistic-lock-coupling"&gt;To B or not to B: B-Trees with Optimistic Lock Coupling&lt;/h1&gt;
&lt;p&gt;B-Trees are one of the few specialized data structures which truly stood the test of time, being over
&lt;a href="https://infolab.usc.edu/csci585/Spring2010/den_ar/indexing.pdf"&gt;50 years old&lt;/a&gt;.
They were invented in year zero of &lt;a href="https://en.wikipedia.org/wiki/Unix_time"&gt;unix time&lt;/a&gt;,
on a system with a whopping 7.25MB of disk storage — Not DRAM!
They are only one month younger than
the &lt;a href="https://dl.acm.org/doi/10.1145/362384.362685"&gt;idea of relational databases itself&lt;/a&gt;
and witnessed the birth of multi-core architectures, complex cache hierarchies, fast network attached storage and many
more groundbreaking changes.
However, while most technologies would show their age and can comfortably retire,
B-Trees are still ubiquitous for data storage.&lt;/p&gt;</description></item><item><title>Why Trees Without Branches Grow Faster: The Case for Reducing Branches in Code</title><link>https://cedardb.com/blog/reducing_branches/</link><pubDate>Wed, 29 Jan 2025 00:00:00 +0000</pubDate><guid>https://cedardb.com/blog/reducing_branches/</guid><description>&lt;p&gt;In the same way that arborists &lt;a href="https://en.wikipedia.org/wiki/Pruning"&gt;remove branches&lt;/a&gt; from trees to ensure healthy and desirable tree growth, it can also be beneficial to remove branches in software. We claim that pruning branches is a good thing in some of our &lt;a href="https://cedardb.com/blog/ode_to_postgres"&gt;blog&lt;/a&gt; &lt;a href="https://cedardb.com/blog/exceptions_vs_errors"&gt;posts&lt;/a&gt;, but we never got around to explaining why. In this post, we will rectify that and explore why, although branches are essential to software, it is a good idea to reduce them where possible to increase CPU efficiency.&lt;/p&gt;</description></item><item><title>Helping Christmas Elves Count Presents (or: Vectorized Overflow Checking)</title><link>https://cedardb.com/blog/vectorized_overflows/</link><pubDate>Tue, 24 Dec 2024 00:00:00 +0000</pubDate><guid>https://cedardb.com/blog/vectorized_overflows/</guid><description>&lt;h1 id="vectorized-overflow-checking"&gt;Vectorized Overflow Checking&lt;/h1&gt;
&lt;p&gt;In our &lt;a href="https://cedardb.com/blog/overflow_handling/"&gt;earlier post on overflow handling&lt;/a&gt; we
explained how to use the CPU flags to detected integer overflows and wrote:
&amp;ldquo;this doesn&amp;rsquo;t have zero overhead as the compiler can&amp;rsquo;t vectorize the function
using checked arithmetic.&amp;rdquo;
Not satisfied, we took matters into our own hands: If the compiler can&amp;rsquo;t help
us, we have to help ourselves!&lt;/p&gt;
&lt;p&gt;This post explains in very low-level detail how you can very quickly sum up
(signed) integers on modern x86 CPUs using specialized vector instructions such
as &lt;a href="https://www.felixcloutier.com/x86/vpternlogd:vpternlogq"&gt;&lt;code&gt;vpternlogd&lt;/code&gt;&lt;/a&gt;. We
also show some numbers comparing the hand-written vectorized sum with the
compiler-assisted checked arithmetic that demonstrate that you can gain a lot
of performance even when checking for overflows.&lt;/p&gt;</description></item><item><title>The History of the Decline and Fall of In-Memory Database Systems</title><link>https://cedardb.com/blog/in_memory_dbms/</link><pubDate>Tue, 03 Dec 2024 00:00:00 +0000</pubDate><guid>https://cedardb.com/blog/in_memory_dbms/</guid><description>&lt;h1 id="the-history-of-the-decline-and-fall-of-in-memory-database-systems"&gt;The History of the Decline and Fall of In-Memory Database Systems&lt;/h1&gt;
&lt;p&gt;In the early 2010s, the drop in memory prices combined with an overall increase in the reliability of computer hardware
fueled a minor revolution in the world of database systems.
Traditionally, slow but durable magnetic disk storage was the source of truth for a database system.
Only when data needed to be analyzed or updated would it be briefly cached in memory by the buffer manager.
And as memory got bigger and faster, the access latency of magnetic disks quickly became a bottleneck for many systems.&lt;/p&gt;</description></item><item><title>Offset Considered Harmful or: The Surprising Complexity of Pagination in SQL</title><link>https://cedardb.com/blog/pagination/</link><pubDate>Tue, 19 Nov 2024 00:00:00 +0000</pubDate><guid>https://cedardb.com/blog/pagination/</guid><description>&lt;h1 id="offset-considered-harmful-or-the-surprising-complexity-of-pagination-in-sql"&gt;Offset Considered Harmful or: The Surprising Complexity of Pagination in SQL&lt;/h1&gt;
&lt;p&gt;For most applications, the job of a database system is to ingest all your data and give you access to the data you care
about.
Unfortunately, sometimes this is a large amount of data, and a typical application should only carefully take small sips
from the fire hose of data.
Generally, controlling the amount of output data is hard, but SQL offers the special &lt;code&gt;limit&lt;/code&gt; syntax, which can guarantee
that the result is bounded, and you never turn on the fire hose&amp;rsquo;s full blast.
Unfortunately, the story does not end here, since there are many caveats.&lt;/p&gt;</description></item><item><title>How to Correctly Sum Up Numbers</title><link>https://cedardb.com/blog/overflow_handling/</link><pubDate>Wed, 30 Oct 2024 00:00:00 +0000</pubDate><guid>https://cedardb.com/blog/overflow_handling/</guid><description>&lt;h1 id="how-to-correctly-sum-up-numbers"&gt;How to Correctly Sum Up Numbers&lt;/h1&gt;
&lt;p&gt;One of the first examples for loops in probably every programming language course is taking a list of numbers and calculating the sum of them.
And in every programming language, it&amp;rsquo;s trivial to write up a solution:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-c++" data-lang="c++"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;int&lt;/span&gt; &lt;span style="color:#6639ba"&gt;sumUpNumbers&lt;/span&gt;&lt;span style="color:#1f2328"&gt;(&lt;/span&gt;std&lt;span style="color:#0550ae"&gt;::&lt;/span&gt;span&lt;span style="color:#0550ae"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#cf222e"&gt;const&lt;/span&gt; &lt;span style="color:#cf222e"&gt;int&lt;/span&gt;&lt;span style="color:#0550ae"&gt;&amp;gt;&lt;/span&gt; numbers&lt;span style="color:#1f2328"&gt;)&lt;/span&gt; &lt;span style="color:#1f2328"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;int&lt;/span&gt; sum &lt;span style="color:#0550ae"&gt;=&lt;/span&gt; &lt;span style="color:#0550ae"&gt;0&lt;/span&gt;&lt;span style="color:#1f2328"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;for&lt;/span&gt; &lt;span style="color:#1f2328"&gt;(&lt;/span&gt;&lt;span style="color:#cf222e"&gt;int&lt;/span&gt; &lt;span style="color:#900;font-weight:bold"&gt;i&lt;/span&gt; &lt;span style="color:#1f2328"&gt;:&lt;/span&gt; numbers&lt;span style="color:#1f2328"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; sum &lt;span style="color:#0550ae"&gt;+=&lt;/span&gt; i&lt;span style="color:#1f2328"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;return&lt;/span&gt; sum&lt;span style="color:#1f2328"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#1f2328"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If you compile this with a modern optimizing compiler, you will even get very
efficient vectorized code, that sums millions of integers per second. Nice!&lt;/p&gt;</description></item><item><title>Why You Shouldn't Forget to Optimize the Data Layout</title><link>https://cedardb.com/blog/optimizing_data_layouts/</link><pubDate>Tue, 08 Oct 2024 00:00:00 +0000</pubDate><guid>https://cedardb.com/blog/optimizing_data_layouts/</guid><description>&lt;h1 id="why-you-shouldnt-forget-to-optimize-the-data-layout"&gt;Why You Shouldn&amp;rsquo;t Forget to Optimize the Data Layout&lt;/h1&gt;
&lt;p&gt;When you want to speed up your program, the obvious step is to recall the learnings of your data structure class and optimize the algorithmic complexity.
Clearly, algorithms are the star of each program as swapping a hot &lt;code&gt;O(n)&lt;/code&gt; algorithm with a lower complexity one, such as &lt;code&gt;O(log n)&lt;/code&gt;, yields almost arbitrary performance improvements.
However, the way data is structured also affects performance significantly: Programs run on physical machines with physical properties such as varying data latencies to caches, disks, or RAM.
After you optimized your algorithm, you need to consider these properties to achieve the best possible performance.
An optimized data layout takes your algorithms and access patterns into account when deciding on how to store the bytes of your data structure on physical storage.
Therefore, it can make your algorithms run several times faster.
In this blog post, we will show you an example where we can achieve a 4x better read performance by just changing the data layout according to our access pattern.&lt;/p&gt;</description></item><item><title>The Hidden Cost of Data Movement</title><link>https://cedardb.com/blog/reducing_data_movement/</link><pubDate>Thu, 25 Jul 2024 00:00:00 +0000</pubDate><guid>https://cedardb.com/blog/reducing_data_movement/</guid><description>&lt;h1 id="the-hidden-cost-of-data-movement"&gt;The Hidden Cost of Data Movement&lt;/h1&gt;
&lt;p&gt;Recently, Mark Raasveldt of DuckDB wrote an excellent &lt;a href="https://duckdb.org/2024/07/09/memory-management"&gt;post&lt;/a&gt; about why memory management is crucial for efficient data processing.
In his post, he focuses on the cost of having data on disk and moving it to memory. After all, everyone knows that having data in memory is what you want. As Jim Gray famously said in 2006:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Tape is Dead, Disk is Tape, Flash is Disk, RAM Locality is King&lt;/p&gt;</description></item><item><title>Why I Prefer Exceptions to Error Values</title><link>https://cedardb.com/blog/exceptions_vs_errors/</link><pubDate>Tue, 10 Sep 2024 00:00:00 +0000</pubDate><guid>https://cedardb.com/blog/exceptions_vs_errors/</guid><description>&lt;h1 id="why-i-prefer-exceptions-to-error-values"&gt;Why I Prefer Exceptions to Error Values&lt;/h1&gt;
&lt;p&gt;Good error handling is key to robust programs, but often dreaded by programmers because there is always one more edge case.
Traditional object-oriented programming languages use special exception classes that can be thrown to break the regular control flow for immediate error reporting.
Let&amp;rsquo;s take a quick look at an example that explores error-safe integer division:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-cpp" data-lang="cpp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#cf222e"&gt;int&lt;/span&gt; &lt;span style="color:#6639ba"&gt;safeDiv&lt;/span&gt;&lt;span style="color:#1f2328"&gt;(&lt;/span&gt;&lt;span style="color:#cf222e"&gt;int&lt;/span&gt; a&lt;span style="color:#1f2328"&gt;,&lt;/span&gt; &lt;span style="color:#cf222e"&gt;int&lt;/span&gt; b&lt;span style="color:#1f2328"&gt;)&lt;/span&gt; &lt;span style="color:#1f2328"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;if&lt;/span&gt; &lt;span style="color:#1f2328"&gt;(&lt;/span&gt;b &lt;span style="color:#0550ae"&gt;==&lt;/span&gt; &lt;span style="color:#0550ae"&gt;0&lt;/span&gt;&lt;span style="color:#1f2328"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;throw&lt;/span&gt; Div0&lt;span style="color:#1f2328"&gt;();&lt;/span&gt; &lt;span style="color:#57606a"&gt;// Exceptions are passed out-of-line
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#cf222e"&gt;return&lt;/span&gt; a &lt;span style="color:#0550ae"&gt;/&lt;/span&gt; b&lt;span style="color:#1f2328"&gt;;&lt;/span&gt; &lt;span style="color:#57606a"&gt;// Totally safe now, right?
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#1f2328"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Newer languages tend to favor functional-style error reporting and encode errors in their return type:
For example, Go encodes the error in the return type with an &lt;code&gt;(res, err)&lt;/code&gt; tuple, and Rust returns &lt;code&gt;Result&amp;lt;T, E&amp;gt;&lt;/code&gt;, a sum type of result and error.
Even older languages such as C++ now include error values in their standard library with &lt;code&gt;std::expected&lt;/code&gt;:&lt;/p&gt;</description></item><item><title>Reclaiming SQL’s Declarative Power</title><link>https://cedardb.com/blog/unnest_sql/</link><pubDate>Tue, 27 Aug 2024 00:00:00 +0000</pubDate><guid>https://cedardb.com/blog/unnest_sql/</guid><description>&lt;h1 id="reclaiming-sqls-declarative-power"&gt;Reclaiming SQL’s Declarative Power&lt;/h1&gt;
&lt;p&gt;You may have heard that SQL is a &amp;ldquo;declarative&amp;rdquo; programming language. In
imperative languages such as Python, C++, and Rust, you, the programmer, tell
the computer what to do and in what order: The program essentially runs from
top to bottom, executing one statement at a time. In a declarative language
like SQL, on the other hand, you only specify what the result of the query
should look like, not how the database system should execute it.&lt;/p&gt;</description></item><item><title>Can You Do Both: Fast Scans and Fast Writes in a Single System?</title><link>https://cedardb.com/blog/colibri/</link><pubDate>Tue, 13 Aug 2024 00:00:00 +0000</pubDate><guid>https://cedardb.com/blog/colibri/</guid><description>&lt;h1 id="can-you-do-both-fast-scans-and-fast-writes-in-a-single-system"&gt;Can You Do Both: Fast Scans and Fast Writes in a Single System?&lt;/h1&gt;
&lt;p&gt;Have you ever wondered why most existing database systems focus solely on either analytical or transactional performance?
The &lt;a href="https://en.wikipedia.org/wiki/Data_orientation"&gt;data orientation&lt;/a&gt; within the file format and the internals of the storage engine are key reasons for this specialization.
Current database systems are unable to balance transactional and analytical processing, and therefore, are forced to optimize for just one of both workload types.
Transaction-focused &lt;a href="https://en.wikipedia.org/wiki/Online_transaction_processing"&gt;OLTP&lt;/a&gt; systems use row-based storage formats for quick updates and lookups, but these formats are inefficient for analytics-focused &lt;a href="https://en.wikipedia.org/wiki/Online_analytical_processing"&gt;OLAP&lt;/a&gt; tasks.
OLAP workloads require scanning many rows while typically accessing only a few columns, and row-based formats are simply not designed to handle this.
OLAP systems use compressed columnar formats for fast scans, which make updates complex and slow, often lacking efficient point lookup capabilities.
For instance, a simple table scan using a column store can be more than 5x faster than storing data in a row-based format due to the data movement characteristics of the format.&lt;/p&gt;</description></item><item><title>A Deep Dive into German Strings</title><link>https://cedardb.com/blog/strings_deep_dive/</link><pubDate>Mon, 29 Jul 2024 00:00:00 +0000</pubDate><guid>https://cedardb.com/blog/strings_deep_dive/</guid><description>&lt;h1 id="a-deep-dive-into-german-strings"&gt;A Deep Dive into German Strings&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;&amp;ldquo;Strings are Everywhere&amp;rdquo;!&lt;/strong&gt; At least according to a 2018 &lt;a href="https://dl.acm.org/doi/10.1145/3209950.3209952"&gt;DBTest Paper&lt;/a&gt; from the Hyper team at Tableau.
In fact, strings make up nearly half of the data processed at Tableau.
This high prevalence undoubtedly applies to many other companies as well, as the paper&amp;rsquo;s dataset consists of data analyzed by Tableau&amp;rsquo;s users.
The string-heavy nature of the data makes string processing one of the most important tasks of a database system.&lt;/p&gt;</description></item><item><title>Why German Strings are Everywhere</title><link>https://cedardb.com/blog/german_strings/</link><pubDate>Tue, 16 Jul 2024 00:00:00 +0000</pubDate><guid>https://cedardb.com/blog/german_strings/</guid><description>&lt;h1 id="german-strings"&gt;German Strings&lt;/h1&gt;
&lt;p&gt;Strings are conceptually very simple: It&amp;rsquo;s essentially just a sequence of characters, right?
Why, then, does every programming language have &lt;a href="https://en.wikipedia.org/wiki/String_(computer_science)#String_datatypes"&gt;their own&lt;/a&gt; slightly different string implementation?
It turns out that there is a lot more to a string than &amp;ldquo;just a sequence of characters&amp;rdquo;&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;re no different and built &lt;a href="https://xkcd.com/927/"&gt;our own custom string type&lt;/a&gt; that is highly optimized for data processing.
Even though we didn&amp;rsquo;t expect it when we first wrote about it in our inaugural &lt;a href="https://db.in.tum.de/~freitag/papers/p29-neumann-cidr20.pdf"&gt;Umbra research paper&lt;/a&gt;, a lot of new systems adopted our format.
They are now implemented in &lt;a href="https://github.com/duckdb/duckdb/blob/main/src/include/duckdb/common/types/string_type.hpp"&gt;DuckDB&lt;/a&gt;, &lt;a href="https://arrow.apache.org/docs/format/Columnar.html#variable-size-binary-view-layout"&gt;Apache Arrow&lt;/a&gt;, &lt;a href="https://pola.rs/posts/polars-string-type/"&gt;Polars&lt;/a&gt;, and &lt;a href="https://15721.courses.cs.cmu.edu/spring2023/slides/23-velox.pdf"&gt;Facebook Velox&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Working with JSON and Graphs in CedarDB</title><link>https://cedardb.com/blog/working_with_json_and_graphs/</link><pubDate>Thu, 27 Jun 2024 00:00:00 +0000</pubDate><guid>https://cedardb.com/blog/working_with_json_and_graphs/</guid><description>&lt;h1 id="working-with-json-and-graphs-in-cedardb"&gt;Working with JSON and Graphs in CedarDB&lt;/h1&gt;
&lt;p&gt;While relational database systems are still by far the &lt;a href="https://db-engines.com/en/ranking_categories"&gt;most popular&lt;/a&gt; database systems in use today, other data models are growing in both importance and popularity.
The perceived simplicity and greater flexibility of semi-structured data, such as JSON, has made it the first choice for many application developers, especially for web interfaces and log data.
As a result, much of the data being generated today is semi-structured.
And the shift to new data models does not stop at data generation.
Analysts are increasingly turning to graphs to better capture real-world relationships in their data.&lt;/p&gt;</description></item><item><title>Why Your SSD (Probably) Sucks and What Your Database Can Do About It</title><link>https://cedardb.com/blog/ssd_latency/</link><pubDate>Tue, 11 Jun 2024 00:00:00 +0000</pubDate><guid>https://cedardb.com/blog/ssd_latency/</guid><description>&lt;h1 id="why-your-ssd-probably-sucks-and-what-your-database-can-do-about-it"&gt;Why Your SSD (Probably) Sucks and What Your Database Can Do About It&lt;/h1&gt;
&lt;p&gt;Database system developers have a complicated relationship with storage devices:
They can store terabytes of data cheaply, and everything is still there after a system crash.
On the other hand, storage can be a spoilsport by being slow when it matters most.&lt;/p&gt;
&lt;p&gt;This blog post shows&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;how SSDs are used in database systems,&lt;/li&gt;
&lt;li&gt;where SSDs have limitations,&lt;/li&gt;
&lt;li&gt;and how to get around them.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="when-are-ssds-fast"&gt;When are SSDs &lt;em&gt;fast&lt;/em&gt;?&lt;/h2&gt;
&lt;p&gt;When we colloquially talk about speed, we usually think in terms of &lt;em&gt;throughput&lt;/em&gt;, i.e., how much data we can store or retrieve per second.
Let&amp;rsquo;s use the fantastic &lt;a href="https://github.com/louwrentius/fio-plot"&gt;bench-fio tool&lt;/a&gt; to measure how a consumer-grade Crucial T700 SSD used in one of our build servers performs for random reads:&lt;/p&gt;</description></item><item><title>Simple, Efficient, and Robust Hash Tables for Join Processing</title><link>https://cedardb.com/blog/simple_efficient_hash_tables/</link><pubDate>Wed, 05 Jun 2024 00:00:00 +0000</pubDate><guid>https://cedardb.com/blog/simple_efficient_hash_tables/</guid><description>&lt;h1 id="simple-efficient-and-robust-hash-tables-for-join-processing"&gt;Simple, Efficient, and Robust Hash Tables for Join Processing&lt;/h1&gt;
&lt;p&gt;Hash tables are probably the most versatile data structures for data processing.
For that reason, CedarDB depends on hash table to perform some of the most crucial parts of its query execution engine.
Most prominently, CedarDB implements &lt;a href="https://en.wikipedia.org/wiki/Join_(SQL)"&gt;relational joins&lt;/a&gt; as hash joins.
This blog post assumes you know what a hash join is.
If not, the &lt;a href="https://en.wikipedia.org/wiki/Hash_join"&gt;Wikipedia article&lt;/a&gt; has a short introduction into the topic for
you.
During the development of &lt;a href="https://umbra-db.com/"&gt;Umbra&lt;/a&gt; and now CedarDB, we rewrote our join hash table implementation
several times.
To share our latest design, TUM and CedarDB published a
peer-reviewed &lt;a href="https://db.in.tum.de/~birler/papers/hashtable.pdf"&gt;scientific paper&lt;/a&gt;,
which &lt;a href="https://db.in.tum.de/~birler/"&gt;Altan&lt;/a&gt; will present at &lt;a href="https://damon-db.org/"&gt;DaMoN'24&lt;/a&gt; in Santiago de Chile next
week.&lt;/p&gt;</description></item><item><title>An ode to PostgreSQL, and why it is still time to start over</title><link>https://cedardb.com/blog/ode_to_postgres/</link><pubDate>Tue, 28 May 2024 00:00:00 +0000</pubDate><guid>https://cedardb.com/blog/ode_to_postgres/</guid><description>&lt;h1 id="an-ode-to-postgresql-and-why-it-is-still-time-to-start-over"&gt;An ode to PostgreSQL, and why it is still time to start over&lt;/h1&gt;
&lt;p&gt;No matter what your opinion is on the efficacy of the Modern Data Stack, one thing is for sure: there are now a metric ton of database systems out there. Whether you&amp;rsquo;re trying to do real time streaming, analyze a graph, build a warehouse, power an app, or simply determine the sentiment of text… well, there&amp;rsquo;s a system out there just for that. Having a dedicated, use case-specific tool for exactly what you need to do is great, until it&amp;rsquo;s not; you inevitably end up with major tool sprawl, having to maintain many tools as companies have more than one task to be solved. But this does not have to be the case.&lt;/p&gt;</description></item><item><title>About us</title><link>https://cedardb.com/about/</link><pubDate>Sun, 01 Jan 2023 08:00:00 -0700</pubDate><guid>https://cedardb.com/about/</guid><description/></item><item><title>Impressum</title><link>https://cedardb.com/imprint/</link><pubDate>Sun, 01 Jan 2023 08:00:00 -0700</pubDate><guid>https://cedardb.com/imprint/</guid><description>&lt;h1&gt;Impressum&lt;/h1&gt;
&lt;p&gt;CedarDB GmbH&lt;br /&gt;
Seidlstr. 8&lt;br /&gt;
80335 M&amp;uuml;nchen&lt;/p&gt;
&lt;p&gt;Handelsregister: HRB 291073&lt;br /&gt;
Registergericht: Amtsgericht M&amp;uuml;nchen&lt;/p&gt;
&lt;p&gt;USt-IdNr.: DE367135645&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Vertreten durch:&lt;/strong&gt;&lt;br /&gt;
Moritz-Felipe Sichert&lt;/p&gt;
&lt;h2&gt;Kontakt&lt;/h2&gt;
&lt;p&gt;Telefon: +49 89 41616089&lt;br /&gt;
E-Mail: contact@cedardb.com&lt;/p&gt;
&lt;h2&gt;Redaktionell verantwortlich&lt;/h2&gt;
&lt;p&gt;Moritz-Felipe Sichert&lt;/p&gt;
&lt;h2&gt;EU-Streitschlichtung&lt;/h2&gt;
&lt;p&gt;Die Europ&amp;auml;ische Kommission stellt eine Plattform zur Online-Streitbeilegung (OS) bereit: &lt;a href="https://ec.europa.eu/consumers/odr/" target="_blank" rel="noopener noreferrer"&gt;https://ec.europa.eu/consumers/odr/&lt;/a&gt;.&lt;br /&gt; Unsere E-Mail-Adresse finden Sie oben im Impressum.&lt;/p&gt;
&lt;h2&gt;Verbraucher&amp;shy;streit&amp;shy;beilegung/Universal&amp;shy;schlichtungs&amp;shy;stelle&lt;/h2&gt;
&lt;p&gt;Wir sind nicht bereit oder verpflichtet, an Streitbeilegungsverfahren vor einer Verbraucherschlichtungsstelle teilzunehmen.&lt;/p&gt;
&lt;div class="divider-secondary is-centered mt-6 mb-6 is-half-width"&gt;&lt;/div&gt;
&lt;h1&gt;Site Notice&lt;/h1&gt;
&lt;p&gt;CedarDB GmbH&lt;br /&gt;
Seidlstr. 8&lt;br /&gt;
80335 M&amp;uuml;nchen&lt;/p&gt;</description></item><item><title>One System, One State</title><link>https://cedardb.com/one-system-one-state/</link><pubDate>Sun, 01 Jan 2023 08:00:00 -0700</pubDate><guid>https://cedardb.com/one-system-one-state/</guid><description/></item><item><title>Privacy Policy</title><link>https://cedardb.com/privacy-policy/</link><pubDate>Sun, 01 Jan 2023 08:00:00 -0700</pubDate><guid>https://cedardb.com/privacy-policy/</guid><description>&lt;h1&gt;Datenschutz&amp;shy;erkl&amp;auml;rung&lt;/h1&gt;
&lt;p&gt;Zuletzt aktualisiert: 27. Oktober 2025&lt;/p&gt;
&lt;h2&gt;1. Datenschutz auf einen Blick&lt;/h2&gt;
&lt;h3&gt;Allgemeine Hinweise&lt;/h3&gt; &lt;p&gt;Die folgenden Hinweise geben einen einfachen &amp;Uuml;berblick dar&amp;uuml;ber, was mit Ihren personenbezogenen Daten passiert, wenn Sie diese Website besuchen. Personenbezogene Daten sind alle Daten, mit denen Sie pers&amp;ouml;nlich identifiziert werden k&amp;ouml;nnen. Ausf&amp;uuml;hrliche Informationen zum Thema Datenschutz entnehmen Sie unserer unter diesem Text aufgef&amp;uuml;hrten Datenschutzerkl&amp;auml;rung.&lt;/p&gt;
&lt;h3&gt;Datenerfassung auf dieser Website&lt;/h3&gt; &lt;h4&gt;Wer ist verantwortlich f&amp;uuml;r die Datenerfassung auf dieser Website?&lt;/h4&gt; &lt;p&gt;Die Datenverarbeitung auf dieser Website erfolgt durch den Websitebetreiber. Dessen Kontaktdaten k&amp;ouml;nnen Sie dem Abschnitt &amp;bdquo;Hinweis zur Verantwortlichen Stelle&amp;ldquo; in dieser Datenschutzerkl&amp;auml;rung entnehmen.&lt;/p&gt;</description></item><item><title>Real Time Analytics</title><link>https://cedardb.com/real-time-analytics/</link><pubDate>Sun, 01 Jan 2023 08:00:00 -0700</pubDate><guid>https://cedardb.com/real-time-analytics/</guid><description/></item><item><title>Supercharge Your Analytics</title><link>https://cedardb.com/supercharge-your-analytics/</link><pubDate>Sun, 01 Jan 2023 08:00:00 -0700</pubDate><guid>https://cedardb.com/supercharge-your-analytics/</guid><description/></item></channel></rss>