frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

Open in hackernews

Extending Emacs with Fennel (2024)

https://andreyor.st/posts/2024-12-20-extending-emacs-with-fennel/
116•Bogdanp•9h ago

Comments

jhoechtl•7h ago
What makes a modern Lisp? I am aware of Fennel and Jannet. Anyone havng experience with one of those or another one I am not aware of?
xlii•6h ago
Having experience with many IMO it's all about value added. There might be concurrency, message passing (Janet) od global scope isolation (Fennel). Personally I had difficulty getting into Fennel, but no problems incorporating Janet into my flow even though the author is the same. I'm not a fan of hygienic macros though.

I would add Clojure to the modern Lisps, too, which I find the most feature rich (even though had much more blast writing Janet).

TacticalCoder•6h ago
> I would add Clojure to the modern Lisps, too, which I find the most feature rich (even though had much more blast writing Janet).

Yup. Clojure may not be the most lispy Lisp but it reaches: it works on top of the JVM (with super easy Java interop), it transpiles to JavaScript and I also use it to write script using Babashka (GraalVM/AOT native Clojure interpreter which starts in milliseconds, avoiding JVM startup time [notoriously slow for regular Clojure programs]).

Being able to share code between Clojure and ClojureScript is really sweet.

Clojure(Script) / Emacs (CIDER) / eglot (LSP client for Emacs): life is good!

neutronicus•2h ago
I know the homoiconicity purists hate the additional braces in Clojure, but I consider the literal vectors and hash tables a pretty big win over `#()` and the mess that is dealing with hash tables in CL.
tmtvl•6h ago
Common Lisp, which I would consider the most modern, has convenience features which most other languages (even other Lisps) lack. CLOS, macro expansion, and, of course, the condition system.
terminalbraid•2h ago
Which lisps lack a macro expansion system?
tmtvl•2h ago
R7RS (small, at least) doesn't seem to have macro-expand. R6RS also doesn't appear to have it.
kryptiskt•1h ago
R6RS has syntax-case macros which is superior to Common Lisp macros in every respect, they're both hygienic and can be used to implement a sloppy macro system if one so wishes.
tmtvl•1h ago
I think we're talking past each other. I mean something like:

  (macroexpand '(when-let (foo (frob bar))
      (jib foo)))
  ;; (let ((foo (frob bar)))
  ;;   (when foo
  ;;     (jib foo)))
