{"id":13838108,"url":"https://github.com/NickBarnes/inside-ocaml","last_synced_at":"2025-07-10T21:31:22.185Z","repository":{"id":144398991,"uuid":"616569681","full_name":"NickBarnes/inside-ocaml","owner":"NickBarnes","description":"Documentation of the OCaml implementation","archived":false,"fork":false,"pushed_at":"2023-03-21T09:53:44.000Z","size":12,"stargazers_count":52,"open_issues_count":0,"forks_count":0,"subscribers_count":8,"default_branch":"main","last_synced_at":"2024-08-05T15:07:10.256Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-2.1","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NickBarnes.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}},"created_at":"2023-03-20T16:37:09.000Z","updated_at":"2024-07-24T16:36:53.000Z","dependencies_parsed_at":"2024-01-15T18:46:42.688Z","dependency_job_id":"2c33ab6d-0cdf-4ff0-8877-cc561d0369dd","html_url":"https://github.com/NickBarnes/inside-ocaml","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/NickBarnes%2Finside-ocaml","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NickBarnes%2Finside-ocaml/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NickBarnes%2Finside-ocaml/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NickBarnes%2Finside-ocaml/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NickBarnes","download_url":"https://codeload.github.com/NickBarnes/inside-ocaml/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225657168,"owners_count":17503535,"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-08-04T15:01:37.531Z","updated_at":"2024-11-21T01:30:38.213Z","avatar_url":"https://github.com/NickBarnes.png","language":null,"readme":"# Inside OCaml\n## Documentation of the OCaml implementation\n\nThis repo contains documentation of the [OCaml](https://ocaml.org/)\n[language implementation](https://github.com/ocaml/ocaml). It may also\ngrow to include notes on other parts of the broader OCaml ecosystem,\nsuch as [opam](https://opam.ocaml.org/),\n[dune](https://github.com/ocaml/dune),\n[odoc](https://ocaml.github.io/odoc/),\n[OCurrent](https://github.com/ocurrent/ocurrent), and so on.\n\nI started this repo after starting work at\n[Tarides](https://tarides.com/) in the OCaml compiler backend group,\nwith particular focus on the garbage collector and related systems. I\ndiscovered there was very little structured documentation about the\nsystem, so I started writing documentation for my own use. Now I am\nstarting a repo to contain and structure those notes. So there is\nlikely to be a focus on low-level aspects, at least at the outset, and\nthe repo is likely to grow in an ad-hoc way depending on what I'm\nlooking at.\n\nThe primary intended readership is primarily OCaml developers and\ncontributors. Hopefully this repo would also be of use to anyone\ninterested in language compilers and runtimes.\n\nForks and pull requests are absolutely welcome. The license is LGPL\nv2.1 for maximum compatibility with [the ocaml/ocaml repo](https://github.com/ocaml/ocaml).\n\n## Overview\n\n- TODO: bytecode, native code, and runtime;\n- TODO: essence of heaps and stacks;\n- TODO: 4 vs 5; about Multicore OCaml.\n\n## Object Layout\n\n- TODO: Paste in my lengthy notes about mlvalues etc here.\n\n## Stacks (and Exceptions?)\n\n- TODO: ABI incompatibility;\n- TODO: C stack vs Caml stack;\n- TODO: exception handler records;\n- TODO: exception propagation;\n- TODO: backtraces, frametables, debuginfo.\n- TODO: calling convention, currying, de-currying.\n\n## Domains, Threads, and Effects\n\n- TODO: memory model;\n- TODO: systhreads;\n- TODO: domains;\n- TODO: backup threads;\n- TODO: effect handling.\n\n## The Heap and Garbage Collector\n\n- TODO: Minor heap, pointer-bump allocation;\n- TODO: major heap(s);\n- TODO: GC phases;\n- TODO: finalisation;\n- TODO: weakness.\n\n## Source Code and Build System\n\n- TODO: Seb's braindump comes here.\n\n## Compiler Structure\n\n- TODO: phases;\n- TODO: files;\n\n## Debugging OCaml\n\n- TODO: gdb, rr, lldb. gdb-macros (which hopefully I will have updated by\n  the time I write this part).","funding_links":[],"categories":["Others"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FNickBarnes%2Finside-ocaml","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FNickBarnes%2Finside-ocaml","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FNickBarnes%2Finside-ocaml/lists"}