WebAssembly version of DuckDB

Overview

Main Benchmarks npm duckdb

DuckDB-Wasm

DuckDB-Wasm is an in-process analytical SQL database for the browser. It is powered by WebAssembly, speaks Arrow fluently, reads Parquet, CSV and JSON files backed by Filesystem APIs or HTTP requests and has been tested with Chrome, Firefox, Safari and Node.js. Read the launch blog post.

Try it out at shell.duckdb.org and on Observable and read the API documentation.

DuckDB-Wasm is fast! If you're here for performance numbers, head over to our benchmarks.

Repository Structure

Subproject Description Language
duckdb_wasm Wasm Library C++
@duckdb/duckdb-wasm Typescript API Typescript
@duckdb/duckdb-wasm-shell SQL Shell Rust
@duckdb/benchmarks Benchmarks Typescript
Issues
  • apache-arrow marked as external dependency

    apache-arrow marked as external dependency

    Hello folks ~

    So thrilled to experiment w/ duckdb-wasm! Thank you for all your hard work.

    I'm having a bit of trouble bundling duckdb-wasm in a simple case. I'm using Rollup and opting for the simplest possible input file:

    import * as duckdb from "@duckdb/duckdb-wasm/dist/duckdb-esm";
    const JSDELIVR_BUNDLES = duckdb.getJsDelivrBundles();
    console.log("resolving bundles");
    async function resolve() {
      // Select a bundle based on browser checks
      const bundle = await duckdb.selectBundle(JSDELIVR_BUNDLES);
      // Instantiate the asynchronus version of DuckDB-Wasm
      const worker = new Worker(bundle.mainWorker);
      const logger = new duckdb.ConsoleLogger();
      const db = new duckdb.AsyncDuckDB(logger, worker);
      return await db.instantiate(bundle.mainModule, bundle.pthreadWorker);
    }
    
    (async () => {
      const db = await resolve();
      console.log(db);
    })();
    
    

    But rollup produces this error:

    rollup v2.59.0
    bundles src/main.js โ†’ public/poc.js...
    (!) Unresolved dependencies
    https://rollupjs.org/guide/en/#warning-treating-module-as-external-dependency
    apache-arrow (imported by node_modules/@duckdb/duckdb-wasm/dist/duckdb-esm.js)
    (!) Missing global variable name
    Use output.globals to specify browser global variable names corresponding to external modules
    apache-arrow (guessing 'apacheArrow')
    

    Here is a repository that hopefully reproduces this (including my rollup file, includes instructions): https://github.com/hamilton/duckdb-wasm-issues

    Is there something obvious that I'm missing here? (There usually is!)

    examples 
    opened by hamilton 22
  • export database error

    export database error

    Hi. I am using duckdb-wasm in pure javascript.

    Refered to https://observablehq.com/@cmudig/[email protected]/duckdb .

    when i use export database '/out/localdb', i am getting error: "Not implemented Error: BufferedFileSystem: DirectoryExists is not implemented!".

    Please give me solution.

    library 
    opened by luckyfanghe 22
  • Feature/s3 fs

    Feature/s3 fs

    hey @ankoh here's the s3fs for reading. I've done my best to write enough meaningful test without requiring any mocking or s3 server emulating, but there's tests that really only work with an s3 server. I think for now its okay though and in line with DuckDB, we could later look into mocking s3 or using something like s3rver to make the tests more solid.

    opened by samansmink 15
  • Timestamp fields returned as JavaScript Dates?

    Timestamp fields returned as JavaScript Dates?

    It would be great if the client could convert timestamp fields to native JavaScript Date objects instead of the millisecond value.

    Here is an example using both a parquet file and a csv file articulating the ask: https://observablehq.com/@observablehq/duckdb-date-types

    opened by enjalot 12
  • Suggested way to handle read-only concurrency

    Suggested way to handle read-only concurrency

    In the use case that I have a query that I saved as a materialized view -- or let's just say a table called SavedQuery. Let's say I want to grab some statistics for each column, and there are ten columns. So the queries that I run are:

    SELECT <info> FROM SavedQuery GROUP BY <field1>
    SELECT <info> FROM SavedQuery GROUP BY <field2>
    ...
    

    In the case that I run all ten queries in parallel (or whatever batch size I decide to use), what is the suggested way to run these queries concurrently?

    opened by david542542 11
  • Online shell font looks weird

    Online shell font looks weird

    What happens?

    The rendering of the https://shell.duckdb.org/ shell font looks odd.

    1646991083

    To Reproduce

    Open https://shell.duckdb.org/.

    Environment (please complete the following information):

    • OS: Arch Linux
    • Browser Version: Brave Browser 99.1.36.112
    opened by davidgasquez 10
  • not working examples for bare-browser and esbuild-browser

    not working examples for bare-browser and esbuild-browser

    when I try to run examples for those two projects ( bare-browser and esbuild-browser), I get errors. I cloned whole project and tried to run it. Can someone give more info about it?

    Also, can someone point me to working example for react and vanilla JS front-end project?

    opened by uros87 10
  • [Question] Wondering about serial HTTP range requests

    [Question] Wondering about serial HTTP range requests

    Hey guys, first just wanted to say, amazing work on this library, it's really impressive and I'm excited both to try things myself and to see what everyone else ends up doing with it ๐Ÿ™‚

    Anyways, this isn't an ISSUE so much as a QUESTION, something for my curiosity, so no worries if you don't get back to it for a while, or at all -- just figured I'd ask since I think it's interesting, hope that's ok.

    So I wanted to play around a bit in the shell, and I uploaded a parquet file (a common one, a subset of the NYC taxi ride dataset, about 500MB in total) to a public S3 bucket and set the CORS so that it could be read by shell.duckdb.org. Then, I went to try out a few queries on the remote data file:

    Screen Shot 2021-11-13 at 3 40 14 PM

    First of all, I want to say again this is just amazing -- it pulled less then 30MB to answer an analytical query like this on a 500MB dataset, just blows my mind ๐Ÿ’ฏ

    But secondly -- it's kinda slow! That query took over a minute to come back, most of it seeming to be network. To confirm, I opened up the devtools and checked the network, and saw a whole bunch of tiny sequential range requests that seemed to be making sure we couldn't get too much work done at once:

    Screen Shot 2021-11-13 at 3 43 09 PM

    So, I guess the TL;DR is that I want to know more about these! I'm guessing they can't "just" be fully parallelized, i.e. we need information from the last response in order to know what the next request looks like. But, maybe we could make fewer of these calls if we could increase the byte request size when the parquet is large? Or implement some kind of batching? Since this was the only hitch I ran into in an otherwise really cool experiment, I just wanted to hear your thoughts or plans.

    Thanks a lot in advance, both for looking at my question and for building this in the first place!

    opened by pickledish 10
  • Interval type unsupported in query output

    Interval type unsupported in query output

    Interval Type is not working as expected.

    Query SELECT INTERVAL '3' MONTH AS interval

    • on shell.duckdb.org: outputs an empty line.
    • on DuckDB cli it returns:
    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
    โ”‚ interval โ”‚
    โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
    โ”‚ 3 months โ”‚
    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
    

    Reason for this appears to be that DuckDB sets the type for Interval to the Duration type ("tdm" type from arrow c data interface docs). The Interval is converted to milliseconds in DuckDB. The duration type that is emitted by DuckDB, is not supported in Arrow JS.

    ~The most likely option seems to be for DuckDB to emit an Interval type that JS does support. There seems to be some support for Intervals as the type is listed in the docs. If DuckDB emits interval [days, time] for the interval type DuckDB-WASM would be able to support intervals.~

    (edit) Just discussed the possibility of emitting arrow interval types from DuckDB with mark, the problem is that the interval types of DuckDB and and arrow are not compatible. The best solution now seems to wait for the Duration type to be implemented in Arrow JS.

    opened by samansmink 8
  • are parameterized queries supported?

    are parameterized queries supported?

    from what I can tell I can't do something like conn.query("select * from test where field = $1", myVariable)

    is this not supported within DuckDB or just not exposed in the bindings?

    opened by enjalot 8
  • Allow user to override range requirement

    Allow user to override range requirement

    relates to #157

    In development, I use devd, which does not support range requests, and have a small data set. It would be very useful for me to be able to disable the range support requirement while I'm in development; my production server supports them.

    The inability to turn this off means if I want to use duckdb-wasm, I have to rewrite my whole development setup.

    library 
    opened by llimllib 7
  • chore(deps-dev): bump @typescript-eslint/parser from 5.27.1 to 5.30.0

    chore(deps-dev): bump @typescript-eslint/parser from 5.27.1 to 5.30.0

    Bumps @typescript-eslint/parser from 5.27.1 to 5.30.0.

    Release notes

    Sourced from @โ€‹typescript-eslint/parser's releases.

    v5.30.0

    5.30.0 (2022-06-27)

    Features

    • eslint-plugin: [no-shadow] add shadowed variable location to the error message (#5183) (8ca08e9)
    • treat this in typeof this as a ThisExpression (#4382) (b04b2ce)

    v5.29.0

    Note: Version bump only for weekly release.

    Unfortunately we marked a website change as a feat, hence this wasn't just a patch-level bump.

    v5.28.0

    5.28.0 (2022-06-13)

    Bug Fixes

    • [TS4.7] allow visiting of typeParameters in TSTypeQuery (#5166) (dc1f930)
    • eslint-plugin: [space-infix-ops] support for optional property without type (#5155) (1f25daf)

    Features

    • ast-spec: extract AssignmentOperatorToText (#3570) (45f75e6)
    • eslint-plugin: [consistent-generic-constructors] add rule (#4924) (921cdf1)
    Changelog

    Sourced from @โ€‹typescript-eslint/parser's changelog.

    5.30.0 (2022-06-27)

    Note: Version bump only for package @โ€‹typescript-eslint/parser

    5.29.0 (2022-06-20)

    Note: Version bump only for package @โ€‹typescript-eslint/parser

    5.28.0 (2022-06-13)

    Note: Version bump only for package @โ€‹typescript-eslint/parser

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies javascript 
    opened by dependabot[bot] 0
  • fix(deps): bump react from 18.1.0 to 18.2.0

    fix(deps): bump react from 18.1.0 to 18.2.0

    Bumps react from 18.1.0 to 18.2.0.

    Release notes

    Sourced from react's releases.

    18.2.0 (June 14, 2022)

    React DOM

    React DOM Server

    Server Components (Experimental)

    Changelog

    Sourced from react's changelog.

    18.2.0 (June 14, 2022)

    React DOM

    React DOM Server

    Server Components (Experimental)

    Commits
    Maintainer changes

    This version was pushed to npm by gnoff, a new releaser for react since your current version.


    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies javascript 
    opened by dependabot[bot] 0
  • chore(deps-dev): bump typescript from 4.7.3 to 4.7.4

    chore(deps-dev): bump typescript from 4.7.3 to 4.7.4

    Bumps typescript from 4.7.3 to 4.7.4.

    Release notes

    Sourced from typescript's releases.

    TypeScript 4.7.4

    For release notes, check out the release announcement.

    For the complete list of fixed issues, check out the

    Downloads are available on:

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies javascript 
    opened by dependabot[bot] 0
  • chore(deps-dev): bump @types/node from 17.0.42 to 18.0.0

    chore(deps-dev): bump @types/node from 17.0.42 to 18.0.0

    Bumps @types/node from 17.0.42 to 18.0.0.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies javascript 
    opened by dependabot[bot] 0
  • chore(deps-dev): bump prettier from 2.6.2 to 2.7.1

    chore(deps-dev): bump prettier from 2.6.2 to 2.7.1

    Bumps prettier from 2.6.2 to 2.7.1.

    Release notes

    Sourced from prettier's releases.

    2.7.1

    ๐Ÿ”— Changelog

    2.7.0

    diff

    ๐Ÿ”— Release note

    Changelog

    Sourced from prettier's changelog.

    2.7.1

    diff

    Keep useful empty lines in description (#13013 by @โ€‹chimurai)

    # Input
    """
    First line
    

    Second Line """ type Person { name: String }

    Prettier 2.7.0

    """ First line Second Line """ type Person { name: String }

    Prettier 2.7.1

    """ First line

    Second Line """ type Person { name: String }

    2.7.0

    diff

    ๐Ÿ”— Release Notes

    Commits
    • eeed611 Release 2.7.1
    • 794d9d1 bugfix(graphql): Keep useful empty lines in description (#13013)
    • dd2af6f Fix --skip-dependencies-install
    • b21772b Allow skip depencies install & set repo
    • 5530ad2 Merge branch 'main' of github.com:prettier/prettier
    • c7c9930 Clean changelog
    • 448786f Revert changes in release script
    • 6b388fa Add truncate
    • 109333a Git blame ignore 2.7.0
    • 59ec4f2 Bump Prettier dependency to 2.7.0
    • Additional commits viewable in compare view
    Maintainer changes

    This version was pushed to npm by prettier-bot, a new releaser for prettier since your current version.


    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies javascript 
    opened by dependabot[bot] 0
  • Increase memory limit to 4GB?

    Increase memory limit to 4GB?

    It seems that duckdb-wasm has a memory limit of 1.7GB, which might be due to the 2GB memory limit of WebAssembly previously.

    duckdb> PRAGMA database_size;
    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
    โ”‚ database_size โ”† block_size โ”† total_blocks โ”† used_blocks โ”† free_blocks โ”† wal_size โ”† memory_usage โ”† memory_limit โ”‚
    โ•žโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•ชโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•ชโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•ชโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•ชโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•ชโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•ชโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•ชโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•ก
    โ”‚               โ”†            โ”†              โ”†             โ”†             โ”†          โ”† 0 bytes      โ”† 1.7GB        โ”‚
    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
    Elapsed: 2 ms
    

    Now, it seems that the major browsers can support a 4GB memory limit, and it requires only setting up a flag for emcc to according to Up to 4GB of memory in WebAssembly. Could the support for 4GB memory be enabled for duckdb-wasm or does it require extra work?

    opened by mewim 2
This is version 1.85 of the Berkeley DB code.

berkeley-db.1.85 berkeley db.1.85 @(#)README 8.27 (Berkeley) 9/1/94 This is version 1.85 of the Berkeley DB code. For information on compiling and ins

Sergey Bronnikov 3 Jan 28, 2022
DuckDB is an in-process SQL OLAP Database Management System

DuckDB is an in-process SQL OLAP Database Management System

DuckDB 5.4k Jun 27, 2022
Internet Key Exchange version 2 (IKEv2) daemon - portable version of OpenBSD iked

Portable OpenIKED This is a port of OpenBSD's OpenIKED to different Unix-like operating systems, including Linux, macOS and FreeBSD.

OpenIKED 26 May 23, 2022
Make CVE-2020-0668 exploit work for version < win10 v1903 and version >= win10 v1903

CVE-2020-0668 Made CVE-2020-0668 exploit work for version < win10 v1903 and version >= win10 v1903 Diaghub Exploit (< v1903) powershell exploit works

null 13 Dec 15, 2021
Modified version of srlua for MSVC using version 5.4 of Lua

Modified version of srlua for MSVC using version 5.4 of Lua. Quote from the original README: This is a self-running Lua interpreter. It is meant to be

Augusto Goulart 2 Feb 24, 2022
A special version of Packet Batch that utilizes AF_XDP Linux sockets (this should be faster than the standard version, but not as fast as the DPDK).

Packet Batch (AF_XDP) Description This is a special version of Packet Batch that utilizes AF_XDP sockets instead of AF_PACKETv3 (which is what the sta

Packet Batch 9 Feb 24, 2022
A special version of Packet Batch that utilizes the DPDK (this should be faster than the standard version).

Packet Batch (DPDK) Description This is a special version of Packet Batch that utilizes the DPDK, a kernel-bypass library. This does not use any form

Packet Batch 6 Feb 24, 2022
A simple API to parse long URL to a shorter version, and retrieve the longer version from the latter.

URLShortener Overview A simple API to parse long URL to a shorter version, and retrieve the longer version from the latter. URLShortener builds upon l

Mikayel Egibyan 2 Dec 7, 2021
We implemented our own sequential version of GA, PSO, SA and ACA using C++ and the parallelized version with CUDA support

We implemented our own sequential version of GA, PSO, SA and ACA using C++ (some using Eigen3 as matrix operation backend) and the parallelized version with CUDA support. All of them are much faster than the popular lib scikit-opt.

Aron751 4 May 7, 2022
Minimalistic C++/Python GUI library for OpenGL, GLES2/3, Metal, and WebAssembly/WebGL

NanoGUI NanoGUI is a minimalistic cross-platform widget library for OpenGL 3+, GLES 2/3, and Metal. It supports automatic layout generation, stateful

Mitsuba Physically Based Renderer 1k Jun 27, 2022
2048 written in C and compiled to WebAssembly

2048.wasm 2048 written in C and compiled to WebAssembly Play Use the arrow keys ( แŠ แ… แƒ แ ) to slide the tiles. press n to play over. Usage Compile C

Nishchith Shetty 48 May 26, 2022
Portrait segmentation in your web browser with ncnn and webassembly

ncnn-webassembly-portrait-segmentation open https://nihui.github.io/ncnn-webassembly-portrait-segmentation and enjoy build and deploy Install emscript

null 21 May 13, 2022
web server & client. Fully C++/WebAssembly. Server runs on google cloud function. Client uses a C++ virtual dom.

Starter project. A web server and client fully made with C++/WebAssembly. A simple CMake configuration describes how to build and run everything.

null 3 Aug 6, 2021
WasmEdge Runtime is a high-performance, extensible, and hardware optimized WebAssembly Virtual Machine for automotive, cloud, AI, and blockchain applications.

WasmEdge Runtime is a high-performance, extensible, and hardware optimized WebAssembly Virtual Machine for automotive, cloud, AI, and blockchain applications.

null 3.4k Jun 27, 2022
Deploy SCRFD, an efficient high accuracy face detection approach, in your web browser with ncnn and webassembly

ncnn-webassembly-scrfd open https://nihui.github.io/ncnn-webassembly-scrfd and enjoy build and deploy Install emscripten

null 37 Jun 9, 2022
A (relatively) small node library to clone and pull git repositories in a standalone manner thanks to libgit2, powered by WebAssembly and Emscripten

simple-git-wasm A (relatively) small node library to clone and pull git repositories in a standalone manner thanks to libgit2, powered by WebAssembly

Powercord 20 May 20, 2022
Deploy OcrLite in your web browser with ncnn and webassembly

ncnn-webassembly-ocrlite Requirements ncnn webassembly opencv-mobile webassembly 3.4.13 Build Install emscripten git clone https://github.com/emscript

SgDylan 22 Sep 5, 2021
Python bindings for Wasm3, the fastest WebAssembly interpreter

pywasm3 Python bindings for Wasm3, the fastest WebAssembly interpreter Main repository: Wasm3 project Install # Latest release: pip3 install pywasm3

Wasm3 Labs 46 Jun 17, 2022
Chocolate Doom WebAssembly port with WebSockets support

Wasm Doom This is a Chocolate Doom WebAssembly port with WebSockets support. Requirements You need to install Emscripten and a few other tools first:

Cloudflare 157 Jun 17, 2022
A WebAssembly interpreter written in C for demonstration.

wasmc ไธญๆ–‡ๆ–‡ๆกฃ A WebAssembly interpreter written in C for demonstration. This repository implements a WebAssembly interpreter. It is written to clarify ho

ๆนฎ่ฟœ 50 Jun 26, 2022
A tiny programming language that transpiles to C, C++, Java, TypeScript, Python, C#, Swift, Lua and WebAssembly ๐Ÿš€

A tiny programming language that transpiles to C, C++, Java, TypeScript, Python, C#, Swift, Lua and WebAssembly ??

Lingdong Huang 527 Jun 22, 2022
Very fast Markdown parser and HTML generator implemented in WebAssembly, based on md4c

Very fast Markdown parser and HTML generator implemented in WebAssembly, based on md4c

Rasmus 1.1k Jun 27, 2022
A fully-featured Falling-Sand game in the browser - Powered by WebAssembly

PLOP A fully-featured Falling-Sand game powered by WebAssembly! Try it out here Building Required Dev-Dependencies: clang uglifyjs $ git clone https:/

Caltrop 44 Jun 27, 2022
Run statically-compiled WebAssembly apps on any embedded platform

embedded-wasm-apps Run native, statically-compiled AssemblyScript, Rust, C/C++, TinyGo, Zig, etc. apps on any platform How it works The approach is si

Volodymyr Shymanskyy 99 Jun 22, 2022
Run statically-compiled WebAssembly apps on any embedded platform

embedded-wasm-apps Run native, statically-compiled apps on any platform, using WebAssembly. Examples include AssemblyScript, Rust, C/C++, TinyGo, Zig,

Wasm3 Labs 99 Jun 22, 2022
WebAssembly from Scratch: From FizzBuzz to DooM.

WebAssembly from Scratch: From FizzBuzz to DooM Exploring WebAssembly from scratch from a backend-person-point-of-view. A story in four acts. Welcome

Cornelius Diekmann 1.4k Jun 23, 2022
Translates WebAssembly modules to C

w2c2 Translates WebAssembly modules to C. Inspired by wabt's wasm2c. Features Implements the WebAssembly Core Specification 1.0 Passes 99.9% of the We

Bastian Mรผller 197 Jun 15, 2022
Snake in C++ for WebAssembly

Snake-wasm Snake in C++ for WebAssembly This is a primitive greedy snake game demo in C++(ish) to test WebAssembly Getting Started Install emscripten

null 1 Jan 4, 2022
C++ WebAssembly assembler

wasmblr A single header file WebAssembly assembler. This library makes it easier to generate web assembly binaries directly from C++. Useful for JIT c

Bram Wasti 131 Jun 16, 2022