Directory Layout
Every package follows a predictable directory layout. The exact contents depend on the package type.
Programs
A program package builds from an entry file Src/Main.rux that defines the Main() function:
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 repositoryBin/ 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.
Libraries
A library uses the same layout, except the entry file is named after the library instead of Main.rux:
Math/
├── Rux.toml # Package manifest
├── Src/ # Source files
│ ├── Math.rux # Contains the root name scope of the package
│ └── ... # 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 repositorySource packages
Source packages cannot be built directly — they are included in other projects as dependencies, so they have no Bin/ output:
Core/
├── Rux.toml # Package manifest
├── Src/ # Source files
│ ├── Core.rux # Contains the root name scope of the package
│ └── ... # Other folders or source files
├── README.md # Brief Markdown description
├── LICENSE.md # License of the package
└── .gitignore # Excludes some items if necessary