#FENNEL

day #2

will you feed him ground meat?

#love2d #fennel #lispgamejam

2025-10-30

Just put up my semi-annual post evangelizing the use of fennel and love2d for the lisp game jam

itch.io/jam/autumn-lisp-game-j

#fennel #love2d #lispgamejam

2025-10-28

Finally hacked mpv to play a directory of songs sorted by track number without relying on external tools like ffprobe!

#fennel

StreamRadarStreamRadar
2025-10-26
2025-10-23

I've been setting up a fennel and emacs powered streaming environment as part of the lead up to the lisp game jam.

The hardest part was finding a browser that supported twitch.

#emacs #fennel #twitch

2025-10-16

the monthly #fennel group is this Saturday!

10:00 US Pacific / 17:00 UTC

come hang out with us online: https://fennel-lang.org/events

2025-10-14

#fennel 1.6.0 is out! https://fennel-lang.org/changelog#160--2025-10-13

main features include reading files from macros, --to-be-closed with-open, and the ability to disable lambda asserts

Games Japangames@wakoka.com
2025-10-13

wacoca.com/games/1239877/ 【ガチギレ(?)】本気の喧嘩を始めた二人,,,しかし感動の結末が待っていた!?【LTK2/SHAKA/Zerost/kamito/うるか/神楽めあ/mittiii】 ##GAMING ##バロラント #FENNEL #Game #GameNews #games #GamingNews #GamingTrending #mittiii #TrendingGames #VALORANT #ゲーミング #ゲーム #ゲーム攻略 #ゲーム最新情報 #ドラゴンクエストV天空の花嫁 #ミッチー

【ガチギレ(?)】本気の喧嘩を始めた二人,,,しかし感動の結末が待っていた!?【LTK2/SHAKA/Zerost/kamito/うるか/神楽めあ/mittiii】
Playing Gamespg@jforo.com
2025-10-13

【ガチギレ(?)】本気の喧嘩を始めた二人,,,しかし感動の結末が待っていた!?【LTK2/SHAKA/Zerost/kamito/うるか/神楽めあ/mittiii】 playing-games.com/831751/ #FENNEL #games #gaming #GamingTrending #mittiii #TrendingGames #VALORANT #ゲーム #ゲーム攻略 #ゲーム最新情報 #バロラント #みっちー

【ガチギレ(?)】本気の喧嘩を始めた二人,,,しかし感動の結末が待っていた!?【LTK2/SHAKA/Zerost/kamito/うるか/神楽めあ/mittiii】
2025-10-09

Turns out MPV embeds Lua PUC 5.2 as a scripting language!

So, here is a simple way to bootstrap the fennel compiler and repl within a running session.

codeberg.org/alexjgriffith/fen

#fennel

Playing Gamespg@jforo.com
2025-10-08

【爆笑回】全ての責任を押し付けられそうなうる~かをみて ニヤケ続けるみっちーww【LTK2/SHAKA/Zerost/kamito/うるか/神楽めあ/mittiii】 playing-games.com/825599/ #FENNEL #games #gaming #GamingTrending #mittiii #TrendingGames #VALORANT #ゲーム #ゲーム攻略 #ゲーム最新情報 #バロラント #みっちー

【爆笑回】全ての責任を押し付けられそうなうる~かをみて ニヤケ続けるみっちーww【LTK2/SHAKA/Zerost/kamito/うるか/神楽めあ/mittiii】
Games Japangames@wakoka.com
2025-10-08

wacoca.com/games/1236950/ 【爆笑回】全ての責任を押し付けられそうなうる~かをみて ニヤケ続けるみっちーww【LTK2/SHAKA/Zerost/kamito/うるか/神楽めあ/mittiii】 ##GAMING ##バロラント #FENNEL #Game #GameNews #games #GamingNews #GamingTrending #mittiii #TrendingGames #VALORANT #ゲーミング #ゲーム #ゲーム攻略 #ゲーム最新情報 #ドラゴンクエストV天空の花嫁 #ミッチー

【爆笑回】全ての責任を押し付けられそうなうる~かをみて ニヤケ続けるみっちーww【LTK2/SHAKA/Zerost/kamito/うるか/神楽めあ/mittiii】
2025-10-07

Couldn't sleep

Ended up writing an erlang inspired binary decoder for #fennel

Now to wrap it in a macro and have some real fun!

paste.alexjgriffith.com/fbyte-

2025-10-06

Zipping and unzipping files in fennel has always given me headaches.

LuaZip, the default lua-zip available in Apt only allows you to read files, not write them.

Brimworks has a lua-zip library (my goto) that reads and writes, but has compatibility issue with emscripten in some browsers / operating systems.

This weekend I wrote my own minimal wrapper around lua-zlib in fennel that lets you read a zip file directly into a table of strings and vice versa.

codeberg.org/alexjgriffith/luz

#fennel

2025-10-05

in #clojure they overload parens for like six or seven distinct things and that bugged me a lot more; with #fennel we managed to mostly avoid that, with the one exception of multiple-value binds (which don't exist in Clojure)

but it sure would feel tidier to get rid of that one weird exception case

of course the proposed usage is not literally a call to the values special, but in the context of binding locals, it feels like (values a b) has the same construct/destructure symmetry as [a b] data structure notation

2025-10-05

one of the things that's always bugged me a bit about the design of #fennel is that we use parentheses mostly for calls to functions/macros but they are also overloaded in binding context to allow binding to multiple values:

(let [input "whatever"
      (v1 v2) (input:match "([aeiou]).*([aeiou])")]
  (print :vowels v1 v2))

at a quick glance if you miss the context, it looks like the second line is a call to a v1 function where it's actually binding

I have been thinking it might be clearer if we bind to what looks like a "call" to values instead:

(let [input "whatever"
      (values v1 v2) (input:match "([aeiou]).*([aeiou])")]
  (print :vowels v1 v2))

it seems clearer and more consistent but I'm not sure it's worth the extra typing... thoughts?

https://dev.fennel-lang.org/ticket/56

2025-10-02

Hot loading modules works! And, I fixed an endian issue that was borking websocket packets greater than 125 bytes.

#fennel #gamedev

Client Info

Server: https://mastodon.social
Version: 2025.07
Repository: https://github.com/cyevgeniy/lmst