Rapira (Рапира) – Soviet programming language interpreter
Recorded: May 28, 2026, 9:01 a.m.
| Original | Summarized |
GitHub - begoon/rapira: Rapira programming language / Язык программирования Рапира · GitHub Skip to content Navigation Menu Toggle navigation
Sign in
Appearance settings PlatformAI CODE CREATIONGitHub CopilotWrite better code with AIGitHub SparkBuild and deploy intelligent appsGitHub ModelsManage and compare promptsMCP RegistryNewIntegrate external toolsDEVELOPER WORKFLOWSActionsAutomate any workflowCodespacesInstant dev environmentsIssuesPlan and track workCode ReviewManage code changesAPPLICATION SECURITYGitHub Advanced SecurityFind and fix vulnerabilitiesCode securitySecure your code as you buildSecret protectionStop leaks before they startEXPLOREWhy GitHubDocumentationBlogChangelogMarketplaceView all featuresSolutionsBY COMPANY SIZEEnterprisesSmall and medium teamsStartupsNonprofitsBY USE CASEApp ModernizationDevSecOpsDevOpsCI/CDView all use casesBY INDUSTRYHealthcareFinancial servicesManufacturingGovernmentView all industriesView all solutionsResourcesEXPLORE BY TOPICAISoftware DevelopmentDevOpsSecurityView all topicsEXPLORE BY TYPECustomer storiesEvents & webinarsEbooks & reportsBusiness insightsGitHub SkillsSUPPORT & SERVICESDocumentationCustomer supportCommunity forumTrust centerPartnersView all resourcesOpen SourceCOMMUNITYGitHub SponsorsFund open source developersPROGRAMSSecurity LabMaintainer CommunityAcceleratorGitHub StarsArchive ProgramREPOSITORIESTopicsTrendingCollectionsEnterpriseENTERPRISE SOLUTIONSEnterprise platformAI-powered developer platformAVAILABLE ADD-ONSGitHub Advanced SecurityEnterprise-grade security featuresCopilot for BusinessEnterprise-grade AI featuresPremium SupportEnterprise-grade 24/7 supportPricing Search or jump to... Search code, repositories, users, issues, pull requests...
Search Clear
Search syntax tips Provide feedback Include my email address so I can be contacted Cancel Submit feedback Saved searches
Name Query To see all available qualifiers, see our documentation. Cancel Create saved search Sign in Sign up
Appearance settings Resetting focus You signed in with another tab or window. Reload to refresh your session. Dismiss alert begoon rapira Public
Notifications
Fork
Star Code Issues Pull requests Actions Projects Security and quality Insights
Additional navigation options
Code Issues Pull requests Actions Projects Security and quality Insights
mainBranchesTagsGo to fileCodeOpen more actions menuFolders and filesNameNameLast commit messageLast commit dateLatest commit History26 Commits26 Commits.github/workflows.github/workflows clicli examplesexamples scriptsscripts srcsrc teststests webweb .gitignore.gitignore CLAUDE.mdCLAUDE.md JustfileJustfile LICENSELICENSE RAPIRA.mdRAPIRA.md README.mdREADME.md SPEC.mdSPEC.md bun.lockbun.lock package.jsonpackage.json tsconfig.jsontsconfig.json View all filesRepository files navigationREADMEMIT licenseRapira ▶ Try it in your browser: https://begoon.github.io/rapira ▶ Run it from your terminal: npx rapira factorial.rap ФУНК ФАКТ (Н); ДЛЯ Н ОТ 0 ДО 6 :: What's in the box Interpreter core (src/) — lexer, parser, tree-walking evaluator. Faithful to the 1985 Agat dialect: Russian-only keywords, case-insensitive identifiers, (* … *) block comments, ; statement separator, three compound types (tuples < >, sets <* *>, records <¤ ¤>), three-arrow procedure parameter scheme (name / name => / <=> name), trailing РЕЗ: for function results. Install File examples/hello.rap examples/factorial.rap examples/turtle_square.rap examples/turtle_star.rap examples/io_files.rap examples/io_seek.rap Documentation SPEC.md — the implementation contract: lexical structure, statements, operators, built-ins, what's done vs. honestly deferred. License About Rapira programming language / Язык программирования Рапира demin.ws/rapira/ Resources Readme MIT license Uh oh! There was an error while loading. Please reload this page. Activity 7 0 0 Report repository Releases Packages
Uh oh! There was an error while loading. Please reload this page. Contributors Uh oh! There was an error while loading. Please reload this page. Languages TypeScript JavaScript Just CSS HTML
Footer © 2026 GitHub, Inc. Footer navigation Terms Privacy Security Status Community Docs Contact Manage cookies Do not share my personal information You can’t perform that action at this time. |
The Rapira programming language is presented as a TypeScript and Bun interpreter for Rapira, a Soviet-era educational programming language originally developed in the early 1980s under G. A. Zvenigorodsky for the Agat microcomputer as part of the Shkolnitsa computing system. The foundation of Rapira is rooted in historical constraints, evidenced by its implementation adhering closely to the 1985 Agat dialect, which dictated specific syntactic and structural rules. The core design incorporates several distinct components reflecting a layered architecture of implementation. The interpreter core, located in the src directory, is responsible for the fundamental operations, including the lexer, parser, and tree-walking evaluator. This core faithfully implements the specific features of the 1985 dialect, featuring Russian-only keywords, case-insensitive identifiers, a semicolon for statement separation, and unique compound types such as tuples, sets, and records. Furthermore, the procedure parameter scheme utilizes a three-arrow notation, and function results are explicitly handled using a trailing result indicator. The language design incorporated specific constraints that inform its structure. This includes the use of specific compound types and the three-arrow parameter scheme, which represents a unique approach to function definition and data structuring. The language also features distinct operators and constructs that define its operational logic. The project provides multiple pathways for interacting with and developing Rapira. The command-line interface, or CLI, is designed to allow for direct execution of programs, functioning as a multi-line Read-Eval-Print Loop (REPL). This CLI has the capability to capture outputs from the turtle graphics execution and render them as SVG files. A web playground offers an accessible environment for development, utilizing standard web technologies like HTML, CodeMirror 6, and Web Workers to provide a dynamic experience with light and dark themes. This playground structure aims to facilitate immediate visual feedback, which is built for deployment via GitHub Pages. A critical aspect of the project involves the extension of functionality through the implementation of a turtle graphics executor. This feature is exposed as standard Rapira procedures, including commands for movement (forward, backward, left, right) and pen operations. This turtle module is layered upon the existing graphics event stream, ensuring that the output generated by the CLI's SVG renderer and the web playground's canvas renderer is identical. The development and testing pipeline is supported by a suite of tools utilizing Bun. This setup facilitates local development, running self-contained tests across 129 test cases, executing examples, and bundling the CLI into a distributable JavaScript file. The snippet testing mechanism further refines development by allowing differential testing of Rapira files against expected outputs. The provided examples demonstrate the language's capability across various domains, including basic mathematical functions like factorial calculations, input output operations involving file handling (reading, writing, and seeking), and spatial reasoning through the turtle graphics execution, such as drawing a square or a five-pointed star. The implementation contract is formally documented in SPEC.md and RAPIRA.md, which detail the lexical structure, operational statements, built-in functions, and the canonical 1985 specification reformatted for modern readability. The project is licensed under the MIT license, attributed to Alexander Demin. |