THE SAFARLI GUIDE
From a sentence to a program.
Start with a small, explicit program. Check what it means, then run it on your own device.
INSTALLATION
Use Safarli in VS Code.
The current public installation path is the Safarli 0.1.5 pre-release extension for Windows x64, with VS Code 1.96 or later. The extension includes its compiler and runtime; you do not need a separate CLI, Rust or Node.js to use the bundled compiler.
- Open the Safarli Marketplace listing and check the publisher is Safarli, with the identifier
Safarli.safarli. - In VS Code’s Extensions view, choose Install Pre-Release or Install Pre-Release Version. If the normal release option reports that there is no release version, return to the pre-release option.
- Open a folder you trust. The extension invokes local software and can execute your programs, so it requires a trusted filesystem workspace.
The current Windows package does not establish support for WSL, SSH or Linux containers. A remote extension host needs its own tested platform package.
Install a 0.1.6 VSIX
Choose a verified VSIX on the downloads page for Windows x64, Linux x64, macOS Apple Silicon or macOS Intel. Match the platform of the extension host, including remote workspaces. In Extensions, open the view menu, choose Install from VSIX and select that exact file. VS Code 1.96 or later and a trusted filesystem workspace are required. The bundled compiler needs no separate Rust, Python, Node.js or CLI installation.
Test updates in a separate VS Code profile. To roll back, retain a compatible earlier VSIX; Linux and macOS upgrade/rollback were not verified. Uninstall Safarli from Extensions to remove it and retain your own programs. The package README describes the earlier Windows-only Marketplace distribution; the platform records on this site describe the separately tested 0.1.6 files.
YOUR FIRST PROGRAM
Save it as movies.saf.
Create a file named movies.saf, copy this source and save it. Keep the complete sentences and their terminating periods.
Orbit is a movie with a rating of eight.
Comet is a movie with a rating of six.
Nova is a movie with a rating of nine.
Increase Comet's rating by three.
Show Comet's rating.
Show Nova's rating.
9
9
Runs locally in SafarliThe first three sentences name movies and their ratings. The next changes Comet’s rating from six to nine. The final two show Comet’s and Nova’s ratings, in order.
THE LOCAL WORKFLOW
Check first. Run explicitly.
Check
Open the Command Palette and choose Safarli: Check Safarli Program. The compiler checks the source without running program effects. Review errors in Problems and the Safarli output channel.
Explain
Safarli: Explain Safarli Program shows the compiler’s interpretation without executing the program.
Run
When ready, choose Safarli: Run Safarli Program. On Windows, Ctrl + Alt + R is the Run shortcut. Open Output → Safarli and compare the complete output above.
Check and Run save changed Safarli files in the same workspace first. Check passing is not proof that every program produces your intended result. Review the output and any effects.
To stop an active process, use Safarli: Stop Safarli Processes. Formatting is a separate, undoable editor action.
WRITING FOR SAFARLI
Make the meaning explicit.
Use clear English with named objects, supplied facts and explicit operations. Safarli supports a defined language grammar; experimental Beta status means some constructions and combinations remain unsupported.
- Supply a value before using or changing it. A missing fact is not a request to invent a default.
- Use clear names when more than one object could match a pronoun or description.
- Preserve meaningful indentation in multi-line operations. The examples here keep their original source formatting.
- Start with a verified example, make one change at a time, then Check and compare the complete result.
Technical forms also exist. A program containing parentheses, explicit types or bracketed lists should be read as that specific syntax, not a promise that arbitrary conversational English will work.
The combined If … and then Show … form is not included in this site’s verified examples. No 0.1.6 repair is claimed here.
WHEN MEANING IS AMBIGUOUS
A choice is not a Run.
This source can leave “the book” with more than one possible referent:
Alice owns a book.
Emma owns another book.
Show who owns the book.This is a static explanation of the editor workflow, not an interactive compiler on this website. A clarification question is different from program output.
- Check the source. If the compiler supplies verified alternatives, VS Code can show Yes / No / Choose beside the ambiguous line or through Quick Fix.
- Select a meaning. Yes accepts the proposed interpretation. No selects the alternative only when there are exactly two verified choices; with more candidates, choose explicitly.
- Review the source preview. Inspect the proposed change before accepting it.
- Apply explicitly. Use Apply and Check to make an undoable, unsaved editor edit after source revalidation. Cancel or changed source leaves your code intact.
- Run explicitly. Save when ready and choose Run yourself. Selecting a meaning does not execute the program.
THE OTHER INSTALLATION PATH
The standalone command line.
A standalone package lets you use Safarli from a terminal. It is an alternative to the bundled VS Code compiler. Check the status of each 0.1.6 file before downloading. A disabled action means public verification is incomplete.
Once a verified distribution has been installed and its executable is on your command path, the CLI uses these commands:
safarli check movies.saf
safarli explain movies.saf
safarli run movies.safRun executes program effects with files relative to your working directory. Check and Explain do not run program effects. The website does not add a browser compiler or an online execution service.
Windows x64 CLI
Extract the ZIP into a new directory you own and keep it together. In PowerShell inside that directory, use .\bin\safarli.exe --version, .\bin\safarli.exe check examples/first-program.saf and .\bin\safarli.exe run examples/first-program.saf. Expected Run output is 9 then 9. The MSVC CRT is linked statically; normal Windows system DLLs are required. The binary is unsigned. Testing used Windows Server 2022 x64, not Windows 10/11 human testing. No minimum supported Windows version is established.
Linux x64 CLI
Extract the archive into a new directory, then use ./bin/safarli --version, ./bin/safarli check examples/first-program.saf and ./bin/safarli run examples/first-program.saf. Expected Run output is 9 then 9. A glibc system and the libraries in BUILD-INFO.json are required. Native testing used Linux x64 with glibc 2.39; no minimum distribution or universal Linux support is established.
Experimental macOS CLI
Separate Apple Silicon and Intel packages were tested natively. Check the processor in About This Mac; do not assume the browser has identified it correctly.
Experimental macOS build. Not signed with an Apple Developer ID certificate and not notarized by Apple. macOS may display a security warning.
Extract into a new directory and use the same explicit ./bin/safarli commands as Linux. Native testing used macOS 15.8.2 ARM64 and 15.7.9 Intel; these are not minimum supported versions. The executable has an ad-hoc signature, without Apple Developer ID verification or notarization. A quarantined browser download has not undergone a real Mac Gatekeeper first-open test.
Keep macOS security protections enabled. If a trusted package triggers a warning, consult Apple’s guidance on safely opening apps. A damaged, changed or malicious-file warning must not be treated as an ordinary unidentified-developer prompt. This guide does not provide an untested exception procedure.
Keep portable installs separate
Keep each extracted directory complete and your own programs outside it. Install updates beside earlier versions and invoke the chosen executable explicitly. Delete only the package directory to uninstall; undo only PATH entries you added yourself. No administrator install is needed. Read the bundled INSTALL-EN.md, LICENSE.txt and third-party notices. The bundled guide was written for the private candidate; this website supplies the current public availability record.
BEFORE OPENING A PACKAGE
Compare the exact file.
For an available package, check the version, channel, OS and processor, then compare its byte size and SHA-256 with the download record. Keep the original filename and use the guide for that exact package.
In Windows PowerShell, Get-FileHash -Algorithm SHA256 -LiteralPath 'YOUR_DOWNLOADED_FILE' computes a hash. On Linux use sha256sum 'YOUR_DOWNLOADED_FILE'; on macOS use shasum -a 256 'YOUR_DOWNLOADED_FILE'. Replace the placeholder with the actual file path.
A matching hash checks consistency against the published value. It does not certify the publisher, safety or platform compatibility. If a file differs, do not open it.
Full distribution terms are available on the license page. To record a problem without sending data, use the local report builder.