Skip to main content

Language Bindings

Wvlet provides SDKs for various programming languages, allowing you to compile Wvlet queries to SQL directly from your preferred language environment.

Available SDKs

Python SDK

PyPI version

The Python SDK provides native performance with easy installation via pip:

pip install wvlet
from wvlet import compile

sql = compile("from users select name, age where age > 18")
print(sql) # SELECT name, age FROM users WHERE age > 18

Features:

  • Native library for high-performance compilation
  • Automatic CLI fallback
  • Support for all Wvlet features
  • Integration with pandas, DuckDB, SQLAlchemy

TypeScript/JavaScript SDK

npm version

The TypeScript SDK enables Wvlet compilation in Node.js and browsers:

npm install wvlet
import { WvletCompiler } from 'wvlet';

const compiler = new WvletCompiler();
const sql = compiler.compile('from users select name, age where age > 18');
console.log(sql); // SELECT name, age FROM users WHERE age > 18

Features:

  • Pure JavaScript via Scala.js compilation
  • Works in browsers and Node.js
  • Full TypeScript support
  • No native dependencies

Planned SDKs

The following language bindings are planned for future releases:

  • Java/Scala - Native JVM integration
  • Ruby - Ruby gem with native extensions
  • Rust - Cargo crate with native bindings
  • Go - Go module with CGO bindings
  • C/C++ - Header-only library

Native Library

All language SDKs use the same underlying native library (libwvlet) for consistent behavior and performance across languages. The native library is built using Scala Native and provides a C-compatible API.

Supported Platforms

Platformx86_64ARM64
Linux
macOS
Windows🔄🔄

✅ Supported | 🔄 Planned | ❌ Not Supported

Contributing

We welcome contributions to add more language bindings! If you're interested in creating an SDK for your favorite language:

  1. Check the Python SDK implementation as a reference
  2. Use the native library API defined in WvcLib.scala
  3. Follow the language's best practices for packaging and distribution
  4. Submit a pull request with your implementation

For questions or discussions about language bindings, please use GitHub Discussions.