Skip to main content

LogoVM

LogoVM is an abstract stack machine, loosely inspired by JavaVM, designed to provide a simple runtime environment to teach the design and implementation of compilers.

The initial design of the LogoVM, and where its name came from, was to aid in the implementation of a Logo compiler, during a one semester undergraduate course, so it provides some higher level functions for drawing lines, or controlling a drawing cursor.

To achieve the original goal, all computation is done using a stack, using a small set of low-level instructions. There is also a "high level" heap memory, where data is stored as full objects, and not bytes, meaning that if a huge string is on the first heap slot, the second heap slot may hold and integer, and the third heap slot may have a float value. A runtime environment that allows easy implementation of turtle graphics is also provided.

A specification of the LogoVM can be found on docs/specs.md.

Usage

To run a program simply call logovm <program>.

Check logovm -h for available options.

Installation

You may install the logovm package through pip:

pip install logovm

Some extra options are available:

  • graphic: add support for graphic output (using pillow)
  • test: add dependencies for running automated tests
  • lint: add dependencies to ensure minimum code quality
  • dev: an alias that include lint and test

For example, when implementing a feature for LogoVM, you would use:

(virt_env) [repo/logovm] $ pip -e install .[dev]

It is strongly suggested that you use a Python virtual environment.

Metadata

Release files for logovm 0.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for logovm 0.2.1
File Interpreter ABI Platform Actions
logovm-0.2.1-py3-none-any.whl Python 3 none any Details for logovm-0.2.1-py3-none-any.whl

Release files / logovm-0.2.1-py3-none-any.whl

Download URL logovm-0.2.1-py3-none-any.whl
Size 41.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
27a8e9d194fd362a2a7ced34be78b459ed68504ad5df054b62f728d9e5606101
BLAKE2b-256 checksum
How to use checksums
bfd5222dcbbb16641dbf4cbb60dc64f32afb9386a90b29661508441d3917ea11
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.12.2

Security for logovm 0.2.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.2.1 This release

1 release file No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page