Skip to content

Instantly share code, notes, and snippets.

View wasmer-c-api-2.c
void print_str(wasmer_instance_context_t *ctx, int32_t ptr, int32_t len)
print_str_called = true;
wasmer_memory_t *memory = wasmer_instance_context_memory(ctx, 0);
uint32_t mem_len = wasmer_memory_length(memory);
uint8_t *mem_bytes = wasmer_memory_data(memory);
printf("%.*s", len, mem_bytes + ptr);
bjfish / source.c
Created Mar 3, 2019
Hello World C Wasm Example App
View source.c
extern void print_str(char *ptr, int len);
int hello_wasm()
char *str = "Hello, World!";
print_str(str, 13);
return 0;
bjfish / wasmer-c-api-example.c
Last active Mar 3, 2019
Wasmer C API Example
View wasmer-c-api-example.c
#include <stdio.h>
#include "rust-build/src/wasmer-runtime-c-api/lib/runtime-c-api/wasmer.h"
#include <assert.h>
#include <stdint.h>
static print_str_called = false;
// Host function that will be imported into the Web Assembly Instance
void print_str(wasmer_instance_context_t *ctx, int32_t ptr, int32_t len)
bjfish /
Created Feb 24, 2019
Hello World Rust Wasm Sample App
// Define a function that is imported into the module.
// By default, the "env" namespace is used.
extern "C" {
fn print_str(ptr: *const u8, len: usize);
// Define a string that is accessible within the wasm
// linear memory.
static HELLO: &'static str = "Hello, World!";
bjfish /
Last active Jan 25, 2019
Wasmer Rust Embedder App Example
extern crate wasmer_runtime;
use std::{fs::File, io::prelude::*, str};
use wasmer_runtime::{self as runtime, prelude::*};
fn main() {
// Read the wasm file produced by our sample application...
let mut wasm_file =
bjfish /
Created Jan 21, 2019
Wasmer Wasm Sample App
// Defines functions to import from "env" namespace
extern "C" {
fn print_str(ptr: *const u8, len: usize);
pub extern fn hello_wasm(){
let message = "Hello World";
unsafe {
print_str(message.as_ptr(), message.len());
bjfish / index.html
Created Apr 25, 2018
Wasm Memory Visualization
View index.html
<script src=""></script>
<div id="main"></div>
bjfish / index.html
Created Apr 25, 2018
GoL ASC Memory Visualzation index.html
View index.html
<!DOCTYPE html>
<title>Conway's Game of Life - AssemblyScript</title>
<link rel="icon" href="" type="image/x-icon" />
<meta name="viewport" content="user-scalable=0" />
/* html, body { height: 100%; margin: 0; overflow: hidden; color: #111; background: #fff; font-family: sans-serif; } */
/* body { border-top: 2px solid #bc18d4; }
h1 { padding: 18px 20px 20px; font-size: 12pt; margin: 0; }
bjfish / update-mri-cext.rb
Created Sep 30, 2017
C ext header patching tool
View update-mri-cext.rb
# Copyright (c) 2017 Oracle and/or its affiliates. All rights reserved.
# This code is released under a tri EPL/GPL/LGPL license. You can use it,
# redistribute it and/or modify it under the terms of the:
# Eclipse Public License version 1.0
# GNU General Public License version 2
# GNU Lesser General Public License version 2.1
# Run with ruby tool/update-mri-cext.rb