All Projects → rod-lin → Ivm

rod-lin / Ivm

Licence: mit
a tiny vm

Programming Languages

c
50402 projects - #5 most used programming language
language
365 projects

Labels

Projects that are alternatives of or similar to Ivm

Awesome Wasm Runtimes
A list of webassemby runtimes
Stars: ✭ 490 (+1341.18%)
Mutual labels:  vm
Mac
bytecode interpreter in c (blog post)
Stars: ✭ 628 (+1747.06%)
Mutual labels:  vm
Tox
Tox is a statically typed version programming language that is written in rust.
Stars: ✭ 24 (-29.41%)
Mutual labels:  vm
Moarvm
A VM with adaptive optimization and JIT compilation, built for Rakudo
Stars: ✭ 537 (+1479.41%)
Mutual labels:  vm
Virtlet
Kubernetes CRI implementation for running VM workloads
Stars: ✭ 620 (+1723.53%)
Mutual labels:  vm
Vm
💻☁📦 The (official) Nextcloud VM (virtual machine appliance), Home/SME Server and scripts for RPi (4).
Stars: ✭ 716 (+2005.88%)
Mutual labels:  vm
Embiggen Disk
embiggden-disk live-resizes a filesystem after first live-resizing any necessary layers below it: an optional LVM LV and PV, and an MBR or GPT partition table
Stars: ✭ 440 (+1194.12%)
Mutual labels:  vm
Jellyvm
A VM written following the Linear Abstract Machine architecture
Stars: ✭ 21 (-38.24%)
Mutual labels:  vm
Securityworker
The best javascript code protection solution ever.
Stars: ✭ 626 (+1741.18%)
Mutual labels:  vm
Deep Learning Vm
Sets up a VM with Keras, TensorFlow, TFLearn and Theano installed
Stars: ✭ 23 (-32.35%)
Mutual labels:  vm
Vmcli
A set of utilities (vmcli + vmctl) for macOS Virtualization.framework
Stars: ✭ 571 (+1579.41%)
Mutual labels:  vm
Zetavm
Multi-Language Platform for Dynamic Programming Languages
Stars: ✭ 592 (+1641.18%)
Mutual labels:  vm
Ethereumjs Monorepo
Monorepo for the Ethereum VM TypeScript Implementation
Stars: ✭ 813 (+2291.18%)
Mutual labels:  vm
Luago Book
《自己动手实现Lua》随书源代码
Stars: ✭ 514 (+1411.76%)
Mutual labels:  vm
Runmacosinvirtualbox
Run macOS 10.16 Big Sur (and other versions) in VirtualBox on macOS
Stars: ✭ 839 (+2367.65%)
Mutual labels:  vm
Tinyrb
A tiny subset of Ruby with a Lua'esc VM
Stars: ✭ 452 (+1229.41%)
Mutual labels:  vm
Lc3 Vm
Write your own virtual machine for the LC-3 computer!
Stars: ✭ 631 (+1755.88%)
Mutual labels:  vm
Ebcvm
EFI Byte Code Virtual Machine in userspace
Stars: ✭ 34 (+0%)
Mutual labels:  vm
Enigma
An Erlang VM implementation in Rust
Stars: ✭ 877 (+2479.41%)
Mutual labels:  vm
Radon
A scripting language.
Stars: ✭ 22 (-35.29%)
Mutual labels:  vm

ivm

ivm is a simple vm built for a prototype-based language ink

Prerequisites

cmake >= 2.8
gcc >= 4.8.4 or clang >= 3.0

Build

Build using cmake

cmake -DVERSION=release
make

After Building

run tests or anything you write

make test
build/bin/ink hello.ink

Examples(of ink)

ink is a dynamically-typed language with...

Weird grammar

// js-like prototype mechanism
list.proto.map = fn f:
	[ f(i) for loc i in base ]

// partial applied function
[ 1, 2, 3 ].
	map(1 .+(_)).
	map {
		i -> i * 2
	}.
	map(print)

Natively supported coroutine

loc c = fork fn [ (yield i * 2) for loc i in range(10) ]

while c.alive():
	print(resume c)

All sorts of overloading(which is bad)...

// context overload
loc = loc.clone()

list.proto.reduce = fn f: {
	assert base.size() > 1

	loc init = base[0]
	
	for loc e in base.slice(1):
		init = f(init, e)

	init
}

list.proto.map = fn f: [ f(i) for loc i in base ]

// is capital or non-capital letter
// custom operators
string.proto.+? =
	fn c = base.ord(): c >= "A".ord() && c <= "Z".ord()
string.proto.-? =
	fn c = base.ord(): c >= "a".ord() && c <= "z".ord()

string.proto.~ = fn:
	base.
		chars().
		map(fn c:
				if +? c:
					c.ord() - "A".ord() + "a".ord()
				elif -? c:
					c.ord() - "a".ord() + "A".ord()
				else:
					c.ord()
			).
		map(fn c: c.char()).
		reduce(fn i, a: i + a)

print(~"hELLO, WORLD!")

... And tolerable performance

loc fib = fn n:
	n < 2 ?
		1 : fib(n - 1) + fib(n - 2)

print(fib(30))

more tests and examples can be found in test and test/examples folders

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].