Directory Layout

Every package follows a predictable directory layout. The exact contents depend on the package type.

Executables

An Executable package builds from Src/Main.rux, which defines Main():

App/
├── Rux.toml       # Package manifest
├── Src/           # Source files
│   ├── Main.rux   # Contains the Main entry point
│   └── ...        # Other folders or source files
├── Bin/           # Created by the compiler
│   ├── Debug/     # Debug build output
│   └── Release/   # Release build output
├── Temp/          # Intermediate build files
├── README.md      # Brief Markdown description
├── LICENSE.md     # License of the package
└── .gitignore     # Excludes /Bin and /Temp from the repository

Bin/ and Temp/ are generated by the toolchain and should be listed in .gitignore. The root may also hold other directories such as Art, Docs, Icons, or Images.

README.md and LICENSE.md are the conventional targets of the manifest's ReadmeFile and LicenseFile fields, which is what makes them show up on the package's registry page.

Native libraries

SharedLibrary and StaticLibrary packages use the same layout without an entry point. Scaffolding creates Src/Lib.rux:

Math/
├── Rux.toml       # Package manifest
├── Src/           # Source files
│   ├── Lib.rux    # Library declarations and public symbols
│   └── ...        # Other folders or source files
├── Bin/           # Created by the compiler
│   ├── Debug/     # Debug build output
│   └── Release/   # Release build output
├── Temp/          # Intermediate build files
├── README.md      # Brief Markdown description
├── LICENSE.md     # License of the package
└── .gitignore     # Excludes /Bin and /Temp from the repository

The output filename follows the platform conventions listed under Package Types.

Source libraries

SourceLibrary packages cannot be built directly. They are compiled into other projects as dependencies, so they have no Bin/ output:

Core/
├── Rux.toml       # Package manifest
├── Src/           # Source files
│   ├── Lib.rux    # Source-library declarations
│   └── ...        # Other folders or source files
├── README.md      # Brief Markdown description
├── LICENSE.md     # License of the package
└── .gitignore     # Excludes some items if necessary