Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/epilys/rsqlite3
sqlite3 Rewritten in RiiR Rust π¦π¦π¦ /s
https://github.com/epilys/rsqlite3
c2rust rust satire sqlite3
Last synced: 3 days ago
JSON representation
sqlite3 Rewritten in RiiR Rust π¦π¦π¦ /s
- Host: GitHub
- URL: https://github.com/epilys/rsqlite3
- Owner: epilys
- Created: 2021-10-31T11:42:29.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2021-10-31T11:46:23.000Z (about 3 years ago)
- Last Synced: 2024-10-25T11:36:47.976Z (9 days ago)
- Topics: c2rust, rust, satire, sqlite3
- Language: Rust
- Homepage:
- Size: 1.57 MB
- Stars: 157
- Watchers: 3
- Forks: 9
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# sqlite3 Rewritten in RiiR Rust π¦π¦π¦
Finally, one of the best written software paired with one of the best writable programming languageβ½ Fearless and memory safe, since the uncountable amount of `unsafe {}` blocks makes you not care anymore.
## Build and run
```shell
$ cargo +nightly build --release
# ... bunch of stuff I choose not to understand/read
warning: `rsqlite3` (bin "rsqlite3") generated 37 warnings (24 duplicates)
Finished release [optimized] target(s) in 39.84s
$ ./target/release/rsqlite3
-- Loading resources from /home/epilys/.sqliterc
SQLite version 3.37.0 2021-10-17 10:31:09
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> .open rrrrrruuuuuust.db
sqlite> CREATE TABLE opinions(x);
sqlite> insert into opinions(x) values (hex(randomblob(16)));
sqlite> insert into opinions(x) values (hex(randomblob(16)));
sqlite> insert into opinions(x) values (hex(randomblob(16)));
sqlite> insert into opinions(x) values (hex(randomblob(16)));
sqlite> select * from opinions;
x
--------------------------------
343D4BE24D07A96F8550B0942F664A6C
D6289536E4A8057EB44754358EACD31A
B4CA8E714CB57B11E7336263D214F30F
A6491CA289ABF90EB2D76F5E1F919272
sqlite> PRAGMA journal_mode = wal;
journal_mode
------------
wal
sqlite> PRAGMA integrity_check;
integrity_check
---------------
ok
sqlite> VACUUM;
sqlite> ^D
```## Wait, what?
This is just the sqlite3 code passed throught the
[`c2rust`](https://c2rust.com/) transpiler, along with some cleanup from me.
I've found no way to hook it to sqlite3's testing harnesses yet so I doubt it's
completely functional; but opening the shell seems to work.I am suspicious that a lot of code under ifdefs or not is lost through the transpilation, because the binary size difference is substantial:
```shell
$ du -sh $(which sqlite3)
9.5M /home/epilys/.local/bin/sqlite3
$ du -sh target/release/rsqlite3
5.1M target/release/rsqlite3
```