-
Notifications
You must be signed in to change notification settings - Fork 126
Home
Welcome to the Fennel wiki!
Lists of:
- Codebases written in Fennel
- Cookbook of Fennel programming techniques
- Editor support for Fennel
- Package managers that include Fennel
- Writing about Fennel
There are many different ways to distribute Fennel code depending on the context.
You can enhance the REPL by installing and configuring readline.
Fennel is officially supported on:
Fennel works but isn't officially supported on these Lua implementations:
- Fengari (Javascript runtime)
- RaptorJIT (LuaJIT fork)
- gopher-lua (Golang)
You can also use it with these bindings to PUC:
- NLua (.NET)
- Sweet Moon (Ruby, also supports LuaJIT)
- HsLua (Haskell)
Fennel does not work on these due to bugs in the Lua implementations:
- luerl (Erlang runtime)
- Cobalt (Java virtual machine)
- LuaJ (Java virtual machine)
- rembulan (Java virtual machine)
- moonsharp (.NET runtime)
- guile-lua-rebirth (Guile)
On the JVM, LuaJ and Rembulan are abandonware; they have basic string-handling bugs that cause Fennel to fail. Cobalt is an actively developed LuaJ fork and has fixed the showstopper bugs, but it's not a general-purpose Lua implementation; it's purpose-built just to support a specific Minecraft mod and lacks a package system and basic I/O functions. You can use it to run Fennel code, but it requires some tricks.
This only means that they cannot run the Fennel compiler. Code written in Fennel and then AOT-compiled to Lua will usually work fine, except on Guile where almost nothing works.
These tools support Fennel right out of the box:
- cloc (count lines of code)
- Jeejah An nREPL server for Fennel and Lua
- pygments (syntax highlighting)
- chroma (syntax highlighting)
- TIC-80 (fantasy retro game console)
- fnlfmt (formatter)
- fenneldoc Documentation validation and generation tool
- Linguist syntax highlighting and language breakdown graphs library, used by Github
- tree-sitter-fennel Fennel grammar for Tree-sitter, which in turns allows editors that use it (Neovim for example) to have syntax highlighting for Fennel
- fennel-ls A language server for intelligent editing of the Fennel Programming Language
- fennel-language-server Fennel language server protocol (LSP) support, written in Rust.
- scintilla is a text editor component that contains an LPeg grammar for Fennel
These tools support Fennel with some manual tweaks:
-
bat A cat(1) clone with syntax highlighting and Git integration (e.g. install this repo as a
bat
Custom Language)
Use Fennel instead of Lua to configure/script your software:
- awesome-wm (How to use Fennel to configure the window manager awesome)
- OpenResty REST API (Example project for building a JSON REST API with Fennel on OpenResty)
- Neovim (It can be configured in Lua and thanks to Hotpot you can use Fennel wherever Lua is supported (which is pretty much everywhere: plugins, colors, syntax, etc.))
- Spacehammer (keyboard-driven workflows for Mac OS)
- LuaTex. LuaTeX is a fork of the TeX typesetting system with hooks for Lua integration. LuaTeX contains an embedded Lua interpreter, so it can run Fennel code. See the Fennel in LuaTeX wiki page for details.
- On Lua:
- Lua mailing list - for questions about the Lua language itself or specific Lua modules (most module authors hang out there!)
- Lua documentation - documentation on the Lua language, including the reference manual
- Lua forum - a beginner friendly Lua community
- There are lots of recordings of great talks from FennelConf on a variety of different Fennel topics.