terminalbraid•1h ago
So the modern scheme specs. (I'd argue putting small in there is unfair considering its intent and the actual implementations of r6rs do offer expansion, e.g. chez, guile, racket)
setopt•2h ago
Do you consider Common Lisp more "modern" than say Scheme or Racket?

As far as I know, the CL spec hasn’t been updated for 30+ years, and most of its design is far older.

tmtvl•2h ago
Don't know much about Racket, but CL has type dispatch:

  (defmethod join ((a String) (b String))
    (concatenate 'String a b))
  ;; example: (join "abc" "def") => "abcdef"

  (defmethod join ((a Integer) (b Integer))
    (parse-integer (format nil "~D~D" a b)))
  ;; example: (join 123 456) => 123456
And rudimentary support for ADTs:

  (deftype Low-Score ()
    '(Integer 0 20))

  (deftype Normal-Score ()
    '(Integer 21 79))

  (deftype High-Score ()
    '(Integer 80 100))

  (deftype Score ()
    '(or Low-Score Normal-Score High-Score))
(But note that deftypes aren't allowed to recurse.)

CL also has first-class support for debugging with things like describe, step, and trace built-in.

EDIT: Yeah, the CL spec dates from 1994 and a bunch of things which we would expect nowadays (networking, POSIX,...) are provided by external libraries rather than being part of the spec, but in various ways CL is way ahead of its time.

radiator•4h ago
Janet (with one l) is modern because it is, well, new. It doesn't need to carry the historical baggage of Common Lisp. It has many data structures, a concurrency model, it is suitable for functional programming and for object-oriented programming. It has libraries for common tasks and is well documented.
ritenuto•4h ago
> Janet (with one l)

Typo, it should be: “with one n” (as the earlier commenter wrote “Jannet”). It took me a while to parse this, I was searching for the nonexistent “l” embarrassingly long.

psychoslave•6h ago
Sorry, but what is Fennel?
Lyngbakr•6h ago
Fennel[0] is a Lisp-like language that transpiles to Lua. It was originally developed by Calvin Rose (author of Janet[1]), but is now maintained by Phil Hagelberg (author of Leiningen[2]).

[0]https://fennel-lang.org

[1]https://janet-lang.org/

[2]https://codeberg.org/leiningen/leiningen

tmountain•6h ago
Fennel absolutely rocks for creating games. It integrates with TIC-80 (open source fantasy console) and also Love (game engine) and PICO-8. Lots of blog articles on getting started. Check it out!
Kexoth•49m ago
If so can you reccomend (link here) some of the resources which got you started?

FWIW there are blog posts from the same author of the Emacs setup: https://andreyor.st/tags/game1/

adastra22•4h ago
TIL you can configure Emacs with Brainfuck. This is so appropriate and I can’t think of a better language to use.
rayiner•2h ago
This joke landed better before folks unleashed the horrors that are XML config files.
campak•3h ago
came thinking somehow fennel the seed extended Emacs

Reverse engineering GitHub Actions cache to make it fast

https://www.blacksmith.sh/blog/cache
45•tsaifu•1h ago•12 comments

Using Radicle CI

https://radicle.xyz/2025/07/23/using-radicle-ci-for-development
38•aiw1nt3rs•1h ago•2 comments

Cerebras launches Qwen3-235B, achieving 1.5k tokens per second

https://www.cerebras.ai/press-release/cerebras-launches-qwen3-235b-world-s-fastest-frontier-ai-model-with-full-131k-context-support
228•mihau•4h ago•85 comments

Cops say criminals use a Google Pixel with GrapheneOS – I say that's freedom

https://www.androidauthority.com/why-i-use-grapheneos-on-pixel-3575477/
153•pabs3•1h ago•86 comments

Manticore Search: Fast, efficient, drop-in replacement for Elasticsearch

https://github.com/manticoresoftware/manticoresearch
24•klaussilveira•1h ago•5 comments

20 years of Linux on the Desktop (part 4)

https://ploum.net/2025-07-23-linux_desktop4.html
73•todsacerdoti•1h ago•42 comments

Geocities Backgrounds

https://pixelmoondust.neocities.org/archives/archivedtiles
73•marcodiego•2d ago•16 comments

The Surprising gRPC Client Bottleneck in Low-Latency Networks

https://blog.ydb.tech/the-surprising-grpc-client-bottleneck-in-low-latency-networks-and-how-to-get-around-it-69d6977a1d02
23•eivanov89•1h ago•1 comments

Reversing a Fingerprint Reader Protocol (2021)

https://blog.th0m.as/misc/fingerprint-reversing/
20•thejj100100•3d ago•3 comments

Qwen3-Coder: Agentic coding in the world

https://qwenlm.github.io/blog/qwen3-coder/
677•danielhanchen•17h ago•297 comments

AI groups spend to replace low-cost 'data labellers' with high-paid experts

https://www.ft.com/content/e17647f0-4c3b-49b4-a031-b56158bbb3b8
111•eisa01•3d ago•46 comments

QuestDB (YC S20) Is Hiring a Technical Content Lead

https://questdb.com/careers/technical-content-lead/
1•nhourcard•3h ago

SQL Injection as a Feature

https://idiallo.com/blog/sql-injection-as-a-feature
48•foxfired•1d ago•18 comments

Extending Emacs with Fennel (2024)

https://andreyor.st/posts/2024-12-20-extending-emacs-with-fennel/
116•Bogdanp•9h ago•21 comments

Uber will let women drivers and riders request to avoid being paired with men

https://www.cnbc.com/2025/07/23/uber-women-drivers-riders.html
17•ortusdux•31m ago•13 comments

When Is WebAssembly Going to Get DOM Support?

https://queue.acm.org/detail.cfm?id=3746174
100•jazzypants•9h ago•99 comments

SDR42E1 modulates Vitamin D absorption and cancer pathogenesis

https://www.frontiersin.org/journals/endocrinology/articles/10.3389/fendo.2025.1585859/full
23•bookofjoe•1h ago•2 comments

Rescuing two PDP-11s from a former British Telecom underground shelter (2023)

https://forum.vcfed.org/index.php?threads/rescuing-two-pdp-11-systems-in-uk-from-a-former-big-british-telecom-underground-shelter-in-central-london.1244723/page-2
91•mhh__•8h ago•13 comments

I'm Unsatisfied with Easing Functions

https://www.davepagurek.com/blog/easing-functions/
31•surprisetalk•3d ago•17 comments

Checking Out CPython 3.14's remote debugging protocol

https://rtpg.co/2025/06/28/checking-out-sys-remote-exec/
36•ingve•5h ago•10 comments

Herringbone Tiles

https://nothings.org/gamedev/herringbone/herringbone_tiles.html
3•smusamashah•2d ago•0 comments

Mathematics for Computer Science (2024)

https://ocw.mit.edu/courses/6-1200j-mathematics-for-computer-science-spring-2024/
215•vismit2000•11h ago•37 comments

More than you wanted to know about how Game Boy cartridges work

https://abc.decontextualize.com/more-than-you-wanted-to-know/
372•todsacerdoti•19h ago•41 comments

AI coding agents are removing programming language barriers

https://railsatscale.com/2025-07-19-ai-coding-agents-are-removing-programming-language-barriers/
75•Bogdanp•11h ago•84 comments

Algorithms for Modern Processor Architectures

https://lemire.github.io/talks/2025/sea/sea2025.html
241•matt_d•16h ago•42 comments

Brave blocks Microsoft Recall by default

https://brave.com/privacy-updates/35-block-recall/
199•XzetaU8•5h ago•179 comments

Why you can't color calibrate deep space photos

https://maurycyz.com/misc/cc/
183•LorenDB•14h ago•82 comments

Android Earthquake Alerts: A global system for early warning

https://research.google/blog/android-earthquake-alerts-a-global-system-for-early-warning/
310•michaefe•20h ago•106 comments

Show HN: Header-only GIF decoder in pure C – no malloc, easy to use

44•FerkiHN•3h ago•31 comments

I watched Gemini CLI hallucinate and delete my files

https://anuraag2601.github.io/gemini_cli_disaster.html
269•anuraag2601•20h ago•322 comments