Contest proposal: Syntax highlighting for Solidify source code files written for Free TON

Contest proposal: Syntax highlighting for Solidify source code files written for Free TON

Contest dates: (2 weeks)

Motivation

With many new smart contract developers joining the Free TON community, the need to implement syntax highlighting for popular source code editors and IDEs is here. Given that Free TON has its own flavor of Solidity, the use of syntax highlighting tools written for Ethereum flavor is impractical - the differences are too big.

Goal

We need our own plugins for the task of syntax highlighting. The object of this contest is to get many new plugins fulfilling this goal.

Requirements:

  • A fully working extension is required. Any MVPs will be rejected.
  • Support for 6 months is a requirement of entry.
  • syntax highlighting
    • keywords
    • variables
    • literals
    • comments
    • other things from the language specification and Free TON additions
  • code completion
    • keywords
    • variable names
    • classes names
    • method names
    • interfaces
  • Intellisense like behavior (pop-up hints showing you parameters needed as you code)
    • commands
    • contracts
    • methods
    • interfaces
  • Error mos highlighting: squiggly underlining of invalid commands (e.g., commands that do not match what the spec says - like misspelled or unrecognized, missing parameters, too few or not enough parameters)(either the command itself should be underlined, or the parameters should be underlined - depending on the situation);
  • change suggestions: ideally, the underline will display one of these messages with an explanation when hovered, according to the situation: “Unknown Command” or “Missing parameter(s)” or “Incorrect parameter(s)”
  • Need to allow for co-existence with the current Ethereum solidity syntax highlighters. Possible solutions: a different file extension, a smart header parser, or suggest your own.
  • The color scheme needs to be redefinable. Bonus: user-provided exceptions list for colors used.

Testing

Each team will provide its own test suite of smart contract code. The jury will test all submissions against every piece of smart contract code submitted. Any improperly handled or unhandled condition will lead to the submission score being lowered.

Contest stages

The first stage being discussed here is only for MS Visual Studio Code. It’s the most widely used editor by far, and, compared to the rest, it allows for a rather straightforward extension implementation.

Once the first stage is done, and the winners are announced, a vote for the most popular editors and IDEs will commence.

Winners of the popular vote will be grouped, and several further contests will be announced.

Rewards:

  • 1 place: 50K = 20K + 5K every month during 6 months;
  • 2 place: 39K = 15K + 4K vesting;
  • 3 place: 28K = 10K + 3K vesting;
  • 4 place: 10K
  • 5 place: 9K
  • 6 place: 8K
  • 7 place: 7K
  • 8 place: 6K
  • 9 place: 5K
  • 10 place: 4K

Notes on vesting: the condition of successful vesting is the fixing of bugs within 1 month of reporting, and adherence to the latest version of the Free TON Solidity compiler for the period of vesting.

4 Likes

reserved for future instructions.

One month for such a contest sounds like a joke. Unless it’s created exclusively for somebody who already prepared a solution it’s impossible to meet all the requirements within a specified timeframe.

As I understand there are two kinds of highlighters : simple one - that makes just a lexical analysis + uses a few dozens of typical patterns and a comprehensive one - that needs to do all the syntax parsing.
100 hours looks good (but still agressive) for a simple highlighter but for a comprehensive one two-three man-months are required (in my opinion). And such requirements as “error highlighting” clearly indicate that we need a comprehensive option.

This spring we implemented a simple highlighter for Coq (also for VS Code), it took about 1 man-month.

2 Likes

Hello! According this GitHub - freeton-org/readme I need to create my own fork from content repository. Where I can find this repository for this competition? I want to participate.

Or I can create my own github project?

1 Like

Hi.

Apply for a competition.
My telegram is @podlodkin
Free TON wallet address is 0:424c3fdf6ea1bff797767c3989e275e3f0ffdaf3a95c67cc3006b08c22923ac0.

Big thanks to @lesnik13utsa for Free TON knowledge and this competition!

My solution description:

4 Likes

Any MVPs will be rejected

what is MVPs ?

In short, this is a product that meets the minimum needs. You shouldn’t do the job just for the sake of the application. It is necessary to make the most competent and complete product, then the assessments will be appropriate. Good luck!

1 Like

The solution from MTW team - GitHub - mytonwallet/vscode-tonsolidity-extension: TON Solidity is the language used in Free TON project to create smart contracts. This extension use extended Solidity language for VScode IDE
New file extension must be used to turn on this extension: .tsol (So as many developers uses other extensions for Solidity language already, we have decided to introduce new file extension to work in comfortable format with Ton Solidity extended language. Due to fact that this file extension is not recognized by github/IDE parser, you may find desire to rename to .sol file again after development process.)
Our solution has auto compiling feature, that allows to get the tvc and abi.json without any issue and do quick deployment.
Submission number is 2
autocomple

Hi.

This is my submission for the contest.

See extension description in README on GitHub or Marketplace

Telegram: @tg2020ukraine

Hi. This is my submission.

https://github.com/html-code/freeton-solidity-syntax

themes

I confirm my application
@alexbassss

Pruvendo team is going to send its solution in a few minutes. For any questions feel free to reach me via Telegram Telegram: Contact @SergeyEgorovSPb

Here is my submission - Free TON Community
Sourcecode - pashaborg / vscode-free-tosol · GitLab
Telegram: pashaborg