Monkey C – Small familiar language for apps on Garmin watches

Garmin’s Monkey C lands — and the comments ask, “Why not Lua?”

TLDR: Garmin launched Monkey C, a simple language for building watch apps that feels familiar on purpose. The top comment—“Why not Lua?”—split readers between using a well-known language and sticking with Garmin’s lightweight, controlled tool that may keep apps smooth and battery life strong.

Garmin just showed off Monkey C, its friendly little language for building watch apps, and it reads like a mashup of familiar stuff: simple classes, a “Toybox” of system tools, and easy console prints. It compiles to bytecode and uses “duck typing,” meaning types stay flexible until runtime.

Then the comments exploded. The loudest challenge: “Why not Lua?” User JSR_FDED called a custom language an impediment to developers, reviving the classic “Not Invented Here” debate. Supporters shot back that Garmin wants tight control, a tiny runtime, and consistent behavior across devices. Skeptics warned flexible typing could mean more runtime errors; fans replied that watch apps are small and quick to fix.

And yes, the jokes flew. If it’s called Monkey C, it better be “bananas”; duck emojis waddled in for duck typing; “Toybox” got indie band jokes. Some begged for JavaScript or Lua for instant portability; others said Monkey C’s familiar feel could lower the barrier and keep batteries happy. The vibe: cautious curiosity.

Bottom line, the feature list is comfy and non-scary—print lines, timers, stats, exit and error tools—and the docs aim for “language you already know.” Whether devs actually embrace it is the real test. Docs: Connect IQ.

Key Points

  • Monkey C is Garmin’s language for developing apps on its watches and is designed to feel familiar to developers.
  • Applications import modules with using statements; Toybox is the root module, with Toybox.System and Toybox.Application used in examples.
  • System.println provides console output; System also offers getTimer, getSystemStats, exit, and error.
  • Monkey C compiles to bytecode for a virtual machine, allocates all objects on the heap, uses reference counting, and has no primitive types.
  • The language is duck-typed (no compile-time type checking), and unlike JavaScript/Lua, functions are not first-class citizens.

Hottest takes

“Why not just use Lua?” — JSR_FDED
Made with <3 by @siedrix and @shesho from CDMX. Powered by Forge&Hive.