{"id":20515052,"url":"https://github.com/vimkat/kitty","last_synced_at":"2025-03-05T23:17:34.861Z","repository":{"id":131809591,"uuid":"545345507","full_name":"vimkat/kitty","owner":"vimkat","description":"Homebase of the ^w^ (pronunciation: kɪtɪ) programming language","archived":false,"fork":false,"pushed_at":"2023-04-21T22:07:29.000Z","size":11,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-16T09:52:13.866Z","etag":null,"topics":["esolang","esoteric-language","hacktoberfest","kitty","programming-language"],"latest_commit_sha":null,"homepage":"https://vimkat.dev/kitty","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vimkat.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2022-10-04T07:47:16.000Z","updated_at":"2023-12-13T17:22:08.000Z","dependencies_parsed_at":"2023-06-12T20:45:52.685Z","dependency_job_id":null,"html_url":"https://github.com/vimkat/kitty","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vimkat%2Fkitty","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vimkat%2Fkitty/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vimkat%2Fkitty/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vimkat%2Fkitty/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vimkat","download_url":"https://codeload.github.com/vimkat/kitty/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242117692,"owners_count":20074438,"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":["esolang","esoteric-language","hacktoberfest","kitty","programming-language"],"created_at":"2024-11-15T21:19:30.432Z","updated_at":"2025-03-05T23:17:34.839Z","avatar_url":"https://github.com/vimkat.png","language":"Go","readme":"# ^w^ (pronunciation: kɪtɪ)\n\nHomebase of the `^w^` (pronunciation: kɪtɪ) programming language\n\n`^w^` is a 2D langage base on [\u003e\u003c\u003e](https://esolangs.org/wiki/Fish).\nThat means it ...\n\n- is stacc based (everything on the stacc is a float64 and can be converted at will)\n- uses number in hex (but offers literals in any base ... soon™)\n- supports null-terminated strings in various functions\n- offers a way to call dynamic libraries (macOS and Linux for now ... also soon™)\n\nAlso, be careful! The language is still in **EARLY DEVELOPMENT**.\nThings might break. Things might change. You might have a bad time. You might hate yourself.\nBut please remember: you're dealing with a kitty! It needs love and it purrs! \u003c3\n\n---\n\n## Hello World\n\n```kitty\n\"Hello World\"0rP;\n```\n\n\n## Numbers and Math\n\nThe following characters are recognized as (base 16) digits where each digit pushes itself onto the stacc.\n\n```kitty\n0123456789ABCDEF\n```\n\nYour stacc now looks like this:\n\n```\n[ 0 1 2 3 4 5 6 7 8 9 A B C D E F ]\n                                ^\n                                SP (stacc pointer), F is referred to as TOS (top of stacc)\n```\n\n\n### Opurrators\n\nOpurrators pop `y` then `x` and push `x [op] y` bacc onto the stacc.\nHere are some basic opurrators you might find useful (and also all that kitty supports):\n\n```kitty\n3 4 + ; addition        TOS: 7\n3 4 - ; subtraction     TOS: -1\n3 4 * ; multiplication  TOS: 12 (or 0xC)\n3 4 / ; division        TOS: 0.75\n3 4 % ; modulo          TOS: 3\n```\n\n\n## Input and Output\n\nTo make your program actually useful it has to be able to receive input for an opurrating cat or give output bacc to said cat.\nYou can use the following instructions:\n\n- `i` reads a caracter from stdin and pushes it onto the stacc\n\t- reading a number character (`[0-9]`) will push the actual number\n\t- reading anything else (e. g. `purr`) will push the unicode representation\n- `o` outputs TOS interpreted as a unicode charactater\n- `n` outputs TOS as a number\n\n\n## How to write code\n\n`^w^` code is written on an infinite grid called *The Litterbox* where the top left corner has coordinates `(0,0)`.\nExecution follows a laser pointer (LP) starting out at `(0,0)` facing to the right.\nIn case the LP is moved to a negative coordinate (with `.`) the `^w^` gets mad and shall hiss at the opurrating cat.\nNegative *Litterbox* coordiantes may be used with the `g` and `p` instructions to store arbitrary data.\n\nThe direction may be changed with the instructions `← ↓ ↑ →`.\nIf the LP goes outside of the bounds of *The Litterbox* defined by the code, it wraps around in the current direction.\nThere is only one error message, that being `*HISS!*`\n\nSpace characters are ignored, making them suitable to structure your *Litterbox*.\nMultiple consecutive spaces are to be treated as a single space, which is also optional, making all three of the following programs equivalent:\n```kitty\n12+n;\n1 2 + n;\n1 2   +   n                     ;\n```\nThey all take 5 steps to execute and terminate.\n\n\n## Flow Control\n\nThe following opurrations can be used to make decisions in your code:\n\n- `\u003c`, `\u003e`, `=`, `≤`, `≥` each pop `y`, then `x`, and push a 0 if the condition defined by `x [op] y` is false, and a 1 if it is true\n- `?` pops the stacc\n\t- if a nonzero value is read, the immediately following instruction is executed\n\t- if a zero is read instead, the following instruction is skipped and the one thereafter is executed instead\n- `!` skips the next instruction unconditionally\n- `.` pops `y`, then `x`, and moves the LP to `(x, y)`, making that the next instruction to be executed\n- `;` allows `^w^` to catch the elusive dot produced by the LP, thus making it curl up and sleep happily ever after\n\n\n## Other instructions\n\n- `:` duplicates the TOS\n- `l` pushes the length of the stacc onto the stacc\n\n`TODO @ethan: List other \u003e\u003c\u003e commands that we also have in ^w^ (since: 2022-10-10)`\n\n\n## Examples\n\nHere are some examples to make things clearer to understand :P\n\n\n### Add two numbers\n\n```kitty\nii+n;\n```\n\n\n### Flooring a float\n\n```kitty\nii/:1%-n;\n```\n\n---\n\nMade with \u003c3 by two crazy catbois\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvimkat%2Fkitty","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvimkat%2Fkitty","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvimkat%2Fkitty/lists"}