kanaka/mal

mal - Make a Lisp

View on GitHub ↗Jump to charts ↓Open shareable report

Summary Information

Updated 39 minutes ago
Added to GitGenius on September 5th, 2026
Created on March 24th, 2014
Open Issues & Pull Requests: 54 (+0)
GitHub issues: Enabled
Number of forks: 2,705
Total Stargazers: 10,727 (+0)
Total Subscribers: 181 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 12.3 hours
Mean response time: 32.5 days
90th percentile: 10.8 days
Tracked items: 18

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 16
New in 7 days: 0
Closed in 7 days: 0
Avg open age: 922 days
Stale 30+ days: 14
Stale 90+ days: 14

Recent activity

Opened in 7 days: 0
Closed in 7 days: 0
Comments in 7 days: 0
Events in 7 days: 0

Top labels

  • bug (6)
  • enhancement (5)
  • question (4)
  • new_implementation (2)

Most active issues this week

No issue events were indexed in the last 7 days.

Detailed Description

mal is a Lisp interpreter implementation guide that teaches language design through building a working Lisp in multiple programming languages.

The project addresses the challenge of understanding how interpreters work by providing a structured, step-by-step guide to implementing a complete Lisp dialect. Rather than explaining theory in isolation, mal works by having developers build a functioning interpreter incrementally, with each step adding new language features. The approach is language-agnostic: the same guide can be followed in any programming language, allowing learners to implement mal in their language of choice while following a consistent architecture.

mal suits developers who want hands-on experience with interpreter design, language implementation, or compiler fundamentals. It works well for those learning a new programming language who want a substantial project with clear milestones, or for anyone curious about how Lisp evaluation and macro systems function. The project is particularly valuable because it provides a reference implementation path rather than requiring developers to design an interpreter from scratch, reducing the barrier to understanding language internals.

The project maintains implementations across a wide range of languages, reflecting ongoing community contributions. Development activity shows consistent engagement with the codebase through additions and refinements to existing implementations. The guide itself receives updates and clarifications as contributors work through implementation challenges. Community members regularly contribute new language implementations, expanding the set of available reference implementations. The project sustains itself through distributed maintenance, with different implementations receiving attention from developers interested in those particular languages.