ghul.runtime 31.0.3

Prefix Reserved
There is a newer version of this package available.
See the version list below for details.
dotnet add package ghul.runtime --version 31.0.3
                    
NuGet\Install-Package ghul.runtime -Version 31.0.3
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="ghul.runtime" Version="31.0.3" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="ghul.runtime" Version="31.0.3" />
                    
Directory.Packages.props
<PackageReference Include="ghul.runtime" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add ghul.runtime --version 31.0.3
                    
#r "nuget: ghul.runtime, 31.0.3"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package ghul.runtime@31.0.3
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=ghul.runtime&version=31.0.3
                    
Install as a Cake Addin
#tool nuget:?package=ghul.runtime&version=31.0.3
                    
Install as a Cake Tool

ghūl compiler runtime library

CI/CD NuGet version (ghul.runtime) Release Release Date Issues License ghūl

This package provides:

  • internal types required by all ghūl applications
  • support for the ghūl pipe operator and fluent methods on pipes, such as filter, map and reduce
  • slice, which takes part of an array, list or string: xs |> slice(1..4). An array or a list is sliced without copying, so a later change to the source shows through
  • function combinators, in Ghul and so in scope without a use: f >> g composes left to right and f << g right to left, keeping the multi-argument stage's own arity - add >> tag composes a two-argument add with a unary tag and calls it as tagged(4, 5); curry and uncurry reshape a two-argument function in either direction; memoize(f) answers from a cache of the results f has already computed, keyed on the whole argument tuple; and apply(f, x, y) calls a function of any arity with the arguments of the call itself
  • retry(f, attempts) calls f, retrying the whole call up to the given number of times when it throws and throwing the last failure when every attempt does; the wrapped function keeps f's own arity
  • Ghul.Coroutines, cooperative coroutines: asynchronous functions returning COROUTINE[T] or COROUTINE, which one coroutine awaits as it would call a function. pause() gives up the turn, sleep(milliseconds) gives it up until a deadline, run() resumes parked coroutines one at a time, CHANNEL[T] hands values between them, and MUTEX and SEMAPHORE guard what they share. All of it runs on one thread, on a default SCHEDULER unless one is named. A coroutine can also await a task or any other awaitable: run() waits for it and resumes the coroutine on its own thread. Where that thread cannot block, such an await is reported as an error
  • MSBuild targets needed to build ghūl projects

Building a library or an executable

The targets follow the standard OutputType property:

  • Library (the .NET SDK's default when the project does not set one) builds a library. It needs no entry() function.
  • Exe or WinExe builds an executable, which needs an entry() function.

Other values are rejected. To choose directly, regardless of OutputType, set GhulLibrary to true or false.

<PropertyGroup>
  <OutputType>Library</OutputType>
</PropertyGroup>

Repository layout

This repository holds two source trees. ghul-runtime/ is the runtime library itself, built on .NET as the ghul.runtime package by ghul-runtime.ghulproj. ghul-core/ is the source core library, which supplies on the wasm and llvm targets the types .NET supplies on the other; it is not compiled on .NET, and was brought here from ghul-core, which this repository supersedes. Each tree carries its own ghul-project.json, so a ghul-cli project can depend on either by path.

The WebAssembly target

Under --target wasm the runtime is compiled from source together with ghul-core: both trees' src/**/*.ghul are compiled whole. A file whose declarations belong to one target only carries @@IF.dotnet() or @@IF.source_core() on its first line — the former compiles only into the .NET assembly, the latter only on a target whose core library is compiled from source, WebAssembly and LLVM. Within a file compiled everywhere, @IF.dotnet() and @IF.source_core() mark the individual declarations that belong to one target only. ghul-runtime/src's files that declare types ghul-core also declares carry the file-level form. What is not yet available on the wasm target is tracked on ghul-lang/ghul#3319.

wasm-tests/ holds programs that build for the wasm target from this checkout's sources and run under Node, each a ghul-cli project whose run.expected is what the same program prints on .NET. Run them with dotnet ghul-test wasm-tests, and the ones that also build as native executables with dotnet ghul-test --config llvm wasm-tests. A test's manifest lists the targets it passes on; the gaps that keep the rest off llvm are tracked on ghul-lang/ghul#3460.

native-aot-tests/ renders values with $ under the JIT and published with Native AOT, where rendering cannot rely on reflection, and checks that both print its run.expected. See its README for how to run it.

Issues

View open issues or raise a new one.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net10.0

    • No dependencies.

NuGet packages (5)

Showing the top 5 NuGet packages that depend on ghul.runtime:

Package Downloads
ghul.analysis.protocol

client library for the ghūl compiler's analysis-mode JSON protocol

ghul.raster

Drawing into a PNG from ghūl: antialiased strokes and circles, an affine view, axes, colour maps and stroke-font text, in managed code with no native dependency

ghul.repl

The session behind a ghūl read-eval-print loop: the accepted cells, the import prelude each new submission needs, and what a compiled cell exports. Compiles nothing and runs nothing itself, so a terminal, a browser page or a notebook kernel can host it.

ghul.repl.host

Hosts a ghūl REPL session on this machine: compiles each cell with an installed ghul.compiler, kept running as a compile server with a fallback to starting it per cell, loads the result into a load context of the session's own, and runs it.

ghul.project

Reads and checks a ghūl project manifest: the ghul-project.json that says what a project is called, where its sources are and what it depends on.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
31.1.0 0 10/25/2026
31.0.5 8 10/25/2026
31.0.4 38 10/25/2026
31.0.3 83 10/25/2026
31.0.2 45 10/25/2026
31.0.1 35 10/25/2026
31.0.0 113 10/24/2026
30.0.0 51 10/24/2026
29.4.0 54 10/24/2026
29.3.1 53 10/23/2026
29.3.0 256 10/23/2026
29.2.1 227 10/21/2026
29.2.0 767 10/20/2026
29.1.2 51 10/20/2026
29.1.1 458 10/19/2026
29.1.0 806 10/18/2026
29.0.0 88 10/18/2026
28.0.0 433 10/18/2026
27.7.0 85 10/18/2026
27.6.1 83 10/18/2026
Loading failed