All Projects → vein-lang → vein

vein-lang / vein

Licence: MIT license
🔮⚡️Vein is an open source high-level strictly-typed programming language with a standalone OS, arm and quantum computing support.

Programming Languages

C#
18002 projects
ANTLR
299 projects
shell
77523 projects

Projects that are alternatives of or similar to vein

Openj9
Eclipse OpenJ9: A Java Virtual Machine for OpenJDK that's optimized for small footprint, fast start-up, and high throughput. Builds on Eclipse OMR (https://github.com/eclipse/omr) and combines with the Extensions for OpenJDK for OpenJ9 repo.
Stars: ✭ 2,802 (+8938.71%)
Mutual labels:  interpreter, virtual-machine, jit
RSqueak
A Squeak/Smalltalk VM written in RPython.
Stars: ✭ 78 (+151.61%)
Mutual labels:  interpreter, virtual-machine, jit
openj9
Eclipse OpenJ9: A Java Virtual Machine for OpenJDK that's optimized for small footprint, fast start-up, and high throughput. Builds on Eclipse OMR (https://github.com/eclipse/omr) and combines with the Extensions for OpenJDK for OpenJ9 repo.
Stars: ✭ 2,973 (+9490.32%)
Mutual labels:  interpreter, virtual-machine, jit
kcs
Scripting in C with JIT(x64)/VM.
Stars: ✭ 25 (-19.35%)
Mutual labels:  virtual-machine, jit
Freeze-OS
An Operating System that runs on top of an interpreter.
Stars: ✭ 24 (-22.58%)
Mutual labels:  interpreter, virtual-machine
ciao
Ciao is a modern Prolog implementation that builds up from a logic-based simple kernel designed to be portable, extensible, and modular.
Stars: ✭ 190 (+512.9%)
Mutual labels:  interpreter, virtual-machine
Tagha
Minimal, low-level, fast, and self-contained register-based bytecode virtual machine/runtime environment.
Stars: ✭ 101 (+225.81%)
Mutual labels:  interpreter, virtual-machine
lunatic
lunatic: a toy lua interpreter
Stars: ✭ 16 (-48.39%)
Mutual labels:  interpreter, virtual-machine
embed
An embeddable, tiny Forth interpreter with metacompiler.
Stars: ✭ 80 (+158.06%)
Mutual labels:  interpreter, virtual-machine
thislang
A subset of javascript implemented in that subset of javascript. Yes, it can run itself.
Stars: ✭ 31 (+0%)
Mutual labels:  interpreter, virtual-machine
clover2
Clover2 can be used as shell. The completion is powerfull like IDE. Also clover2 is a Ruby-like compiler language with static type like Java. This is high performnace. Please see the wiki for details
Stars: ✭ 100 (+222.58%)
Mutual labels:  interpreter, virtual-machine
ol
Otus Lisp (Ol in short) is a purely* functional dialect of Lisp.
Stars: ✭ 157 (+406.45%)
Mutual labels:  interpreter, virtual-machine
libjit
Unofficial libjit mirror.
Stars: ✭ 46 (+48.39%)
Mutual labels:  virtual-machine, jit
avaloni
Interpreter of the Avalon programming language.
Stars: ✭ 14 (-54.84%)
Mutual labels:  interpreter, quantum-computing
Laythe
A gradually typed language originally based on the crafting interpreters series
Stars: ✭ 58 (+87.1%)
Mutual labels:  interpreter, virtual-machine
wizard-engine
Research WebAssembly Engine
Stars: ✭ 164 (+429.03%)
Mutual labels:  interpreter, virtual-machine
Animach
Scheme语言实现和运行时环境 / A Scheme runtime & implementation
Stars: ✭ 45 (+45.16%)
Mutual labels:  interpreter, virtual-machine
LLVM-JVM
[W.I.P] A Just-In-Time Java Virtual Machine written in Haskell
Stars: ✭ 22 (-29.03%)
Mutual labels:  interpreter, virtual-machine
lc
JIT compiler for Scheme targeting x86-64 platforms
Stars: ✭ 24 (-22.58%)
Mutual labels:  jit, research-project
minima
A fast, byte-code interpreted language
Stars: ✭ 43 (+38.71%)
Mutual labels:  interpreter, virtual-machine


Vein is an open source high-level strictly-typed programming language with a standalone OS, arm and quantum computing support.


OS Support

OS Version Architectures
Windows 10 1607+ x64, ARM64
OSX 10.14+ x64
Linux x64, ARM64

Compiling from source

Building on Windows

For building, you need the following tools:

  • dotnet 6.0
  • Win10 SDK
  • vsbuild-tools-2019 with MSVC 2019, MSVC142 for ARM64

