Skip to content

brainrake/idris-libuv-example

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Example code for hooking up a libuv event loop based asynchronous runtime with the Idris dependently typed programming language's C backend.

> # set up build environment and start a shell in it
> nix-shell

$ # build the project
$ sh build.sh

$ # run it
$ out/example1

The goal is to provide a simple nodejs-like API for asynchronous programming, while reaping all the benefits of a dependently typed language and compiling to native code.

Since it can be cumbersome to install Haskell and its tools, Idris, and C depenencies, not to mention they can conflict with other installed versions, in your system, we use a nix development environment to set up an immutable, reproducible, isolated environment for the project. All that is required is a few lines in default.nix.

You can see the how the build process works in build.sh

In order to avoid setting up two Idris VMs, the main() function is in C. It sets up a libuv event loop and an Idris VM, and then calls idris_main.

About

code example for using Idris with a libuv-based async C runtime

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published