varnamproject / govarnam

Easily type Indic languages on computer and mobile. GoVarnam is a cross-platform transliteration library. Manglish -> Malayalam, Thanglish -> Tamil, Hinglish -> Hindi plus another 10 languages. GoVarnam is a near-Go port of libvarnam
https://varnamproject.com
Other
145 stars 11 forks source link

sqlite without C #2

Open joicemjoseph opened 3 years ago

joicemjoseph commented 3 years ago

https://gitlab.com/cznic/sqlite is a replacement for mattn's go-sqlite3 without c. can we try this out?

subins2000 commented 3 years ago

This looks interesting. Is it stable enough ? Found it has only experimental support on Windows and no 32-bit Windows support.

Also, mattn's go-sqlite3 is already packaged on Debian, very stable. https://packages.debian.org/source/stretch/golang-github-mattn-go-sqlite3

I remember there was an issue in packaging libvarnam for Debian because of SQLite dependency issue. With govarnam and mattn's sqlite (the only dependency of govarnam), packaging for Debian will be easier.

Maybe once cznic's sqlite3 becomes stable enough, we can consider a change.

subins2000 commented 2 years ago

I tried using cznic's sqlite, it's almost a drop-in replacement for mattn's go-sqlite3. Filed 1 feature request: https://gitlab.com/cznic/sqlite/-/issues/83

The resulting .so file became 7MB. Currently with cgo sqlite, it's 4MB. Also the time taken to run tests increased too. make test went to 5 seconds (currently it's 1.2s), make test-govarnamgo also went to 5 seconds (currently it's 0.5s).

So it seems there's a performance drop and filesize increase. I didn't test typing with ibus engine with it on though.

Here's the branch of my work (not pretty, was just messing with it): https://github.com/varnamproject/govarnam/tree/cznic-sqlite

subins2000 commented 11 months ago

@anoopmsivadas says he'll take a look at this, maybe we can support both C sqlite3 and Go sqlite with a feature flag maybe? With Go sqlite it becomes possible for govarnam to be embeddable in WASM. This needs an exploration as well.

cznic's go-sqlite3 just got the ability to register connection hooks yesterday: https://gitlab.com/cznic/sqlite/-/merge_requests/63

Edit: Oops, wrong anoop tagged, sorry @anoop142