aboutsummaryrefslogtreecommitdiff
path: root/README.md
blob: 95e3e8d2ba36d21e54a1d45c0ad28799dcf49cde (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# Jurl
Janet Curl (secretly Jean Curl)

A libcurl easy API wrapper for Janet.
It's divided into two components: `jurl-native`, which holds the low level C interfacing, and the high level `jurl` janet wrapper.

`jurl-native` is relatively feature-complete and is now mostly in maintenance mode.
Potential improvements are:
* gate additional features behind version checks
* implement the (very) few curl_easy things still left out (mostly things that I can't think of a sane way to represent)

`jurl` is under active construction.

## Jurl
A higher level API that's currently in construction.

## Jurl-Native
`jurl-native` attempts to implement as much of libcurl's easy API in as direct a manner as possible.

In cases of bitmaps and enums (including magic numbers), they are translated as directly as possible from their C forms into keywords.
For example, `CURLOPT_TCP_FASTOPEN` becomes `:tcp-fastopen`.

Enums (and bitmap members) are translated using a prefix notation.
For example, `CURLPROXY_HTTP` becomes `:proxy/http`.

Bitmaps are translates back and forth using indexables (arrays and tuples).
For example, `CURLAUTH_BASIC | CURLAUTH_DIGEST` becomes `[:auth/basic :auth/digest]`.