linguist icon indicating copy to clipboard operation
linguist copied to clipboard

Add support for Verse programming language

Open simnJS opened this issue 6 months ago • 10 comments

Description

Verse is the programming language developed by Epic Games for Unreal Engine, Fortnite Creative, and the Unreal Editor for Fortnite (UEFN).

Language overview:

  • Developed by Epic Games
  • Used for game logic in Fortnite Creative and UEFN
  • Functional programming language with a strong type system
  • Official documentation: https://dev.epicgames.com/documentation/en-us/uefn/verse-language-reference

The TextMate grammar provided includes comprehensive syntax highlighting for:

  • Verse-specific keywords and operators
  • String interpolation
  • Block and line comments
  • Markup syntax (for UI)
  • Type annotations
  • Function definitions
  • Control flow structures

Add support for the Verse programming language to GitHub Linguist. Currently, many developers avoid posting Verse code on GitHub simply because it isn’t syntax-highlighted; instead, they share snippets and full projects on the Epic Games forums. In addition, Verse is already heavily used by professional studios within private repositories for Unreal Engine and Fortnite Creative workflows. By bringing official .verse support we aim to:

  • Encourage more public sharing of Verse code on GitHub
  • Improve discoverability and readability for open-source projects
  • Provide consistency with Epic’s official branding

Checklist:

  • [x] I am adding a new language.
    • [x] The extension of the new language is used in hundreds of repositories on GitHub.com.
      • Search results for each extension:
        • https://github.com/search?type=code&q=NOT+is%3Afork+path%3A*.verse+using
    • [x] I have included a real-world usage sample for all extensions added in this PR:
      • Sample source(s): Added by contributor for demonstration
      • Sample license(s): MIT
    • [x] I have included a syntax highlighting grammar: https://github.com/simnJS/verse-grammar
    • [x] I have added a color
      • Hex value: #518ef8
      • Rationale: The color #518ef8 (blue-purple) represents Verse because Epic Games chose it as the official branding color for their new programming language used in Unreal Engine and Fortnite Creative.
    • [ ] I have updated the heuristics to distinguish my language from others using the same extension.

Additional notes

Because Verse is primarily used within UEFN projects—often in private Epic Games repositories or published as packaged experiences—the number of .verse files publicly visible on GitHub remains low. However, it is the official scripting language for Fortnite Creative 2.0, and lack of syntax highlighting discourages developers from using GitHub to share examples.

simnJS avatar Jun 13 '25 17:06 simnJS

We really need this! Here are some more good code examples of verse syntax: https://github.com/sprintermax/UEFNVerseSnippets/blob/main/VerseLogic/ExtraModules/VerseFeatures.verse https://github.com/sprintermax/UEFNVerseSnippets/blob/main/VerseLogic/ExtraModules/MathFeatures.verse https://github.com/RayBenefield/dev-xp/blob/master/src/node_modules/%40tableau/device/selector_device_v0_1.verse

sprintermax avatar Jun 13 '25 17:06 sprintermax

I’ve checked the CONTRIBUTING.md and I believe I’ve addressed all the issues. Apologies for the incomplete first PR.

simnJS avatar Jun 14 '25 11:06 simnJS

Hi, thanks for the feedback!

I understand the concern about popularity. However, I'd like to highlight a few important points that reflect the growing strategic relevance of the Verse language:

  • Verse is the official scripting language for Fortnite Creative 2.0 and Unreal Editor for Fortnite (UEFN), as documented by Epic Games here.

  • Epic has publicly stated its long-term goal is to make Verse the default programming language across the entire Unreal Engine ecosystem. This positions Verse not as a niche tool, but as a foundational part of future Unreal development, including Fortnite, UEFN, and eventually Unreal Engine itself.

  • Verse is already widely used in production by professional studios, particularly in private repositories and packaged UEFN experiences. This unfortunately limits the visibility of .verse files on GitHub search, despite significant real-world usage.

  • Supporting .verse in Linguist would directly encourage open-source sharing by making GitHub a more welcoming platform for Verse developers. Right now, many avoid publishing their work here due to the lack of syntax highlighting.

Let me know if you'd like any more concrete usage examples or documentation references—happy to help!

Thanks again for your time and consideration.

simnJS avatar Jun 16 '25 11:06 simnJS

The popularity requirements are only made based on public repos as it's impossible to tell what private usage is. Yes, this does result in a chicken-and-egg scenario between encouraging usage and getting it recognised on GitHub, but this applies for all new languages and projects, regardless of backing. We don't make exceptions either as this would defeat the purpose of having a usage requirement which means we'd have to effectively pollute and degrade the quality of this project by accepting every hobby language submission too.

Popularity is evaluated every 3-4 months when a new release is made, so if this language is really gaining in popularity as you claim, it shouldn't take long to meet our usage requirements.

lildude avatar Jun 19 '25 11:06 lildude

Okay thank you ! How did you check popularity for verse ? I don't find a query to see numbers of repo using it.

simnJS avatar Jun 19 '25 11:06 simnJS

Okay thank you ! How did you check popularity for verse ? I don't find a query to see numbers of repo using it.

I used the search link you provided. I also removed the using keyword to see if that made much of a difference; it didn't. It's not possible to easily determine the number of repos from the search results at the moment, hence we're using the temporary calculating method detailed in the issue referenced in the CONTRIBUTING.md file.

lildude avatar Jun 19 '25 11:06 lildude

I looks like you didn't use the script/add-grammar script to add your grammar as per the CONTRIBUTING.md file as had you done so, it would have failed with a source 'vendor/grammars/verse-grammar' contains no grammar files error because your grammar repo is not in a format used by editors.

We expect the grammar files to be in these locations, depending on the extension. Your grammar repo isn't.

Please fix your grammar repo and re-add your grammar.

Hi, sorry about that — I thought I had followed the steps correctly, but I clearly misunderstood. This is actually the first project I’m contributing to, so I really appreciate your guidance.

I’ll work on fixing the grammar repo in the next few hours and re-add it properly.

Just to confirm, does Verse already meet the popularity requirement to be accepted as a supported language?

Thanks again for your help!

simnJS avatar Sep 15 '25 16:09 simnJS

Hello, the Verse language is becoming increasingly popular! It was officially announced last month as the official language of Unreal Engine 6. It’s even being taught in some schools. Do you think the language still deserves its “pending popularity” status?

simnJS avatar Nov 27 '25 14:11 simnJS

Popularity is only reassessed when I'm preparing to make a new release which happens approx every 3-4 months. If it meets our requirements and the PR's tests pass, the PR will be merged. I will not add a comment each time as this is unnecessary noise telling you what the label does.

lildude avatar Nov 27 '25 16:11 lildude

It also still looks like you've still not used the script/add-grammar. Please do so as it'll save everyone time when the language is reassessed.

lildude avatar Nov 27 '25 16:11 lildude