Checkout mana sources

git clone https://github.com/vein-lang/vein.git --recurse-submodules
cd ./vein-lang
git fetch --prune --unshallow --tags

dotnet restore

Compile IshtarVM

Go to ishtar folder

cd ./runtime/ishtar.vm

Compile for Windows 10 x64

dotnet publish -r win10-x64 -c Release

Compile for Windows 10 ARM64

dotnet publish -r win-arm64 -c Release

Copy output files

mkdir output
cp -R ./runtime/ishtar.vm/bin/net6.0/win10-x64/native/ ./output

The output folder should contain:

  • ishtar.exe - main ishtar file
  • ishtar.exp - export metadata for main module
  • ishtar.lib - dynamic library for main module
  • ishtar.pdb - debug symbols

Compile veinc

Go to vein compiler folder

cd .\compiler

Compile

dotnet publish -r win-x64 -c Release

Copy the output files

mkdir output
cp -R ./bin/Release/net6.0/win-x64/publish ./output

The output folder should contain:

  • veinc.exe - main executable compiler file

Building on Linux (on ubuntu)

For building, you need the following tools:

  • dotnet 6.0
  • clang
  • zlib1g-dev
  • libkrb5-dev
  • libssl-dev

and additional for arm64 (or maybe using prebuiled docker image)

  • clang-9
  • binutils-arm-linux-gnueabi
  • binutils-aarch64-linux-gnu
  • crossbuild-essential-arm64
  • gcc-multilib
  • qemu
  • qemu-user-static
  • binfmt-support
  • debootstrap

Checkout mana sources

git clone https://github.com/vein-lang/vein.git --recurse-submodules
cd ./vein-lang
git fetch --prune --unshallow --tags

dotnet restore

Compile IshtarVM

Go to ishtar folder

cd ./runtime/ishtar.vm
Compile for Linux x64
dotnet publish -r linux-x64 -c Release

Compile for Linux ARM64

cd ./cross
sudo ./build-rootfs.sh arm64
cd ..
cd ./runtime/ishtar.vm
dotnet publish -r linux-arm64 -c Release -p:CppCompilerAndLinker=clang-9 -p:SysRoot=/home/.tools/rootfs/arm64

Copy output files

mkdir output
cp -R ./runtime/ishtar.vm/bin/Release/net6.0/linux-x64/native ./output

Compile veinc

Go to vein compiler folder

cd ./compiler

Compile

dotnet publish -r linux-x64 -c Release

Copy output files

mkdir output
cp -R ./bin/Release/net6.0/linux-x64/publish ./output

The output folder should contain:

  • veinc - main executable compiler file

Contributing

We welcome everyone to contribute to vein language. To do so, you need to know a couple of things about the folder structure::

/runtime: folder contains all backend vm\generator for vein
  /common: shared code
  /ishtar.base: base abstraction for generator\vm
  /ishtar.generator: logic of IL generator for IshtarVM
  /ishtar.vm: implementation of ishtar vm in C#
/compiler: folder contains source for vein compiler
/lib: folder with common libraries
  /ast: mana AST library, for parsing
  /projectsystem: project system models, for compiler
/lsp: language server for vein lang
/samples: Wow! its samples!
/test: folder with various tests

You can run all tests from the root directory with dotnet test.

To recompile the vm and the compiler: dotnet build.

To recompile the standard library: veinc ./vein.std/corlib.vproj.

After your changes are done, please remember to run dotnet format to guarantee all files are properly formatted and then run the full suite with dotnet test.

Q\A

Q:
  Why it based on C#?
A:
  Initially, i started developing a virtual machine in C++,
  but there were a lot of difficulties with basic things (such as collections, text formatting, etc.)
  And at some point i saw that microsoft began to develop a fully AOT compiler for dotnet.
  That means we could write in pure C# without using runtime and std, 
  which allows everyone to write such hard things like an OS!
  So I decided - that's it! I'm Definitely writing a virtual machine in C#!

  So, now I'm developing using the C# runtime and the std, but 
  in version 2.0 I'm planning to completely move away from runtime dependencies.

Q:
  This language really support quantum computing?
A:
  Not now, but in future I'm planning to add support for Microsoft Quantum Simulator, 
  next - support for Azure Qunatum or IBM quantum cloud.
  And after the release of stationary quantum extension card (like PCEx128 😃), 
  I'll add support for them too.

Special Thanks

License

Vein Lang is primarily distributed under the terms of both the MIT license and the Apache License (Version 2.0), with portions covered by various BSD-like licenses.

Check LICENSE files for more information.

Support

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].