See our motivations and design principles doc.
There are three reasons why we chose Node.js.
We’ve been kicking around doing a golang runtime for a while. It’s a good idea!
Yes, and no. The compiler and language implementation was built and Smyte and battle-tested for a couple of years. There were some changes in order to extract it from the Smyte source code, but in general we are confident on the stability of that piece.
The sqrl-redis-functions package on the other hand was rewritten for this release and has not seen production testing. At Smyte we had separate databases based on RocksDB that powered count()
, countUnique()
and rateLimit()
. The new implementations on top of redis were primarily intended as proof of concept and there is a lot of room for improvement. That said they do work and are a good starting point.
If your project already uses Node.js you can simply require('sqrl')
. You could then use SQRL to decide whether to accept/reject comments, signups, payments or anything you want really.
We have included a micro-service server that you can call out to from any other language, and for asynchronous processing we recommend running SQRL as a event stream consumer.
SQRL was designed and implemented by:
It would not have come together without lots of dogfooding and suggestions from:
We also want to thank Twitter Engineering for helping us get this project released.
Twitter, and before that Smyte (and ~40 of their customers).