Subsystems

Project Contexts

Context

At the root of the object graph in Foundry is the FoundryContext. Generally, it represents a single project on the users system. However, to allow for project-less use-cases a “shared” context may be created.

See foundry_context_new() to create a new context for a specific project. See foundry_context_new_for_user() to create a new context for the user without involving a project such as for simple text editor or documentation services.

Contextual

For objects that are to be used solely within the context of a FoundryContext, subclass FoundryContextual. These objects will have their FoundryContextual:context property cleared when the foundry is shutdown.

Contextuals do not hold a full reference to the FoundryContext. Instead it is a weak reference which may be upgraded to a full reference when calling foundry_contextual_dup_context().

Inhibitor

Use FoundryInhibitor to prevent the shutdown of a context during a long running operation. Calls to foundry_context_shutdown() will be asynchornously delayed until the inhibitor as released the shutdown lock.

Services

Many features in Foundry are implemented through independent services. The FoundryService base-class is inhereted by these services and attached to the FoundryContext.

You may implement your own services in your application using libfoundry. Register the dynamically by calling foundry_context_dup_service_typed().

SDK Management

Building

Running

Build Configuration

Commands and Subprocesses

CLI Commands

Devices

Diagnostics

Symbol Extraction

File Management

Settings

Foundry supports robust hierarchical settings which puts the user in control. The settings are applied in the following order from highest-to-lowest priority. The first “layer” where a setting has been applied will take priority.

  • User setting with a specific projects .foundry/user/settings.keyfile
  • Project setting shared with collaborators in .foundry/project/settings.keyfile
  • Application-wide user preferences
  • Application defaults

You may use the foundry settings command-line tool or FoundrySettings to modify settings at any of these layers.

Documentation

Text Editing

Language Server Protocol

Search

Flatpak

Version Control

Operations & Logging

Unit Testing

Dependency Tracking

Debuggers

Large Language Models