Extremely fast online playground for every programming language.
Go to file
Radon Rosborough 5882471288 WIP: sql-language-server 2021-01-18 09:31:12 -08:00
.circleci New solution that works on the free tier 2021-01-14 21:56:22 -08:00
backend Install distutils for Hy, fix 'set -e' usage 2021-01-17 21:09:35 -08:00
bin Fix $PATH explicitly in Docker shims 2020-12-30 15:05:56 -08:00
docker s/pstree/psmisc/ 2021-01-17 14:00:47 -08:00
frontend All tests are passing for Python 2020-12-27 13:12:29 -08:00
langs WIP: sql-language-server 2021-01-18 09:31:12 -08:00
packer Use hostnamectl 2021-01-01 12:19:11 -08:00
shared WIP: sql-language-server 2021-01-18 09:31:12 -08:00
system Successfully run webserver from Docker image 2020-12-25 19:34:15 -08:00
tf Set up initial CI configuration 2020-12-26 19:49:01 -08:00
tools Fix bug in plan-publish.js 2021-01-17 21:39:18 -08:00
.dockerignore Fixups for Packer AMI build 2020-12-25 21:28:08 -08:00
.gitignore Fixups for Packer AMI build 2020-12-25 21:28:08 -08:00
LICENSE.md Re-add license 2021-01-13 21:13:43 -08:00
Makefile Actually pass environment variables to shells 2021-01-17 13:37:49 -08:00
README.md Update README 2021-01-13 21:13:18 -08:00
package.json First attempt at Dockerfile hashing 2020-12-31 07:15:29 -08:00
webpack.config.cjs I hate writing Webpack configs. I hate it so much. 2020-12-27 12:42:06 -08:00
yarn.lock First attempt at Dockerfile hashing 2020-12-31 07:15:29 -08:00

README.md

Riju

Riju is a very fast online playground for every programming language. In less than a second, you can start playing with a Python interpreter or compiling INTERCAL code.

Check out the live application!

You should not write any sensitive code on Riju, as NO GUARANTEES are made about the security or privacy of your data. (No warranty etc etc.)

This project is a work in progress, and I don't intend on thoroughly documenting it until it has reached feature-completeness.

Criteria for language inclusion

I aspire for Riju to support more languages than any reasonable person could conceivably think is reasonable. That said, there are some requirements:

  • Language must have a clear notion of execution. This is because a core part of Riju is the ability to execute code. Languages like YAML, SCSS, and Markdown are fine because they have a canonical transformation (into JSON, CSS, and HTML respectively) that can be performed on execution. However, languages like JSON, CSS, and HTML are not acceptable, because there's nothing reasonable to do when they are run.
  • Language must not require input or configuration. This is because, in order to avoid bloating the interface, Riju provides a way to supply code but not any other data. Of course, it's possible to supply input interactively, so reading stdin is allowed, but if a language can only reasonably be programmed with additional input, it's not a candidate for inclusion. Thus, many templating languages are excluded, since they don't do anything unless you are substituting a value. However, some languages such as Pug are allowed, because they implement a significant syntax transformation outside of template substitution. Also, languages like Sed and Awk are allowed, because it's straightforward to test code written in them even without a pre-prepared input file.
  • Language must not require a graphical environment. This is because we use a pty to run code, and there is no X forwarding. As such, we can't use languages like Scratch, Alice, and Linotte.
  • Language must be available for free under a permissive license. This is because we must download and install all languages noninteractively in the Docker image build, so anything that requires license registration is unlikely to work (or be legal). We can't use Mathematica or MATLAB, for example, but we can use Mathics and Octave, which provide compatible open-source implementations of the underlying languages.
  • Language must be runnable under Docker on Linux. This is because that's the execution environment we have access to. AppleScript is out because it only runs on macOS, and Docker is out because it can't be run inside Docker (without the --privileged flag, which has unacceptable security drawbacks; see #29). Note, however, that many Windows-based languages can be used successfully via Mono or Wine, such as Cmd, C#, and Visual Basic.

Here are some explicit non-requirements:

  • Language must be well-known. Nope, I'll be happy to add your pet project; after all, Kalyn and Ink are already supported.
  • Language must be useful. I would have no objection to adding everything on the esolangs wiki, if there are interpreters/compilers available.
  • Language must be easy to install and run. Well, it would be nice, but I've seen some s*** when adding languages to Riju so it will take a lot to surprise me at this point.

If you'd like to request a new language, head to the language support meta-issue and add a comment. Of course, if you actually want it to be added anytime soon, you should submit a pull request :)

Project setup

I have recently completely rearchitected the build system of Riju. I will update the documentation on development workflow here as soon as CI is passing once more.