# scalameta/scalameta

Library to read, analyze, transform and generate Scala programs

Repository: https://github.com/scalameta/scalameta
Canonical: https://ross.abutalabs.com/products/scalameta
Homepage: http://scalameta.org/
Language: Scala
License: BSD-3-Clause
License Family: permissive
Topics: scala, metaprogramming, parser, pretty-printer, syntactic, semantic, semanticdb
Last push: 2026-08-31T22:23:38+00:00

## Health v2 (maintenance only)
Score: 98/100 (v2, computed 2026-09-03T02:20:16.233290+00:00)
- activity 100, release rhythm 94, longevity 100
- inputs: {"age_days": 4461, "days_push": 2, "days_rel": 41, "gap_med": 11, "n_releases_24m": 44}
- flags: none
- formula: round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)

## Adoption (not part of the score)
Stars 1156, forks 246 (observed 2026-09-01T02:14:06.563615+00:00)

## What it is
Scalameta is a Scala library for reading, analyzing, transforming, and generating Scala programs via lossless syntax trees and quasiquotes. It also provides SemanticDB, a protobuf-based data model for sharing semantic information (symbols and types) between developer tools.

## Use cases
- parse scala source code into syntax trees
- build a scala code formatter or linter
- programmatically refactor scala code
- pretty-print scala syntax trees back to source
- build scala developer tools using semantic information
- pattern match and traverse scala ASTs
- generate scala code programmatically

## When to choose
- you need lossless syntax trees for Scala 2 or Scala 3
- you are building formatters, linters, refactoring or documentation tools for Scala
- you want a stable, documented alternative to Scala compiler internals for tooling
- you need quasiquotes for constructing or matching Scala code

## When to avoid
- you work in a language other than Scala or Java
- you need runtime bytecode generation or macros rather than source-level metaprogramming
- you need full semantic type information for languages beyond Scala's partial Java support

## Facets
- artifact type: library
- maturity: active
- function: parser, serialization, developer-tools, documentation
- domain: parsers, programming-languages, developer-tools, documentation
- platform: jvm, cross-platform
- tags: scala, syntax-trees, metaprogramming, semanticdb, quasiquotes, pretty-printer, code-analysis

## Member repositories
- scalameta/scalameta (main) score 98

## Provenance
- Observed fields: from GitHub, fetched 2026-09-01T02:14:06.563615+00:00.
- Health v2: computed from the inputs above; adoption is never an input.
- Inferred fields (summary, facets, guidance): AI-extracted, prompt v1, taxonomy v1, on 2026-08-30T06:32:14.445875+00:00, confidence not recorded.
  - readme: https://github.com/scalameta/scalameta (fetched 2026-09-01T02:14:06.563615+00:00, sha 4f95f396ed73)
  - homepage: http://scalameta.org/ (fetched 2026-08-29T12:37:37.493655+00:00, sha ae3a07f4edc7)
  - site_page: http://scalameta.org/docs/trees/guide (fetched 2026-08-29T12:37:37.496339+00:00, sha 7928323acf34)
  - site_page: http://scalameta.org/docs/semanticdb/guide (fetched 2026-08-29T12:37:37.499718+00:00, sha 610a03319d6c)
  - site_page: http://scalameta.org/docs/trees/quasiquotes (fetched 2026-08-29T12:37:37.501946+00:00, sha d80760fc9738)
  - site_page: http://scalameta.org/docs/semanticdb/specification (fetched 2026-08-29T12:37:37.504118+00:00, sha ec20883de884)
  - site_page: https://scalameta.org/mdoc (fetched 2026-08-29T12:37:37.508019+00:00, sha 343e4669915a)
- Data as of 2026-08-30T08:39:29.467469+00:00.
