Install
curl -fsSL https://nift-dev.github.io/markup-website/install | sh
The installer downloads the latest official release for Linux x86-64 or macOS arm64/x86-64, verifies the archive against the release's SHA256SUMS, and installs markup to ~/.local/bin without sudo. Use MARKUP_INSTALL_DIR for another directory or MARKUP_VERSION to pin a release. Windows x86-64 is available as a checksum-covered zip from GitHub releases.
curl -fsSL https://nift-dev.github.io/markup-website/download | sh
curl -fsSL https://nift-dev.github.io/markup-website/update | sh
curl -fsSL https://nift-dev.github.io/markup-website/uninstall | sh
The download command saves a verified archive without installing it. Update reruns the canonical installer. Uninstall removes only the executable from the selected install directory.
Build
git clone https://github.com/nift-dev/markup.git
cd markup
make
make test
The build requires C++17 and C99 compilers plus Make. The resulting executable is markup; the CommonMark engine is built from vendored source rather than a system library.
CLI
markup README.md
markup README.md -o README.html
markup --standalone --title "Project notes" notes.md -o notes.html
markup --extensions README.md -o extended.html
markup guide.adoc -o guide.html
markup manual.rst -o manual.html
printf '# Hello\n' | markup --format markdown -
Output is an HTML fragment. Markdown uses CommonMark by default; .adoc/.asciidoc select AsciiDoc and .rst selects reStructuredText. Use --extensions for legacy Markdown tables, task lists and strikethrough, or --standalone for a minimal HTML5 document. Input from stdin requires --format.
Library API
#include <markup/Markup.h>
std::string html;
std::string error;
markup::Options options;
bool ok = markup::convert(
markup::Format::Markdown,
source,
html,
error,
options);
The public API performs no file IO and owns no global mutable state. AsciiDoc and reStructuredText includes require explicit host resolvers that return content and canonical dependency identities. That separation lets Nift embed Markup++ without granting the converter ambient filesystem access.
Raw HTML and safe mode
Raw HTML passes through by default, as CommonMark specifies. --safe prevents raw HTML pass-through and rejects active URL schemes. It is a conservative rendering option, not a complete sanitizer for hostile content.
markup --safe comments.md -o comments.html