Why is it called Comma?

It is named after the Comma butterfly. Camelia, a butterfly, is the logo and mascot of the Raku community. We went through hundreds of butterfly names, and Comma came out on top: it's short, memorable, was not used by an existing IDE or related product, and the "," must be one of the most commonly typed characters when programming in Raku.

What are Comma Community and Comma Complete?

Comma Community is a freely available Raku IDE. It provides a rich experience for the Raku developer, including authoring support, live detection of errors in the code, code navigation, an integrated test runner, debugging, and more. Comma Community updates are relesed roughly once per quarter.

Comma Complete is a commercial version of Comma, for those looking for more features, more regular updates, or simply wanting to support the development of the tool. In addition to the many features of Comma Community, it includes integrated test coverage and profiling, along with a number of more powerful refactoring tools. Comma Complete updates are released at least once a month.

What is a Comma Complete subscription?

A Comma Complete subscription grants you access to 12 months worth of Comma Complete updates. Once the subscription period ends, you are free to use the Comma Complete releases that you downloaded within your subscription period for as long as you like; there's no DRM or other expiration mechanisms in the downloads. Renewing your subscription will allow you continued access to download new releases, and support the continued development of Comma.

Is Comma a standalone tool or an IntelliJ plugin?

We provide both. The standalone IDE is for those who are primarily developing in Raku, while the plugin is more suitable for those who want Raku development support in an existing IDEA-based IDE, such as IntelliJ.

A Comma Complete subscription covers both the standalone IDE and the plugin, so you don't have to choose between them.

Is Comma open source?

Not at this time. In the process of producing Comma, we have already made a number of significant open source contributions:

  • Debug (including remote debug) support for MoarVM
  • A Raku client library and command-line interface for the MoarVM debugger
  • The Java::Generate module, which we developed as part of building our custom lexer/parser engine

We are considering open-sourcing Comma Community in the future, primarily to ease the path for those who wish to write Comma plugins.

Why is the parser based on the Raku grammar rather than being the Raku grammar itself?

The main reason is that the Raku grammar can happily reject invalid programs (in fact, that's part of its job), whereas a parser serving an IDE needs to accept every program and try to recover in the face of malformed code, which it will be faced with nearly all of the time as the developer types and edits. We also did some things, such as expression parsing, a bit differently, to fit better with the way an IDEA parser is expected to work. Further, since we can't assume we have a perfect parse of dependencies, but should try to show some reasonable highlighting anyway, we apply some heuristics to differentiate type and routine in that case. Finally, we don't try to run `BEGIN`-time code, which a real Raku parser would.

Does Comma run any Raku code in order to obtain symbols?

Yes. Comma will invoke the Raku implementation it is configured with in order to obtain information about the set of builtins available. It will also evaluate `use` statements for modules outside of the project being edited. This will only work if those are modules that you have already chosen to install on your system, however. Code inside of the project you are currently working on will not be executed without you explicitly doing so.

These choices are intended to strike a reasonable balance between being useful in the face of modules that do interesting kinds of dynamic symbol exports, while lowering the risk of falling victim to a malicious program if simply opening it to read the code.

My question isn't answered here; how to I contact you?

Send email to