Git Product home page Git Product logo

worker-emscripten-template's Introduction

๐Ÿ‘ท worker-emscripten-template

A template for kick starting a Cloudflare worker project with emscripten

index.js is the content of the Workers script.
main.c is the c source code that calls into the stb image resizer library.
build.js holds the command we use to call emscripten.
webpack.config.js holds the webpack config we use to bundle the emscripten output together with your script.

This template requires Docker for providing the emscripten build environment. While we believe this provides the best developer experience, if you wish to not use Docker you can delete the check for docker and the docker parts of the build command in build.js. Note this means you must have emscripten installed on your machine.

Wrangler

This template requires version >=1.6.0 of Wrangler

$ wrangler generate myapp https://github.com/cloudflare/worker-emscripten-template
๐Ÿ”ง   Creating project called `myapp`...
โœจ   Done! New project created /path/to/myapp

To demo you can use wrangler dev

$ wrangler dev
๐Ÿ‘‚ Listening on http://localhost:8787
$ curl http://localhost:8787/600*400.jpg?width=100

Shoutout to Surma for his webpack-emscripten-wasm gist that was instrumental in getting this working!

worker-emscripten-template's People

Contributors

dependabot[bot] avatar everlastingbugstopper avatar kristianfreeman avatar xortive avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

worker-emscripten-template's Issues

Broken with wrangler >= 1.6.0

I believe the two changes necessary are:

  1. Add this line to wrangler.toml:
webpack_config = "webpack.config.js"
  1. Change this line in index.js:
-      let instance = new WebAssembly.Instance(wasmprogram, info)
+      let instance = new WebAssembly.Instance(wasm, info)

The example does not 'work out of the box'.

If after installing the template and running it, one tries to execute curl http://localhost:8787/600*400.jpg?width=100 as suggested, the response is an error page due to timeout in some service.

The Emscripten build part triggers infinite loop

Since the Emscripten process changes something, or there is something else going on, the compiler.hooks.compilation.tap('emscripten-build', compilation => {
just restarts immediately after the build if unchecked.

RuntimeError: memory access out of bounds

I'm sporadically getting the following error:

Uncaught (in promise)
RuntimeError: memory access out of bounds
    at _malloc (<anonymous>:wasm-function[68]:0x1fbd6)
    at _init (<anonymous>:wasm-function[15]:0x3408)
    at Object.e._init [as init] (worker.js:1:7350)
    at worker.js:1:11030
Uncaught (in response)
Error: internal error

I haven't enabled logging on prod, but i believe the following Error 1101 Ray ID: ... Worker threw exception is likely caused by the above

Is this project abandoned?

Trying to get it to work, and despite looking into several fixes in the issues section, it seems this is more or less entirely unmaintained for at least a year now

Unable to generate template in Wrangler

cargo-generate fails to generate a project using this template because liquid is trying to do variable replacement/substitution within the source:

src/workers ยป wrangler generate my-emscripten-resizer https://github.com/cloudflare/worker-emscripten-template
โฌ‡๏ธ Installing cargo-generate...
๐ŸŒ€  ๐Ÿ‘  Generating a new webpack worker project with name 'my-emscripten-resizer'... ๐ŸŒ€
๐Ÿ”ง   Creating project called `my-emscripten-resizer`...
Error: liquid:    --> 288:32
    |
288 |             sprintf(temp, "{%d,%d}", d ? data[i] : (trims[i]>>8), trims[i]&255);โŠ
    |                                ^---
    |
    = expected Value, Range, ">", "<", "=", ",", ":", "==", "!=", "<>", ">=", or "<="

Error: failed to execute `"/Users/kristian/Library/Caches/.wrangler/cargo-generate-c45c3b5989732284/cargo-generate" "generate" "--git" "https://github.com/cloudflare/worker-emscripten-template" "--name" "my-emscripten-resizer" "--force"`: exited with exit code: 1

On generate getting error liquid: Cannot read file with: path=..atari_8bit_font_revised.png

installed via npm i @cloudflare/wrangler -g
running node 10.1.0

Running as admin on windows 10 but getting this


ฮป wrangler generate myapp https://github.com/ashleygwilliams/worker-emscripten-template
โฌ‡๏ธ Installing cargo-generate...
  Generating a new webpack worker project with name 'myapp'...
 Creating project called `myapp`...
Error: liquid: Cannot read file
  with:
    path=C:\Repos\tests\myapp\src\stb\data\atari_8bit_font_revised.png

Error: failed to execute `"cmd" "/C" "C:\\Users\\miked\\AppData\\Local\\.wrangler\\cargo-generate-365221054903e5ed\\cargo-generate.exe" "generate" "--git" "https://github.com/ashleygwilliams/worker-emscripten-template" "--name" "myapp" "--force"`: exited with exit code: 1

Getting "Error: liquid: " after wrangler generate

Hi,

After using the command line: wrangler generate resize https://github.com/ashleygwilliams/worker-emscripten-template

Error: liquid: --> 288:32
|
288 | sprintf(temp, "{%d,%d}", d ? data[i] : (trims[i]>>8), trims[i]&255);โŠ
| ^---
|
= expected Value, Range, ">", "<", "=", ",", ":", "==", "!=", "<>", ">=", or "<="

Error: ErrorMessage { msg: "failed to execute \"/Users/szelee/.cargo/bin/cargo-generate\" \"generate\" \"--git\" \"https://github.com/ashleygwilliams/worker-emscripten-template\" \"--name\" \"resize\" \"--force\": exited with exit code: 1" }

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.