Live data from Hacker News

Limbo: A complete rewrite of SQLite in Rust

turso.tech

71–80 of 238 posts

Re: Limbo: A complete rewrite of SQLite in Rust

#71
post #65

Earlier quoted context omitted.

>> The SQLite3 business model is that SQLite3 is open source This is going to sound pedantic, but SQLite is not Open Source. It's Public Domain. The distinction is subtle, but it is important.

Public domain is a form of open source.

No. At least according to the Open Source Initiative, public domain is not open source: https://opensource.org/blog/public-domain-is-not-open-source

Re: Limbo: A complete rewrite of SQLite in Rust

#72
post #65

Earlier quoted context omitted.

>> The SQLite3 business model is that SQLite3 is open source This is going to sound pedantic, but SQLite is not Open Source. It's Public Domain. The distinction is subtle, but it is important.

Public domain is a form of open source.

> public domain software may be free software but is not certain to be.

Open Source relies on copyright and contract law (which are somewhat standardized or at least understood due to their importance in commerce). Public domain relies on other laws that can vary significantly.

https://opensource.org/blog/public-domain-is-not-open-source

Re: Limbo: A complete rewrite of SQLite in Rust

#73
post #48

Earlier quoted context omitted.

> Executing cargo bench on Limbo’s main directory, we can compare SQLite running SELECT * FROM users LIMIT 1 (620ns on my Macbook Air M2), with Limbo executing the same query (506ns), which is 20% faster. Faster on a single query, returning a single result, on a single computer. That's not how database performance should be measured or compared. In any case, the programming language should have little to no impact on…

The goal here is not to claim that it is faster, though (it isn't, in a lot of other things it is slower and if you run cargo bench you will see) It is to highlight that we already reached a good level of performance this early in the project. Your claim about the programming language having no impact is just false, though. It's exactly what people said back in 2015 when we released Scylla. It was already false then,…

Yo glommer, I am ... very surprised to see any benchmark beat the micro-tuned sqlite so early, congrats. Where do you think rust is picking up the extra 100ns or so from a full table scan?

Re: Limbo: A complete rewrite of SQLite in Rust

#75
post #56

Earlier quoted context omitted.

Will you release the code into the public domain, like SQLite?

absolutely not. We're not fans of public domain, which is one of the things that led us to create libSQL in the first place. It is MIT.

Why not do both? Release as public domain or MIT license. Take your pick.

Re: Limbo: A complete rewrite of SQLite in Rust

#76
post #60

The license is "Copyright 2024 the Limbo authors". How is that possible if Limbo is based on a rewrite? Do they claim a clean room implementation? It seems wise of SQLite to close down their test suite. That's a great idea I wish I had heard about earlier.

SQLite is in the public domain (i.e. not copyrighted), so a clean room implementation is unnecessary.

Re: Limbo: A complete rewrite of SQLite in Rust

#77

Given the code quality and rigid testing, SQLite is probably the last project that should be rewritten. It'd be great to see all other C code rewritten first!

Code quality is not the only thing to consider. Some people would love to see something like SQLite with 2 important changes: referential integrity that respects the DDL and strict tables that also respects the DDL.

I might be missing something—is there a reason why rewriting it in Rust would be a prerequisite to adding these features, vs just starting a fork?

And in this case the project intends to be fully compatible, so they wouldn't be able to unilaterally adopt or drop features anyway.

Re: Limbo: A complete rewrite of SQLite in Rust

#78
post #71
post #65

Earlier quoted context omitted.

Public domain is a form of open source.

No. At least according to the Open Source Initiative, public domain is not open source: https://opensource.org/blog/public-domain-is-not-open-source

Any definition of open source that doesn't include the public domain is out of touch with how real people use the words "open source" and is therefore useless. You can make up any definition you want, but if you insist on calling elephants "bananas", I'm not going to take you seriously

Re: Limbo: A complete rewrite of SQLite in Rust

#79

Given the code quality and rigid testing, SQLite is probably the last project that should be rewritten. It'd be great to see all other C code rewritten first!

> Given the code quality and rigid testing, SQLite is probably the last project that should be rewritten.

That was my take for many years but I have come around 180 degree on this. I think at this point it's very likely and most likely mandatory to eventually rewrite SQLite. In parts because of what is called out in the blog post: the tests are not public. More importantly, the entire project is not really open. And to be clear: that is okay. The folks that are building it, want to have it that way, and that's the contract we have as users.

But that does make certain things really tricky that are quite exciting. So yes, I do think that SQLite could need some competition. Even just for finding new ways to influence the original project.

Re: Limbo: A complete rewrite of SQLite in Rust

#80

Given the code quality and rigid testing, SQLite is probably the last project that should be rewritten. It'd be great to see all other C code rewritten first!

That was my take when LibSQL was announced. And it still is and would be my take if LibSQL remains C-coded. But a Rust-coded rewrite of SQLite3 or LibSQL is a different story. The SQLite3 business model is that SQLite3 is open source but the best test suite for it is proprietary, and they don't accept contributions to any of either. This incentivizes anyone who needs support and/or new features in SQLite3 to join the…

Why does the fork have to gain traction?

You keep and maintain your local fork that does what you need it to do. perhaps if you are charitable you share it with others. but you don't need to do this. and it just adds support burden.

Post reply on HN