Skip to content

Latest commit

 

History

History

lick

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
description Guide to Lick, Arvo's IPC vane.
layout
title description tableOfContents outline pagination
visible
true
visible
visible
true
visible
true
visible
true

Lick

Urbit's inter-process communication (IPC) module.

Lick manages IPC ports, and the communication between Urbit applications and POSIX applications via these ports. Other Arvo modules and applications ask Lick to open an IPC port, notify it when something is connected or disconnected, and transfer data between itself and the Unix application.

The IPC ports Lick creates are Unix domain sockets (AF_UNIX address family) of the SOCK_STREAM type.

The format of the full message with header and data sent to and from the socket is as follows:

1 byte 4 bytes n bytes
version jam size in bytes jamfile

The version is currently 0.

The +jamfile contains a pair of $mark and $noun. The process on the host OS must therefore strip the first 5 bytes, +cue the jamfile, check the mark, and (most likely) convert the noun into a native data structure.

Here are some libraries that can cue/jam:

Lick has no novel data types in its API apart from $name, which is just a path representing the name of a socket.