-
WorkOS
The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.
-
Nim
Nim is a statically typed compiled systems programming language. It combines successful concepts from mature languages like Python, Ada and Modula. Its design focuses on efficiency, expressiveness, and elegance (in that order of priority).
It is certainly possible to adjust the Nim's C backend to output C files that can be combined into a single one and compiled, but this requires certain effort. So I didn't go this route and started searching for a program that can amalgamate separate C files by itself, and found one - C Intermediate Language.
# Install OCaml on Arch $ sudo pacman -Sy ocaml # Clone the repo $ git clone https://github.com/goblint/cil && cd cil # Create a local opam environment ("switch"). This will take a while $ opam switch create . # Add local opam environment to the current shell # This command is specific to the fish shell. For others, you might need to modify it $ eval (opam env) # Configure the compilation, the prefix is the _opam directory # in CWD (because we use `opam switch`) # For POSIX-shells replace () with `` $ ./configure --prefix=(opam config var prefix) # Build CIL $ make # This make install fails for me, but it's needed for commands below $ make install # To fix the error in the previous step we need to remove the logwrites dir $ rm -r _opam/lib/goblint-cli/logwrites/ # Finally install it into currentdir/_opam/bin/ $ make install # Add it to our PATH (your directory will of course be different) $ set PATH /home/dian/Stuff/cil/_opam/bin $PATH
Now we're almost ready to use it for Nim programs! There's one thing left - we need to patch nimbase.h (it's a file that provides some generic defines for different compilers on different platforms). You can usually find nimbase.h in your_nim_dist/lib/nimbase.h.