{"id":21978163,"url":"https://github.com/rhpo/luna","last_synced_at":"2025-10-26T09:47:57.738Z","repository":{"id":178991707,"uuid":"662680138","full_name":"rhpo/Luna","owner":"rhpo","description":"A High-Level dynamically typed versatile language for elegant programming and streamlined scripting.","archived":false,"fork":false,"pushed_at":"2025-01-09T17:04:42.000Z","size":13890,"stargazers_count":14,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-24T23:34:27.186Z","etag":null,"topics":["javascript","language","luna","programming","programming-language","rust","scripting-language","typescript","vanilla-javascript","vanilla-js","web"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rhpo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-07-05T16:44:51.000Z","updated_at":"2025-01-09T17:04:45.000Z","dependencies_parsed_at":null,"dependency_job_id":"ea9ce9c8-eba0-4825-94c4-16f8557d9fe1","html_url":"https://github.com/rhpo/Luna","commit_stats":null,"previous_names":["rhpo/luna"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rhpo%2FLuna","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rhpo%2FLuna/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rhpo%2FLuna/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rhpo%2FLuna/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rhpo","download_url":"https://codeload.github.com/rhpo/Luna/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251348357,"owners_count":21575265,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["javascript","language","luna","programming","programming-language","rust","scripting-language","typescript","vanilla-javascript","vanilla-js","web"],"created_at":"2024-11-29T16:18:17.846Z","updated_at":"2025-10-26T09:47:57.651Z","avatar_url":"https://github.com/rhpo.png","language":"TypeScript","readme":"###### NOTE: This README.md file temporarily placeholdes the repo, please be patient for the author to document Luna and refer to the code below at the meanwhile.\n###### Any collaborator who's able to convert the TS project to C/C++ (or a low-level language) will be rewarded by getting credited as a co-Author of the Luna programming language.\n\n# Luna 🌙 \u0026nbsp;\u0026horbar;\u0026nbsp; A High-Level Programming language.\n\n\u003cdiv align=\"center\"\u003e\n\u003cbr\u003e\n   \u003c!--img src=\"/assets/logo-styles/luna-noborders.png#gh-dark-mode-only\" width=\"140\"\u003e\n   \u003cimg src=\"/assets/logo-styles/luna-noborders.png#gh-light-mode-only\" width=\"140\"--\u003e\n\n   \u003cimg src=\"/assets/logo-styles/luna-noborders.png\" width=\"140\"\u003e\n\n   \u003ch3 align=\"center\"\u003eLuna\u003c/h3\u003e\n\n  \u003cp align=\"center\"\u003e\n    \u003cstrong\u003eLuna: \u003c/strong\u003e An \u003cstrong\u003eelegant\u003c/strong\u003e, versatile programming language with efficient scripting capabilities, built in \u003cimg src=\"https://cdn-icons-png.flaticon.com/512/5968/5968381.png\" width=\"16\" align=\"center\"/\u003e TypeScript for simplicity and productivity in both general programming and automation tasks 🤖.\u003c/p\u003e\n\u003ca href=\"https://github.com/rhpo/luna/tree/main/docs\"\u003e\u003cstrong\u003eExplore the docs »\u003c/strong\u003e\u003c/a\u003e\n\u003cbr\u003e\n \u003ca href=\"https://rhpo.github.io/luna/releases/\"\u003eGet Releases\u003c/a\u003e\n    ·\n    \u003ca href=\"https://rhpo.github.io/luna/examples/\"\u003eView Examples\u003c/a\u003e\n    ·\n    \u003ca href=\"https://github.com/rhpo/luna/issues\"\u003eReport Bug\u003c/a\u003e\n    ·\n    \u003ca href=\"mailto:luna@ramey.ml\"\u003eRequest Feature\u003c/a\u003e\n\u003cbr\u003e\n\u003cbr\u003e\n\t\u003cp\u003e\n\t\t\u003ca href=\"https://vercel.com/?utm_source=discordjs\u0026utm_campaign=oss\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/discordjs/discord.js/main/.github/powered-by-vercel.svg\" alt=\"Vercel\" /\u003e\u003c/a\u003e\n\t\t\u003ca href=\"https://www.cloudflare.com\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/discordjs/discord.js/main/.github/powered-by-workers.png\" alt=\"Cloudflare Workers\" height=\"44\" /\u003e\u003c/a\u003e\n\t\u003c/p\u003e\n\n  \u003cdiv align=\"center\"\u003e\n\n[![Contributors][contributors-shield]][contributors-url]\n[![Forks][forks-shield]][forks-url]\n[![Stargazers][stars-shield]][stars-url]\n[![Issues][issues-shield]][issues-url]\n\n[![MIT License][license-shield]][license-url]\n[![Linkedin][linkedin-shield]][linkedin-url]\n[![Discord][discord-shield]][discord-url]\n\n\n\u003cp\u003e\n\t\t\u003c!--a href=\"https://discord.gg/djs\"\u003e\u003cimg src=\"https://img.shields.io/discord/222078108977594368?color=5865F2\u0026logo=discord\u0026logoColor=white\" alt=\"Discord server\" /\u003e\u003c/a--\u003e\n\t\t\u003ca href=\"https://www.npmjs.com/package/lunascript\"\u003e\u003cimg src=\"https://img.shields.io/npm/v/lunascript.svg?maxAge=3600\" alt=\"npm version\" /\u003e\u003c/a\u003e\n\t\t\u003ca href=\"https://www.npmjs.com/package/lunascript\"\u003e\u003cimg src=\"https://img.shields.io/npm/dt/lunascript.svg?maxAge=3600\" alt=\"npm downloads\" /\u003e\u003c/a\u003e\n\t\u003c/p\u003e\n\n\u003c/div\u003e\n\n\u003c/div\u003e\n\n\u003cdetails align=\"left\"\u003e\n  \u003csummary\u003eTable of Contents\u003c/summary\u003e\n  \u003col\u003e\n     \u003cli\u003e\n      \u003ca href=\"#news\"\u003e📰 News\u003c/a\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      \u003ca href=\"#about-the-project\"\u003e🔍 About The Project\u003c/a\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#why-choose\"\u003e🤔 Why Luna?\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\n      \u003ca href=\"#getting-started\"\u003e🛠️ Getting Started\u003c/a\u003e\n      \u003cul\u003e\n        \u003cli\u003e\u003ca href=\"#nodejs\"\u003e🌿 NodeJS\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#web\"\u003e🌐 Web Browsers (VanillaJS)\u003c/a\u003e\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#usage\"\u003e✋ Usage\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#cdn\"\u003e📕 CDN\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#exaples\"\u003e🕹️ Code Examples\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#docs\"\u003e📖 Documentation\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#api\"\u003e📚 API\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#license\"\u003e📜 License\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#contact\"\u003e👋 Contact\u003c/a\u003e\u003c/li\u003e\n     \u003cli\u003e\u003ca href=\"#about-author\"\u003e👤 About the Author\u003c/a\u003e\u003c/li\u003e\n  \u003c/ol\u003e\n\u003c/details\u003e\n\n\n\u003chr\u003e\n\n\u003cbr\u003e\n\u003ch2 name=\"news\"\u003e\u0026bull; 📰 News\u003c/h2\u003e\n\n+ ✅ Added support for __asyncronous__ ``lambda`` expressions.\n+ ✅ Added \"use\" statements: ``use(external as custom) from 'file.lnx'``\n+ ✅ Improved **speed \u0026 performance** ⚡.\n+ ✅ Added ``embed`` statements, you can now **embed** code from *other files* inside your main file: ``embed \"path/to/file.ln\";``\n+ ✅ Added TapStatements, to execute files without the need to import (performance optimisation):  ``tap \"exec/this/code.ln\";``\n\u003cbr\u003e\n\n_____\n\n\u003cbr\u003e\n\u003ch2 name=\"about-the-project\"\u003e\u0026bull; 🔍 About The Project\u003c/h2\u003e\n\n**Luna** is a high-level programming language. It is designed to provide an elegant and productive coding experience for developers. Luna offers a clean and intuitive syntax, making it easier to write efficient and readable code. The language supports a variety of programming paradigms, including procedural, object-oriented, and functional programming styles. Luna is built with a focus on simplicity and productivity, aiming to streamline the development process and enhance developer experience. It provides powerful abstractions and built-in libraries to facilitate common programming tasks.\n\nLuna is an interpreted programming language, which means that code written in Luna is executed directly by an interpreter rather than being compiled into machine code. Here's a high-level overview of how Luna works:\n\n1. **Parsing**: When you write Luna code, the interpreter first parses it to understand its structure and syntax. This involves breaking the code into tokens and building an abstract syntax tree (AST) representation.\n\n2. **Semantic Analysis**: After parsing, Luna performs semantic analysis. This phase involves analyzing the AST to enforce language rules and perform type checking. The interpreter verifies that the code follows the correct usage of variables, functions, and types, ensuring its correctness.\n\n3. **Execution**: Once the code passes semantic analysis, the Luna interpreter begins executing the code line by line. It evaluates expressions, assigns values to variables, and executes control flow statements such as conditionals and loops. During execution, Luna can interact with input and output streams, read from files, and perform other operations as needed.\n\n4. **Runtime Environment**: Luna provides a runtime environment that includes built-in functions, libraries, and data structures. Developers can utilize these features to perform common tasks without having to implement them from scratch.\n\nLuna's interpreter handles the execution of code dynamically, allowing for flexibility and quick development cycles. This dynamic nature makes it suitable for scripting tasks and rapid prototyping. It also supports concurrency and asynchronous programming using mechanisms like coroutines or event-driven programming.\n\nOverall, Luna aims to provide an elegant and productive programming experience, enabling developers to write clean and expressive code while leveraging the power of the underlying interpreter to execute their programs efficiently.\n\u003ch2 name=\"why-choose\"\u003e\u0026bull; 🤔 Why Luna?\u003c/h2\u003e\n\n**Most developers choose us because of the \u003cu\u003eFollowing Reasons:\u003c/u\u003e**\n+ Luna offers a clean and intuitive syntax that promotes readability and ease of understanding.\n+ The language prioritizes simplicity and productivity, allowing developers to write code more efficiently.\n+ Luna provides powerful abstractions and built-in libraries, reducing the need for extensive boilerplate code.\n+ It supports multiple programming paradigms, including procedural, object-oriented, and functional programming.\n+ Luna's focus on elegance and flexibility makes it an excellent choice for building a wide range of applications, from web development to system programming.\n\u003cbr\u003e\n\n\u003ch2 name=\"why-choose\"\u003e\u0026bull; 🤖 How does Luna 🌙 function?\u003c/h2\u003e\n\nLuna's functioning follows a precise sequence: first, the written code undergoes **tokenization**, breaking it into individual tokens. These tokens are then **parsed** to form *statements*, which are organized into an **Abstract Syntax Tree (AST)**. This AST is then preprocessed, embedding any inline code fragments. The interpreter then steps in, evaluating the AST and executing the embedded code, resulting in a final result object known as a **Runtime Value**. This sequential process ensures that the code's logic is accurately understood, processed, and executed, producing the desired outcomes in Luna's unique programming environment.\n\n\u003cdiv align=\"center\"\u003e\n\n### Luna Diagram representing the Architecture Overview\n\n\u003cimg src=\"https://github.com/rhpo/Luna/assets/69460661/6f390f7f-8a43-41c9-9765-6ec50fbf8b47\" width=\"700\"\u003e\n \n\u003c/div\u003e\n\n### Red flags 🚩:\n\n**Luna** is 7.28x slower than **Python** (exactly 7.28060546875x)\n\nRelation between the runtime of Luna $(t_{l})$ and the runtime of Python $(t_{p})$ and the Luna-Python Time Scalar $(\\Delta_{l,p} \\approx 7.28060546875)$\n\nLike so: $t_{p}(t_{l}) = \\Delta_{l,p} * t_{l}$\n\nLuna has a max of recursive function call of $n = 2428 \\pm \\Delta R, \\ \\ \\Delta R \\in \\mathbb{Z}, \\ \\ |\\Delta R| \\approx 50$ OR $(\\frac{11}{100})$ of the max recursive call of JS (the motherlang).\n\n**UPDATE** 🔥: When **Compiled**, **Luna** gets **20x faster** than *Python* ⚡!\n\n\u003cbr\u003e\n\u003cbr\u003e\n\n____\n\n\n\u003ch1 name=\"getting-started\"\u003e\u0026bull; 🛠️ Getting Started\u003c/h1\u003e\n\u003cstrong name=\"nodejs\"\u003e\n\u0026nbsp;\u0026nbsp;🛠️ Install the Luna API 🌙\u003c/i\u003e :\n\u003c/strong\u003e\n\u003cbr\u003e\u003cbr\u003e\n\n```console\nluna:~$ npm i -g lunascript  # Installation (API \u0026 CLI)...\nluna:~$ luna --help          # Show Help Menu...\n```\n\n\u003cstrong name=\"web\"\u003e\n\u0026nbsp;\u0026nbsp;🌐 API \u003cstrong\u003e\u0026bull; TypeScript\u003c/strong\u003e\u003c/strong\u003e\n\u003cbr\u003e\u003cbr\u003e\n\n ```ts\nimport { Luna, ... } from 'lunascript';\n\nlet script = `\n   name = input(\"What's your name? \");\n   print(\"Hello, {name}!\")\n`;\n\nlet luna = new Luna();\nlet output = luna.run(lunascript);\n\nconsole.log(output); // object {RuntimeValue}\n```\n\u003cbr\u003e\n\u003ch1 name=\"examples\"\u003e\u0026bull; 🕹️ Code Examples\u003c/h1\u003e\n\n#### ✱ Functions in Luna:\n```rust\n\nfn read book {\n\n  print(\"Reading {book}...\")\n}\n\nread(\"Luna Docs\") # Reading Luna Docs...\n\n```\n\n#### ✱ Functions with default values:\n```rust\n\nfn sum x=(1) y=(1) {\n  if isdef x \u0026\u0026 isdef y: x + y\n  else null\n}\n\nprint(sum(2, 4)) # 6\n```\n\n#### ✱ Constant Definition:\n```rust\n\n# Defining a constant\npi: const = 3.141\n\nfn area r {\n  pi * r ** 2\n}\n\nprint(area(2))\n\n```\n\n#### ✱ Reactivity in Luna:\n```rust\n\n# Reactivity\n\na = \"foo\"\n\nb: react\u003ca\u003e = lambda {\n  a.replace(\"o\", '')\n}\n\nprint(b) # \"f\"\n\na = \"Hellooo\" # // Reactivity... b's function got triggered\n\nprint(b) # \"Hell\"\n\n```\n\n#### ✱ Anonymous functions Assignment:\n```rust\n\n# User defined function:\nfn sum x y {\n  x + y\n}\n\n# Function assigned to variable\nsum = fn sum x y {\n  x + y\n}\n\n# Anonymous function:\n\na = lambda x y {\n  x + y\n}\n\n# OR: Add a colon after the fn keyword ':'\na = fn: x y {\n  x + y\n}\n\n# Inline function:\n\nfn sum x y: x + y\n\n# Inline anonymous function:\nsum = lambda x y: x + y\n# OR:\nsum = fn: x y: x + y\n\n# Anonymous function without arguments:\nf = lambda: print('hello!')\nf =     fn::print('hello!')\n\n```\n\n#### ✱ Actions in Luna 🌙\n```rust\n# Note:\na = \"foo\"\n\n# is same as:\n\na: var = \"foo\"\n\n# Those are called Actions, and the variable's action is \"var\" by default...\n\n# Constant:\na: const = 2.718\n\na = 2 # NameError: Assignment to constant variable 'a'.\n```\n\n#### ✱ Use-case of Luna's Reactivity feature:\n```rust\n# Reactivity\n\nx = 1\n\ndoubled: react\u003cx\u003e = x * 2\n\nx = 2\n\nprint(doubled)   // Output: `4`\n\n```\n\n#### ✱ Export variables \u0026 functions:\n```rust\n\n// Export function:\nout fn sum x y {\n^^^\n   return x + y  \n}         \n\n// Export variable (using the out action):\nx: out = 5\n   ^^^        \n```\n\n#### ✱ Importing variables \u0026 functions:\n```rust\n\n// Import a module:\nuse \"maths.lnx\" as math;\n\n// Import specific components:\nuse (cos, sin as Sinus, tan, PI as pi) from \"math.lnx\";   // Modules have extension \".lnx\"...\n\n\n// Call a file without importing it:\ntap \"file.ln\";\n\n// Embedding a file into the current code (code-preprocessor):\nembed \"file.ln\";\n```\n\n#### ✱ Implementing Math in Luna:\n\n$$\\Huge e^x = \\sum_{n=0}^{\\infty} \\frac{x^n}{n!}$$\n```rust\n\n# The Maclaurin series of the exponential function e^x:\n\nuse (fact as factorial) from \"factorial.lnx\"\n\nfn expo x {\n  precision = 100\n  result = 0\n\n  n = 0\n  while n \u003c precision {\n\n    result += x**n / factorial(n)\n\n    n += 1\n  }\n\n  result\n}\n\nprint(expo(0)) # 1\n\n```\n\n#### ✱ Implementing Luna's reactivity with Math:\n$$\\Huge \\psi(\\theta) = \\frac{e^{2\\theta}}{log(4\\theta)} + \\theta^2 + 2\\theta!$$\n```rust\n\nuse (E as e, factorial, Log as log) from \"math.lnx\";\n\ntheta = 1\n\npsi_theta: react\u003ctheta\u003e = (e ** 2 * theta) / log(4 * theta) + theta**2 + factorial(2 * theta)\nprint(psi_theta)   // Output: `15.2729565249...`\n\ntheta = 2\nprint(psi_theta)   // Output: `68.4570428413...`\n\n```\n\n\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\n\n\u003ch1 name=\"docs\"\u003e📖 Documentation\u003c/h1\u003e\n\nYou can check **Luna** documentation [here (GitHub)](https://github.com/rhpo/luna/tree/main/docs).\n\n\u003cbr\u003e\n\u003ch1 name=\"api\"\u003e📚 API\u003c/h1\u003e\n\nYou can check **Luna** *Application Programming Interface* (API) [here (GitHub)](https://github.com/rhpo/luna/tree/main/api).\n\n\u003cbr\u003e\n\u003ch1 name=\"license\"\u003e📜 Licence (MIT)\u003c/h1\u003e\n\n*Copyright (c) 2022 Luna (https://www.github.com/rhpo/luna) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:*\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\n```THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.```\n\n\u003cbr\u003e\n\u003ch1 name=\"contact\"\u003e👋 Contact:\u003c/h1\u003e\n    \u003cp\u003e\u0026bull; Email \u0026nbsp;\u0026horbar;\u0026nbsp; \u003ca href=\"mailto:luna@ramey.ml\"\u003eluna@ramey.ml\u003c/a\u003e\u003c/p\u003e\n    \u003cp\u003e\u0026bull; Phone Number \u0026nbsp;\u0026horbar;\u0026nbsp; \u003ca href=\"tel:+213553238410\"\u003e+213 553 23 84 10\u003c/a\u003e\u003c/p\u003e\n    \u003cp\u003e\u0026bull; Discord \u0026nbsp;\u0026horbar;\u0026nbsp; \u003ca href=\"https://discord.gg/XXa7PpnMbq\"\u003e(Luna  ―  High-level programming language)\u003c/a\u003e\u003c/p\u003e\n\u003cbr\u003e\n\u003ch1 name=\"about-author\"\u003e👤 About the author:\u003c/h1\u003e\n\u003cul\u003e\n    \u003cp\u003e\u0026bull; Name \u0026nbsp;\u0026horbar;\u0026nbsp; Ramy Hadid.\u003c/p\u003e\n    \u003cp\u003e\u0026bull; Nationality \u0026nbsp;\u0026horbar;\u0026nbsp; 🇩🇿 Algeria.\u003c/p\u003e\n    \u003cp\u003e\u0026bull; Linkedin \u0026nbsp;\u0026horbar;\u0026nbsp; \u003ca href=\"https://www.linkedin.com/in/ramy-hadid-15aa70243/\"\u003e(Ramy Hadid)\u003c/a\u003e\u003c/p\u003e\n    \u003cp\u003e\u0026bull; Discord \u0026nbsp;\u0026horbar;\u0026nbsp; \u003ca href=\"https://discord.com/users/751901651622690927\"\u003e@rhpo\u003c/a\u003e\u003c/p\u003e\n    \u003cp\u003e\u0026bull; GitHub \u0026nbsp;\u0026horbar;\u0026nbsp; \u003ca href=\"https://www.github.com/rhpo\"\u003e@rhpo\u003c/a\u003e\u003c/p\u003e\n    \u003cp\u003e\u0026bull; Email (personal) \u0026nbsp;\u0026horbar;\u0026nbsp; \u003ca href=\"mailto:ramyhadid.js@gmail.com\"\u003eramyhadid.js@gmail.com\u003c/a\u003e\u003c/p\u003e\n    \u003cp\u003e\u0026bull; Programming Languages \u0026nbsp;\u0026horbar;\u0026nbsp; C#/C/C++ \u0026bull; GoLang \u0026bull; TypeScript \u0026bull; NodeJS \u0026bull; LunaScript.\u003c/p\u003e\n\u003c/ul\u003e\n\n\u003cbr\u003e\n\n\u003e Written by \u003ca href=\"https://www.github.com/rhpo\"\u003e@rhpo\u003c/a\u003e with ❤️.\n\n[contributors-shield]: https://img.shields.io/github/contributors/rhpo/luna?style=for-the-badge\n[contributors-url]: https://github.com/rhpo/luna/graphs/contributors\n[forks-shield]: https://img.shields.io/github/forks/rhpo/luna?style=for-the-badge\n[forks-url]: https://github.com/rhpo/luna/network/members\n[stars-shield]: https://img.shields.io/github/stars/rhpo/luna?style=for-the-badge\n[stars-url]: https://github.com/rhpo/luna/stargazers\n[issues-shield]: https://img.shields.io/github/issues/rhpo/luna?style=for-the-badge\n[issues-url]: https://github.com/rhpo/luna/issues\n[license-shield]: https://img.shields.io/github/license/rhpo/luna?style=for-the-badge\n[license-url]: https://github.com/rhpo/luna/blob/master/LICENSE\n[linkedin-shield]: https://img.shields.io/badge/-LinkedIn-black.svg?style=for-the-badge\u0026logo=linkedin\u0026colorB=555\n[discord-shield]: https://img.shields.io/discord/1006994262174478377?color=7289da\u0026label=Discord\u0026logo=discord\u0026logoColor=white\u0026style=for-the-badge\n[discord-url]: https://discord.gg/XXa7PpnMbq\n[linkedin-url]: https://www.linkedin.com/in/ramy-hadid-15aa70243/\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frhpo%2Fluna","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frhpo%2Fluna","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frhpo%2Fluna/lists"}