All Projects → ELLIOTTCABLE → Pratchett.js

ELLIOTTCABLE / Pratchett.js

Licence: other
A JavaScript interpreter for Paws.

Programming Languages

coffeescript
4710 projects
shell
77523 projects
PEG.js
56 projects
Mustache
554 projects
HTML
75241 projects
javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Pratchett.js

super-workers
🐴 Distribute load on front-end via parallelism
Stars: ✭ 93 (+200%)
Mutual labels:  parallel-computing
ps pytorch
implement distributed machine learning with Pytorch + OpenMPI
Stars: ✭ 47 (+51.61%)
Mutual labels:  parallel-computing
ParallelQSlim
Shape Aware Parallel Mesh Simplification Algorithm
Stars: ✭ 84 (+170.97%)
Mutual labels:  parallel-computing
job stream
An MPI-based C++ or Python library for easy distributed pipeline processing
Stars: ✭ 32 (+3.23%)
Mutual labels:  parallel-computing
pestpp
tools for scalable and non-intrusive parameter estimation, uncertainty analysis and sensitivity analysis
Stars: ✭ 90 (+190.32%)
Mutual labels:  parallel-computing
corebench
corebench - run your benchmarks against high performance computing servers with many CPU cores
Stars: ✭ 29 (-6.45%)
Mutual labels:  parallel-computing
opensbli
A framework for the automated derivation and parallel execution of finite difference solvers on a range of computer architectures.
Stars: ✭ 56 (+80.65%)
Mutual labels:  parallel-computing
Lazy
Light-weight header-only library for parallel function calls and continuations in C++ based on Eric Niebler's talk at CppCon 2019.
Stars: ✭ 93 (+200%)
Mutual labels:  parallel-computing
JUDI.jl
Julia Devito inversion.
Stars: ✭ 71 (+129.03%)
Mutual labels:  parallel-computing
mango
Parallel Hyperparameter Tuning in Python
Stars: ✭ 241 (+677.42%)
Mutual labels:  parallel-computing
vuo
A realtime visual programming language for interactive media.
Stars: ✭ 103 (+232.26%)
Mutual labels:  parallel-computing
QUICK
QUICK: A GPU-enabled ab intio quantum chemistry software package
Stars: ✭ 79 (+154.84%)
Mutual labels:  parallel-computing
hpc
Learning and practice of high performance computing (CUDA, Vulkan, OpenCL, OpenMP, TBB, SSE/AVX, NEON, MPI, coroutines, etc. )
Stars: ✭ 39 (+25.81%)
Mutual labels:  parallel-computing
pyabc
pyABC: distributed, likelihood-free inference
Stars: ✭ 13 (-58.06%)
Mutual labels:  parallel-computing
gardenia
GARDENIA: Graph Analytics Repository for Designing Efficient Next-generation Accelerators
Stars: ✭ 22 (-29.03%)
Mutual labels:  parallel-computing
Foundations of HPC 2021
This repository collects the materials from the course "Foundations of HPC", 2021, at the Data Science and Scientific Computing Department, University of Trieste
Stars: ✭ 22 (-29.03%)
Mutual labels:  parallel-computing
ClimateTools.jl
Climate science package for Julia
Stars: ✭ 108 (+248.39%)
Mutual labels:  parallel-computing
PHCpack
The primary source code repository for PHCpack, a software package to solve polynomial systems with homotopy continuation methods.
Stars: ✭ 50 (+61.29%)
Mutual labels:  parallel-computing
learn-gpgpu
Algorithms implemented in CUDA + resources about GPGPU
Stars: ✭ 37 (+19.35%)
Mutual labels:  parallel-computing
pcluster-manager
Manage AWS ParallelCluster through an easy to use web interface
Stars: ✭ 67 (+116.13%)
Mutual labels:  parallel-computing

Maintenance status: Under rapid development pre-releaseLatest GitHub releaseLatest NPM versionChat: #ELLIOTTCABLE on DiscordFollow my work on Twitter
CI statusCoverage statusDependency status

A major rewrite of this project started in 2014, and never got merged; if you're curious where this project ended up, you should probably go look at the queueless branch. (=


Hello, friend. This is a JavaScript implementation of the Paws machine, intended both to be included into client-side code executed by browsers, and to be embedded into Node.js projects.

“What's a Paws,” you ask? Paws could be seen either as a type of programming language, or as a design for a VM on which languages of that type can be run. Paws is a project sitting somewhere between a pure VM for language development (think: the JVM), and a family of languages (think: the LISPs.)

Paws lends itself well to highly asynchronous programming, meaning it's designed for things involving the network requests (by design, web applications), and other tasks where concurrency is desirable. In addition, things built on top of Paws can distribute themselves across multiple environments and machines (this means your database, and your user's browsers, can all talk amongst one-another.) Finally, Paws is designed from the ground-up to be concurrency-aware, ensuring tasks can parallelize when they won't affect eachother negatively.

“Cool! Can I use it?” Probably not, I'm afraid, although it's adorable that you ask. Unfortunately, this project is basically just a VM, with some excruciatingly-primative primatives with which one can construct abstractions. (Writing code that will run on this machine is approximately analogous to writing raw assembler.) Before this project will be useful to you, somebody'll need to write some abstractions (basically, a language) on top of it!

To boot, the Paws system as a whole is still under heavy design and development; lots of things are still likely to change. Although there's a specification for the current version, lots of relatively fundamental aspects of the machine's semantics are still subject to evolution. In fact, some of the neatest features of the design aren't nailed down into the specification yet (nor are they implemented in this codebase); so anybody trying to write those abstractions for you is probably going to have some of their work invalidated in the future. tl;dr: the Paws design isn't stable, yet!

“Okay, well, I like language design. Can I write stuff on top of this machine?” I'm so glad you asked! You're my favourite kind of person! Assuming you understand the caveat mentioned above (that this project is in flux), you can absolutely start experimenting with abstractions on top of the Paws machine.

If you want to learn more, you should definitely make a Discord account, and join the chatroom where we discuss Paws (as well as entirely-too-much other stuff! Well, mostly dogs, if I'm being honest.) All newcomers are welcome, and contribution is hugely appreciated!

Join #ELLIOTTCABLE on Discord:
https://discord.gg/Mst2T9wnUY

Using

This implementation of a Paws machine can be used in two ways: interactively, at the command-line; or directly, via its embedding API. More information about command-line usage can be acquired by querying the executable at the command-line:

npm install                     # (Must be run before the executable can be used)
./Executables/paws.js --help
./Executables/paws.js interact  # Example, opens an interactive ‘REPL’ to play with

As for embedding the Paws.js API, you'll have to dive into the code and poke around a bit, for the moment. I'm also happy to give you a quick overview, if you join our Discord and ask!

(I swear, API documentation is coming soon! :P )

Contributing

I consistently put a lot of effort into ensuring that this codebase is easy to spelunk. Hell, I reduced myself to using CoffeeScript, to make everything easier to read! (=

Any and all issues / pull-requests are welcome. There's a rather comprehensive test-suite for the reactor itself; it's appreciated if any changes are contributed with passing test-cases, of course.

After git clone'ing the codebase, you should immediately npm run-script hi; this will help you set up your local copy for hacking.

More specific information can be found in the CONTRIBUTING file.


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