ghul.runtime
31.0.2
Prefix Reserved
See the version list below for details.
dotnet add package ghul.runtime --version 31.0.2
NuGet\Install-Package ghul.runtime -Version 31.0.2
<PackageReference Include="ghul.runtime" Version="31.0.2" />
<PackageVersion Include="ghul.runtime" Version="31.0.2" />
<PackageReference Include="ghul.runtime" />
paket add ghul.runtime --version 31.0.2
#r "nuget: ghul.runtime, 31.0.2"
#:package ghul.runtime@31.0.2
#addin nuget:?package=ghul.runtime&version=31.0.2
#tool nuget:?package=ghul.runtime&version=31.0.2
ghūl compiler runtime library
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,mapandreduce 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
Ghuland so in scope without ause:f >> gcomposes left to right andf << gright to left, keeping the multi-argument stage's own arity -add >> tagcomposes a two-argumentaddwith a unarytagand calls it astagged(4, 5);curryanduncurryreshape a two-argument function in either direction;memoize(f)answers from a cache of the resultsfhas already computed, keyed on the whole argument tuple; andapply(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 arityGhul.Coroutines, cooperative coroutines: asynchronous functions returningCOROUTINE[T]orCOROUTINE, 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, andMUTEXandSEMAPHOREguard what they share. All of it runs on one thread, on a defaultSCHEDULERunless 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 noentry()function.ExeorWinExebuilds an executable, which needs anentry()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
| Product | Versions 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. |
-
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 |