| English | 中文 |
Who is the Woma programming language for?
First and foremost it is for people wanting to write CPython extensions fast, like really fast. Traditionally these are written in C. Woma has the advantage of being shorthand for well constrained and type-checked Python Extensions. The specifics of the Woma Programming Language are being standardized as a series of WEEPs (Woma Extension and Evaluation Proposals).
Why use the name Aspidites? What's a Woma?
There is also a genus of Python called Aspidites, latin for shield-bearer, that is this project's namesake. They are endemic to mainland Australia and are also known as the Woma Python.
How do I get Aspidites?
How do I actually learn the Woma Programming Language?
$ pip install Aspidites
$ docker pull ghcr.io/rjdbcm/aspidites:latest
$ gh repo clone rjdbcm/Aspidites
Pretty straightforward just use:
$ aspidites -h
Or with docker:
$ docker run -v $PWD:/workdir rjdbcm/aspidites:latest -h
(Greeter(name -> str)) procedure
<*>print('Greetings,', name)
`Scala-style anonymous functions`
scala = (_ * 2)
val = scala(_ + _)
val(2, 3)
>>> 10
Wheelie the Woma™ and Woma Programming Language™ are unregistered trademarks of Ross J. Duff. The logos are copyright © Ross J. Duff but may be transferred to an appropriate trust at a later date. This is to prevent confusing/malicious use.
If you'd like to help with the Aspidites project as a developer check out the Issues page or fork and make a pull request. Now, for early woma adopters that do not wish to write any Python, reporting issues is always appreciated. If you'd like to help out financially, Aspidites' maintainer accepts donations.
Aspidites has just 3 core dependencies, two required and one optional, one all licensed under a compatible OSI approved license. In general, dependencies are vendored unless they are commonly-used libraries.
Required:
Optional:
In addition to the core dependencies are the 4 optional dependencies, all licensed under a compatible OSI approved license, needed to run the canned test-suite.
The following 3rd-party software packages may be distributed with Aspidites:
Pattern Matching for Python 3.7+ in a simple, yet powerful, extensible manner.
PyContracts is a Python package that allows to declare constraints on function parameters and return values. Contracts can be specified using Python3 annotations, or inside a docstring. PyContracts supports a basic type system, variables binding, arithmetic constraints, and has several specialized contracts and an extension API.
Functional programming in Python: implementation of missing features to enjoy FP
Python library for creating PEG parsers.
Persistent/Immutable/Functional data structures for Python.
Semantic version comparison for Python (see http://semver.org/)
A restricted execution environment for Python to run untrusted code.