# Supported languages

Mergiraf currently supports the following programming languages:
* Java (*.java)
* Rust (*.rs)
* Go (*.go)
* Javascript (*.js, *.jsx, *.mjs)
* TypeScript (*.ts, *.tsx)
* C/C++ (*.c, *.h, *.cc, *.hh, *.cpp, *.hpp, *.cxx, *.hxx, *.c++, *.h++, *.mpp, *.cppm, *.ixx, *.tcc)
* C# (*.cs)
* Dart (*.dart)
* Scala (*.scala, *.sbt)
* Starlark (*.bzl, *.bazel, BUILD, WORKSPACE)
* Python (*.py)
* PHP (*.php, *.phmtl)
* Solidity (*.sol)
* Lua (*.lua)
* Kotlin (*.kt)
* Ruby (*.rb)
* Elixir (*.ex, *.exs)
* Nix (*.nix)
* SystemVerilog (*.sv, *.svh)
* OCaml (*.ml, *.mli)
* Haskell (*.hs)
* GNU Make (*.mk, Makefile, GNUmakefile)
* CMake (*.cmake, CMakeLists.txt)

and the following declarative file formats:
* JSON (*.json)
* HTML (*.html, *.htm)
* XML (*.xml, *.xhtml)
* YAML (*.yml, *.yaml)
* TOML (*.toml), with dedicated support for `pyproject.toml` files
* INI (*.ini)
* Devicetree Source (*.dts)
* Java properties files (*.properties)
* HCL (*.hcl, *.tf, *.tfvars)
* `go.mod` and `go.sum` files

This list can also be obtained with the `mergiraf languages` command.

Is your favorite language missing? Check out the [tutorial to add support for a new language](./adding-a-language.md)!
