Experience
TON Foundation
TON Core | Yerevan, Armenia · Remote
- Created TON extension for VS Code and language server with support for Tolk, FunC, Fift assembly and TL-B languages (ton-language-server)
- Created Tolk formatter (tolkfmt)
- Added proof-of-concept Fift assembly compiler on top of the TASM for new Tolk backend
- Added coverage and profiling for tests
- Lead IntelliJ TON 3.0 release with more than 170 tasks (intellij-ton)
- Created Sandbox UI (sandbox)
- Created TVM Instructions catalog (spec)
TON Studio | Yerevan, Armenia · Remote
Worked in the TON Studio division on the programming language Tact for the TON blockchain. Support and development of Tact programming language compiler and tooling:
- Created language server and VS Code extension (tact-language-server)
- Created Fift assembly, BoC, TL-B language servers inside Tact language server
- Created plugin for JetBrains IDEs (intelli-tact)
- Created CST parser generator and formatter for Tact
- 200+ commits in the compiler repository (tact)
- Fixed 100+ bugs and added 40+ new features
TON-related:
- Created a new version of the TVM disassembler (ton-opcode)
- Wrote a complete assembler for TVM bitcode (900+ instructions, Text assembly -> Bitcode and vice versa) (tasm)
- Created TxTracer tool to debug and emulate any transaction in TON (TxTracer)
- Created TVM Assembly Playground (playground) and Godbolt-like explorer for FunC code (code-explorer)
- Wrote several articles about TVM internals in TON documentation
Spawn Programming Language
Yerevan, Armenia · Remote
- Developed a compiler (transpiler to C) and an interpreter from scratch, implementing 250 inspections
- Developed plugins for VS Code and JetBrains IDE
- Developed Language Servers and Tree-Sitter grammar for it
- Authored a complete language specification
- Wrote nearly 70,000 lines of code in the standard library in Spawn
- Developed tools such as spawnfmt, spawnprof, and spawncov in Spawn
JetBrains
Yerevan, Armenia · Remote
Support and development of PhpStorm IDE:
- Improved type inference system for better generics support
- Implemented various bug fixes and improvements in type inference
- Added a bunch of new inspections and quick fixes
- Improved documentation support
- Added better support for Psalm types
- Improved Laravel Blade support
- Improved testing support
- Closed about 100 tasks
V Kontakte LLC (VK.com)
Saint Petersburg, Russia
Support and implementation of new features in the AdmStorm plugin. Created internal AdmStorm plugin for PhpStorm for our developers (admstorm):
- Checking the synchronization of the local repository and the repository on the development server
- Additional actions for push and pull, taking into account hooks on the development server
- Various configurations for launching KPHP, PHPUnit and PHPLinter
- Built-in KPHP Playground and Hastebin
- Ability to view the generated C++ code for the entire site
Development of the KPHP compiler from PHP to C++:
- Participated in the development of a new functions color concept for architecture validation
- Developed a separate NoColor color concept tool for community use outside of KPHP
- Implemented the concept of color in KPHP and added support for various PHP functions
- Implementing PHP 7.4 and PHP 8 features
Development and support of the NoVerify static analyzer for PHP:
- Added over 50 new checks to NoVerify and internal linter
- Added support for Composer and improved testing systems
- Rewritten the entire CLI to be more user-friendly
- Implemented full PHP 8 and PHP 8.1 support into the parser
- Created NoVerify Playground and improved type inference system
- Wrote new documentation and many small improvements
Building a PhpStats connection analyzer for PHP from scratch:
- Collect 9 different code metrics and build 8 different dependency graphs
- Collect dependencies between classes and functions and check reachability
- Collect general statistics on the project and view info in sortable tables
Internship
- Development of static analyzer NoVerify for PHP and internal VK linter
- Adding new checks and code refactoring
- Writing unit tests