Skip to content
Tinspin edited this page Aug 3, 2021 · 57 revisions

THE µSOA PLATFORM

Rupy is Reactive.

Rupy is Atomic Parallel.

"I still fervently believe that the only way to make software
secure, reliable, and fast is to make it small. Fight Features." - Andrew S. Tanenbaum

"Rupy's so focused it's an example in design." - polotics on HN

Why Rupy is using Java:

"While I'm on the topic of concurrency I should mention my far too brief chat with Doug Lea. He commented that multi-threaded Java these days far outperforms C, due to the memory management and a garbage collector. If I recall correctly he said "only 12 times faster than C means you haven't started optimizing"." - Martin Fowler https://martinfowler.com/bliki/OOPSLA2005.html

"Many lock-free structures offer atomic-free read paths, notably concurrent containers in garbage collected languages, such as ConcurrentHashMap in Java. Languages without garbage collection have fewer straightforward options, mostly because safe memory reclamation is a hard problem..." - Travis Downs https://travisdowns.github.io/blog/2020/07/06/concurrency-costs.html

"Inspired by the apparent success of Java's new memory model, many of the same people set out to define a similar memory model for C++, eventually adopted in C++11." - https://research.swtch.com/plmm

The latest build can be found here: rupy.zip (For Chrome; right-click select "Save link as..." and press the up arrow in the bottom left and select "Keep", you can fix this permanently by going to chrome://flags and disabling #treat-unsafe-downloads-as-active-content. For any Chrome devs. reading; .zip does not execute), latest javadoc here: doc.

NEW - Async FUSE and ROOT cloud database.
NEW - Version 1.1 with real-time cometstream1.
NEW - Perfect2 for distributed raspberry pi 2 cluster.
NEW - Try our PaaS3 solution: host.rupy.se, now with tutorial.

Weighing 166KB, rupy is probably the smallest, fastest and most
energy efficient HTTP application server in the world. It also
contains a distributed async. HTTP/JSON file database.

With rupy you get a similar simplicity to interpreted development
(like php, ruby or node) but with high performance and seamless
complete product hot-deployment across a cluster!

This enables you to work against many remote servers with external
integrations and other team members at zero turnaround and
downtime!

rupy is inherently non-blocking asynchronous, which makes it the
ideal candidate for high concurrency real-time applications pushing
dynamic data.

Tested with siege, rupy performs ~1.000 messages per second
on a raspberry pi 1 (try the competition for that). If you want a real-
world example of rupy in action head over to Meadow; a simple
MMO.

Features Status Codes Headers
Non-Blocking IO 200 OK X-Forwarded-For
Asynchronous Push 206 Partial Content Content-Range
Chunked Transfer 302 Found Set-Cookie
Session Timeout 304 Not Modified Cookie
True4 Hot-Deploy 400 Bad Request
Filter Chain 404 Not Found
500 Internal Server Error
505 Not Supported

1 Not as overengineered as websockets.
2 It only consumes ~15µJ per request, but the biggest gain
is that idle power is around 1W (which is equivalent to other
processors sleep) and since web servers are mostly underutilized
this is where you save the majority of energy.
3 Our cluster is made up of raspberry pi's. We enable cluster hot
deployment and low latency multicast messaging between local
applications in the cluster.
4 With rupy you can deploy a completely new release without the
users being logged out. This is very convenient during development
too.

Clone this wiki locally