Packages
mdex
0.13.0
0.13.3
0.13.2
0.13.1
0.13.0
0.12.5
retired
0.12.4
0.12.3
0.12.2
0.12.1
0.12.0
0.11.7
0.11.6
0.11.5
0.11.4
0.11.3
0.11.2
0.11.1
0.11.0
0.10.0
0.9.4
0.9.3
0.9.2
0.9.1
0.9.0
0.8.6
0.8.5
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.5
0.7.4
0.7.3
0.7.2
0.7.1
0.7.0
0.6.2
0.6.1
0.6.0
0.5.0
0.4.3
0.4.2
0.4.1
0.4.0
0.3.3
0.3.2
0.3.1
0.3.0
0.2.0
0.1.18
0.1.17
0.1.16
0.1.15
0.1.14
0.1.13
0.1.12
0.1.11
0.1.10
0.1.9
0.1.8
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
Fast and extensible Markdown for Elixir
Security advisory:
This version has known vulnerabilities.
View advisories
Current section
Files
Jump to
Current section
Files
guides/compilation.md
### Pre-compilation
MDEx uses the `:mdex_native` dependency for its Rust-backed Markdown parser, HTML sanitizer, and syntax highlighter. Precompiled binaries are available for these targets, so Rust is not required in the common case:
- `aarch64-apple-darwin`
- `aarch64-unknown-linux-gnu`
- `aarch64-unknown-linux-musl`
- `arm-unknown-linux-gnueabihf`
- `riscv64gc-unknown-linux-gnu`
- `x86_64-apple-darwin`
- `x86_64-pc-windows-gnu`
- `x86_64-pc-windows-msvc`
- `x86_64-unknown-freebsd`
- `x86_64-unknown-linux-gnu`
- `x86_64-unknown-linux-musl`
**Note:** The pre-compiled binaries for Linux are compiled using Ubuntu 22 on libc 2.35, which requires minimum Ubuntu 22, Debian Bookworm or a system with a compatible libc version. For older Linux systems, you'll need to compile manually.
### Compile manually
If you need to compile the native dependency yourself:
1. [Install Rust](https://www.rust-lang.org/tools/install)
2. Install a C compiler or build packages
It depends on your OS, for example in Ubuntu you can install the `build-essential` package.
3. Run:
```sh
export MDEX_NATIVE_BUILD=1
mix deps.get
mix compile
```
To enable syntax highlighting with Lumis, add `:lumis` to your deps:
```elixir
{:lumis, "~> 0.1"}
```
Then configure `:mdex_native` before compiling dependencies:
```elixir
config :mdex_native, syntax_highlighter: :lumis
```
To use Syntect instead:
```elixir
config :mdex_native, syntax_highlighter: :syntect
```
Disable with `nil` to download a minimal NIF without any syntax highlighter:
```elixir
config :mdex_native, syntax_highlighter: nil
```
Syntax highlighting is disabled by default in MDEx. Even after compiling `:mdex_native` with Lumis or Syntect, pass `:syntax_highlight` options to enable highlighting for a render.
With `syntax_highlight: nil`, MDEx still adds the language class for code blocks but does not syntax highlight them.
### Legacy CPUs
Modern CPU features are enabled by default in `:mdex_native`. If your environment has an older CPU,
you can use legacy artifacts by adding the following configuration to your `config.exs`:
```elixir
config :mdex_native, use_legacy_artifacts: true
```