[HN Gopher] Making SQLite extensions pip install-able
       ___________________________________________________________________
        
       Making SQLite extensions pip install-able
        
       Author : simonw
       Score  : 66 points
       Date   : 2023-02-06 19:50 UTC (3 hours ago)
        
 (HTM) web link (observablehq.com)
 (TXT) w3m dump (observablehq.com)
        
       | alexgarcia-xyz wrote:
       | Author here, happy to answer questions!
       | 
       | Simon already gave a great intro to my SQLite extensions, and I
       | just want to point folks to Anton Zhiyanov's sqlean project, for
       | pure-C extensions: https://github.com/nalgeon/sqlean
       | 
       | Also, some of these extensions are also packaged as Datasette
       | plugins, so you can also run `datasette install datasette-sqlite-
       | regex` or `datasette install datasette-sqlite-ulid` to add these
       | extension to your Datasette instances!
       | https://docs.datasette.io/en/stable/plugins.html
        
       | nalgeon wrote:
       | Alex has developed a framework that allows him to write SQLite
       | extensions in Rust instead of C. Very clever! This way, he can be
       | productive and avoid a lot of potential bugs while keeping the
       | raw performance.
       | 
       | As a maintainer of a large set of C SQLite extensions, I envy him
       | :)
        
       | simonw wrote:
       | This is such a huge step forward for the usability of custom
       | SQLite extensions in Python world.
       | 
       | Alex has a whole family of SQLite extensions that he's built in
       | Rust which are worth checking out:
       | 
       | - sqlite-xsv: https://github.com/asg017/sqlite-xsv
       | 
       | - sqlite-fastrand: https://github.com/asg017/sqlite-fastrand
       | 
       | - sqlite-ulid: https://github.com/asg017/sqlite-ulid
       | 
       | - sqlite-jsonschema: https://github.com/asg017/sqlite-jsonschema
       | 
       | - sqlite-regex: https://github.com/asg017/sqlite-regex
       | 
       | - sqlite-url: https://github.com/asg017/sqlite-url
       | 
       | - sqlite-http: https://github.com/asg017/sqlite-http
       | 
       | - sqlite-lines: https://github.com/asg017/sqlite-lines
       | 
       | - sqlite-path: https://github.com/asg017/sqlite-path
       | 
       | - sqlite-html: https://github.com/asg017/sqlite-html
        
         | [deleted]
        
         | beckingz wrote:
         | So how soon do we get sqlite extensions in the browser with
         | WASM?
        
           | alexgarcia-xyz wrote:
           | It's possible but very difficult. For extensions built purely
           | in C, you can statically compile extensions into a SQLite
           | WASM build, which I have a few demos of with sqlite-lines [0]
           | and sqlite-path[1].
           | 
           | For extensions but in Rust however, it's much more difficult.
           | Matt @tantaman has some success cross compiling his cr-sqlite
           | [2] project to WASM, but it's quite complex.
           | 
           | SQLite extensions typical rely on dlopen() to load dynamic
           | libraries as an extension. WASM doesn't really have that, so
           | you either have to statically compile your extension in your
           | WASM build (which is difficult for non-C languages bc SQLite
           | is written in C), or hack around some barely-supported WASM
           | features that emulate dlopen(). Though I'm not the best with
           | WASM, so hopefully someone with more WASM experience chimes
           | in to help! It's something I'm tracking in this issue for the
           | `sqlite-loadble-rs` project [3]
           | 
           | [0] https://observablehq.com/@asg017/introducing-sqlite-
           | lines#ce...
           | 
           | [1] https://observablehq.com/@asg017/introducing-sqlite-
           | path#cel...
           | 
           | [2] https://github.com/vlcn-io/cr-sqlite
           | 
           | [3] https://github.com/asg017/sqlite-loadable-rs/issues/5
        
       | axelthegerman wrote:
       | Does anybody know how feasible this would be with rubygems? Gems
       | can build native extension so maybe possible?
        
       ___________________________________________________________________
       (page generated 2023-02-06 23:00 UTC)