Add rust example

This commit is contained in:
Nathan Braswell
2022-04-11 16:07:11 -04:00
parent 645b9f7172
commit 55afa8977e
5 changed files with 73 additions and 18 deletions

View File

@@ -11,7 +11,24 @@ echo "Compile Straight"
touch csc_out.wasm && rm csc_out.wasm && scheme --script ./partial_eval.scm fib.kp && time echo $NUMBER | wasmtime ./csc_out.wasm touch csc_out.wasm && rm csc_out.wasm && scheme --script ./partial_eval.scm fib.kp && time echo $NUMBER | wasmtime ./csc_out.wasm
#cp csc_out.wasm comp_fib_dyn.wasm #cp csc_out.wasm comp_fib_dyn.wasm
#exit echo "Compile Straight 2"
#touch csc_out.wasm && rm csc_out.wasm && scheme --script ./partial_eval.scm fib.kp && time echo $NUMBER | wasm3 ./csc_out.wasm
touch csc_out.wasm && rm csc_out.wasm && scheme --script ./partial_eval.scm fib2.kp && time echo $NUMBER | wasmtime ./csc_out.wasm
echo "Python"
time python3 ./fib.py $NUMBER
echo "Rust Wasm Debug"
pushd rust_fib
cargo build --target=wasm32-wasi && time echo $NUMBER | wasmtime target/wasm32-wasi/debug/rust_let.wasm
popd
echo "Rust Wasm Release"
pushd rust_fib
cargo build --release --target=wasm32-wasi && time echo $NUMBER | wasmtime target/wasm32-wasi/release/rust_let.wasm
popd
exit
echo "Interpret Straight" echo "Interpret Straight"
#touch csc_out.wasm && rm csc_out.wasm && scheme --script ./partial_eval.scm fib.kp no_compile && time echo $NUMBER | wasm3 ./csc_out.wasm #touch csc_out.wasm && rm csc_out.wasm && scheme --script ./partial_eval.scm fib.kp no_compile && time echo $NUMBER | wasm3 ./csc_out.wasm
@@ -27,19 +44,19 @@ touch csc_out.wasm && rm csc_out.wasm && scheme --script ./partial_eval.scm fib_
echo "Chez Scheme" echo "Chez Scheme"
time scheme --script ./fib.scm $NUMBER time scheme --script ./fib.scm $NUMBER
#
#echo "Chez Scheme Let" echo "Chez Scheme Let"
#time scheme --script ./fib_let.scm $NUMBER time scheme --script ./fib_let.scm $NUMBER
#
#echo "Python" echo "Python"
#time python3 ./fib.py $NUMBER time python3 ./fib.py $NUMBER
#
#echo "Python Let" echo "Python Let"
#time python3 ./fib_let.py $NUMBER time python3 ./fib_let.py $NUMBER
#
#echo "C" echo "C"
#clang-11 fib.c -o fib && time ./fib $NUMBER clang-11 fib.c -o fib && time ./fib $NUMBER
#
#echo "C let" echo "C let"
#clang-11 fib_let.c -o fib_let && time ./fib_let $NUMBER clang-11 fib_let.c -o fib_let && time ./fib_let $NUMBER

7
rust_fib/Cargo.lock generated Normal file
View File

@@ -0,0 +1,7 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 3
[[package]]
name = "rust_let"
version = "0.1.0"

8
rust_fib/Cargo.toml Normal file
View File

@@ -0,0 +1,8 @@
[package]
name = "rust_let"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]

18
rust_fib/src/main.rs Normal file
View File

@@ -0,0 +1,18 @@
use std::io;
fn fib(n: i64) -> i64 {
match n {
0 => 1,
1 => 1,
o => fib(o-1) + fib(o-2),
}
}
fn main() {
println!("enter number to fib:");
let mut buffer = String::new();
let stdin = io::stdin();
stdin.read_line(&mut buffer).unwrap();
println!("{}", fib(buffer.trim().parse::<i64>().unwrap()));
}

View File

@@ -1,6 +1,8 @@
with import <nixpkgs> { }; let
moz_overlay = import (builtins.fetchTarball https://github.com/mozilla/nixpkgs-mozilla/archive/master.tar.gz);
nixpkgs = import <nixpkgs> { overlays = [ moz_overlay ]; };
in with nixpkgs;
mkShell { mkShell {
LANG="en_US.UTF-8"; LANG="en_US.UTF-8";
nativeBuildInputs = [ nativeBuildInputs = [
@@ -13,5 +15,8 @@ mkShell {
wasm3 wasm3
wasmer wasmer
kakoune kakoune
#(rustChannelOf { rustToolchain = ./rust-toolchain; }).rust
#(rustChannelOf { date = "2022-04-10"; channel = "nightly"; targets = [ "wasm32-wasi" ]; }).rust
(latest.rustChannels.nightly.rust.override { targets = [ "wasm32-wasi" ]; })
]; ];
} }