On this page:
Xiden:   A Guide for Functional Dependency Management in Racket

Xiden: A Guide for Functional Dependency Management in Racket

Sage L. Gerard <sage at sagegerard dot com>

This is a guide for Xiden, a functional dependency manager for Racket.

Xiden safely and deterministically reproduces your project’s dependencies without any side-effect on the running Racket installation. This makes it a powerful and versatile way to share work and continuously integrate code.

To track Xiden’s progress, see Project Information.

If you need the reference material, see Xiden: API Reference.

    1 Introduction

      1.1 Why use Xiden when raco pkg exists?

      1.2 Why use Xiden when Guix/Nix exists?

    2 Setup

      2.1 Required Programs

      2.2 Install from Racket’s Default Package Catalog

      2.3 Install from Source

        2.3.1 Step 1: Get the Code

 Method: Use Git

 Method: Download Archive

        2.3.2 Step 2: Build The Project

    3 Defining Packages

      3.1 Create a New Definition File

      3.2 The Usual Stuff

      3.3 Declare the Version

        3.3.1 Editions

        3.3.2 Revisions

 Revision Numbers

 Revision Names

        3.3.3 Optional Reading: What About Semantic Versioning?

      3.4 Declare Supported Racket Versions

      3.5 Declare Supported Operating Systems

      3.6 Package Inputs

        3.6.1 Everything is an Input

        3.6.2 Integrity Information

 Creating an Integrity Expression

        3.6.3 Authenticating Inputs

        3.6.4 Abstract and Concrete Package Inputs

      3.7 Package Outputs

        3.7.1 Monadic Types

        3.7.2 Adding a Second Output

        3.7.3 Outputs Can Create Duplicate Data

      3.8 User-defined Metadata

      3.9 The Finished Definition

    4 Workspaces

    5 Configuration

      5.1 Runtime Configuration File

      5.2 Why Allow Verbose Commands?

      5.3 Setting the Workspace

      5.4 Trusting Public Keys and Executables

    6 Command Line Interface

      6.1 Running Our First Transaction

      6.2 What’s with the Link?

        6.2.1 Tweaking Transaction Flags

        6.2.2 Installing Multiple Packages

        6.2.3 Creating Arbitrary Links

        6.2.4 Generating Input Expressions

      6.3 Printing Reports

        6.3.1 View Path to Workspace

        6.3.2 View Installed Outputs

        6.3.3 View Issued Links

        6.3.4 View Runtime Configuration

      6.4 Overriding Inputs

      6.5 Collecting Garbage

    7 Package Queries

      7.1 Simple Queries

      7.2 Specifying an Edition

      7.3 Specifying Accepted Revisions

      7.4 Marking Inclusive and Exclusive Endpoints

      7.5 Omitting Information

    8 Security

    9 Project Information

      9.1 Contributing

        9.1.1 A Note For Programmers

        9.1.2 High-value Contributions