{"id":16367268,"url":"https://github.com/nyxcode/ketamine","last_synced_at":"2026-02-02T07:41:54.212Z","repository":{"id":38213130,"uuid":"249870859","full_name":"NyxCode/Ketamine","owner":"NyxCode","description":"embedded dynamically typed scripting language","archived":false,"fork":false,"pushed_at":"2023-01-20T22:30:33.000Z","size":784,"stargazers_count":0,"open_issues_count":24,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-07-04T20:20:47.120Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","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/NyxCode.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}},"created_at":"2020-03-25T02:44:44.000Z","updated_at":"2020-04-03T14:27:35.000Z","dependencies_parsed_at":"2023-02-12T06:15:31.350Z","dependency_job_id":null,"html_url":"https://github.com/NyxCode/Ketamine","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/NyxCode/Ketamine","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NyxCode%2FKetamine","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NyxCode%2FKetamine/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NyxCode%2FKetamine/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NyxCode%2FKetamine/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NyxCode","download_url":"https://codeload.github.com/NyxCode/Ketamine/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NyxCode%2FKetamine/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263636473,"owners_count":23492267,"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":[],"created_at":"2024-10-11T02:49:17.047Z","updated_at":"2026-02-02T07:41:49.195Z","avatar_url":"https://github.com/NyxCode.png","language":"Rust","readme":"# ketamine\ndynamic embeddable scripting language, written in rust.\n\n### types\n```\ninteger = 1;\nfloat = 3.14;\nboolean = true;\nstring = \"hello world!\";\narray = [1, 2, 3];\nobject = { key: \"value\" };\nfib = function(n) {\n   if (n \u003c 3) {\n       1\n   } else {\n       fib(n - 2) + fib(n - 1)\n   }\n};\n```\n\n\n### control flow\n```\nage = if (person.age \u003c 15) {\n  \"child\"\n} else if (person.age \u003c 18) {\n  \"adolescent\"\n} else {\n  \"adult\n};\n```\n```\nfor (person in people) {\n  print(\"Hello\", person.first_name);\n};\n```\n\n```\nresult = while (true) {\n  next = try_again();\n  if (next != null) {\n      break next;\n  };\n}\n```\n\n### features\n- embeddable \u0026 extendable  \n  ```rust\n  fn abs(this: i64, args: Vec\u003cValue\u003e) -\u003e Result\u003cValue, String\u003e {\n      Ok(Value::Integer(this.abs()))\n  }\n  \n  interpreter.prototype_function(\"abs\", abs);\n  assert_eq!(interpreter.eval(\"-10.abs()\").unwrap() == Value::Integer(10));\n  ```\n- first-class functions\n- implicit `return`  \n  ```\n  with_return    = function() { return 1; };\n  without_return = function() { 1 };\n  ```\n- implicit `this`  \n  ```\n  counter = {\n      count: 0,\n      increment: function() {\n          this.count = this.count + 1;\n      }\n  };\n  counter.increment();\n  ```\n- extend types using prototypes  \n  ```\n  $integer.abs = function() {\n      if (this \u003c 0) {\n          -this\n      } else {\n          this\n      }\n  }\n  ```\n- range expressions  \n  ```\n  for (x in 0..10) { ... };\n  ```","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnyxcode%2Fketamine","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnyxcode%2Fketamine","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnyxcode%2Fketamine/lists"}