_____ _ ___ ____ __
/ ____| (_) | \ \ / / \/ |
| (___ __ _ _ _ _ __| |\ \ / /| \ / |
\___ \ / _` | | | | |/ _` | \ \/ / | |\/| |
____) | (_| | |_| | | (_| | \ / | | | |
|_____/ \__, |\__,_|_|\__,_| \/ |_| |_|
| |
|_|
SquidVM is a Stack-based VM made from the ground up using Rust for its implementation.
The VM will contain a programming language with the name Squid and a simpler scripting language called Squipt. Both will be made for working together and also both will be statically and strongly typed.
The main difference between them is that int, unsigned int, float, [...] will be replaced with number, unsafe blocks will not be supported and some other changes made for simplicity in Squipt.
I'm also thinking of implementing a dynamically typed language.
That one will also be made for working together with the other two natively.
Download the installation script for:
After that, you will need to make the script executable:
foo@bar:~$ chmod +x ./install-svdk.sh
Then run the setup:
foo@bar:~$ sudo ./install-svdk.sh
I would rather recommend compiling from source and installing to a desired folder.
todo!();
todo!();
If you are trying to run your compiled SquidVM bytecode:
# Try this command to learn a bit
foo@bar:~$ squidvm --help
# If you are a VM developer or trying to debug
# Try this instead:
foo@bar:~$ svdk --help
- Access documentation here to get more info about the VM's internal function.
It's the binary file that contains the instructions and data the VM will use to run your program!
Want to know more about the instruction set, working stack, return stack, function cache, heap regions, the global repository and more? Access the documentation here.
I'll probably make a simple wiki for that in some time! Just wait for it.
As of SquidVM 0.6.0-alpha:
The command requires tags now!
# For binary files
foo@bar:~$ squid-vm -b testbinary
# For SARs
foo@bar:~$ squid-vm -s sarfile
Both don't need the extension to be typed.
Versions 0.9.0-alpha and older use .sqdbin
instead of .sqd
.
The change was made for simplification.
# Run like this
foo@bar:~$ ./squid-vm(.exe) testbinary.sqdbin
# Older versions use the `.sqdbin` extension
Here ya go!
Hope it helps. : )
SARs, or Squid ARchives, are files that group binaries into a single archive containing types, metadata, and native libraries.
They are designed so that instead of sharing numerous bytecode files, each with different metadata, you can share a single file containing all the bytecode.
For now, it's just a plan, but if all goes well, it will have support for all that and more in the future.
IT'S NOT IMPLEMENTED YET!
The above warning will be removed when SARs are made available!
# For debugging
foo@bar:~$ squidvm spark --debug -b ./binary # or -s ./sar
# For benchmarking
foo@bar:~$ squidvm spark --bench -b ./binary # or -s ./sar
# For profiling
foo@bar:~$ squidvm spark --profile -b ./binary # or -s ./sar
IT'S NOT IMPLEMENTED YET!
The above warning will be removed when Spark is ready!
todo!();