Skip to content

v2.0.2

Latest

Choose a tag to compare

@github-actions github-actions released this 02 Sep 13:15
· 2 commits to master since this release
ef525ce

2.0.2 - 2026-09-02

A small follow-up to 2.0.1, focused on module resolution: declaration files pairing with hand-written Luau
now actually resolve, folders gain a second index-file convention, and the package manager pipeline is
verified end-to-end for third-party (non-Loom) Luau libraries.

Module resolution

  • .d.loom declaration files are now importable modules in their own right. An export declare names an
    ordinary export; a bare declare stays ambient (visible everywhere in the root, not importable) — the
    way it always has been for a global.
  • A declaration file's hand-written .luau sibling (e.g. jecs.d.loom next to jecs.luau) is copied into
    the output tree in the declaration file's place, so a require of it resolves to real Luau at runtime.
  • Folders now fold into a main.loom index file, alongside the existing Rojo-native init.loom convention
    — the index.js/__init__.py style, for a package authored without Rojo's own folding in mind.
    init.loom wins where a folder somehow has both.
  • Fixed a require emitted for a main.loom-folded import falling back to a path Luau's own
    require-by-string resolver can't fold on its own; it now names the file outright when no Rojo project
    maps the output.

Package manager

  • Verified (and covered with a regression test) that publishing and installing a package carries every file
    under its source directory — not just .loom ones — so a third-party package wrapping a hand-written
    .luau library round-trips its runtime sibling through loom publish/loom add intact.

Full Changelog: v2.0.1...v2.0.2