# Ouroboros

Perl XS macros re-exported as C functions.

[![Build status: Windows](https://ci.appveyor.com/api/projects/status/tmmk51e2h25qsd99/branch/master?svg=true)](https://ci.appveyor.com/project/vickenty/ouroboros/branch/master)
[![Build Status: Linux](https://travis-ci.org/vickenty/ouroboros.svg?branch=master)](https://travis-ci.org/vickenty/ouroboros)

## Why

* Write Perl extensions in any language that can produce and link shared
libraries.

* Generate native Perl subs at run-time using a just-in-time compiler.

## Contents

* `libouroboros.c`
* `libouroboros.h` - a library of wrappers around various XS macros.

* `Ouroboros` - Perl package that exports pointers to libouroboros
  functions as well as many necessary constants needed to call them
  correctly (like values of `svtype` enumeration and flags).

* `Ouroboros::Spec` - run-time information about Ouroboros API.

* `Ouroboros::Library` - provides paths to C source of the wrapper library,
  which is bundled with the installation.

* `libouroboros.txt` - main source file for the entire thing, lists
  all supported functions, their signatures, and constants.

## Requirements

Perl 5.18.0 or later.

A working C compiler.

## Building

    perl Makefile.PL
    make
    make install