Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Reorganize compile time flags for the compiler #752

Merged
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 19 additions & 7 deletions docs/syntax_and_semantics/compile_time_flags.md
Original file line number Diff line number Diff line change
Expand Up @@ -126,34 +126,46 @@ true

### Stdlib features

These flags enable or disable features in the standard library when building a
Crystal program.

| Flag name | Description |
|-----------|-------------|
| `gc_none` | Disables garbage collection ([#5314](https://github.com/crystal-lang/crystal/pull/5314))
| `debug_raise` | Debugging flag for `raise` logic. Prints the backtrace before raising.
| `preview_mt` | Enables multithreading preview. Introduced in 0.28.0 ([#7546](https://github.com/crystal-lang/crystal/pull/7546))
| `strict_multi_assign` | Enable strict semantics for [one-to-many assignment](assignment.md#one-to-many-assignment). Introduced in 1.3.0 ([#11145](https://github.com/crystal-lang/crystal/pull/11145), [#11545](https://github.com/crystal-lang/crystal/pull/11545))
| `skip_crystal_compiler_rt` | Exclude Crystal's native `compiler-rt` implementation.
| `use_libiconv` | Use `libiconv` instead of the `iconv` system library
| `use_pcre2` | Use PCRE2 as regex engine (instead of legacy PCRE). Introduced in 1.7.0.
| `use_pcre` | Use PCRE as regex engine (instead of PCRE2). Introduced in 1.8.0.
| `win7` | Use Win32 WinNT API for Windows 7
| `without_iconv` | Do not link `iconv`/`libiconv`
| `without_openssl` | Build without OpenSSL support
| `without_zlib` | Build without Zlib support

### Compiler features

These flags enable or disable compiler features when building a Crystal program.

| Flag name | Description |
|-----------|-------------|
| `without_ffi` | Build the compiler without `libffi`
| `without_interpreter` | Build the compiler without interpreter support
| `without_openssl` | Build the compiler without OpenSSL support
| `without_zlib` | Build the compiler without Zlib support
| `without_playground` | Build the compiler without playground (`crystal play`)
| `i_know_what_im_doing` | Safety guard against involuntarily building the compiler
| `no_number_autocast` | Will not [autocast](autocasting.md#number-autocasting) numeric expressions, only literals |
| `no_restrictions_augmenter` | Disable enhanced restrictions augmenter. Introduced in 1.5 ([#12103](https://github.com/crystal-lang/crystal/pull/12103)).
| `preview_dll` | Enable dynamic linking on Windows; experimental |
| `preview_overload_order` | Enable more robust ordering between def overloads. Introduced in 1.6 ([#10711](https://github.com/crystal-lang/crystal/issues/10711)).
| `preview_win32_delay_load` | Delay-load all DLLs on Windows; experimental |
| `strict_multi_assign` | Enable strict semantics for [one-to-many assignment](assignment.md#one-to-many-assignment). Introduced in 1.3.0 ([#11145](https://github.com/crystal-lang/crystal/pull/11145), [#11545](https://github.com/crystal-lang/crystal/pull/11545))

### Compiler build features

These flags enable or disable features when building the Crystal compiler.

| Flag name | Description |
|-----------|-------------|
| `without_ffi` | Build the compiler without `libffi`
| `without_interpreter` | Build the compiler without interpreter support
| `without_playground` | Build the compiler without playground (`crystal play`)
| `i_know_what_im_doing` | Safety guard against involuntarily building the compiler

### User code features

Expand Down
Loading