{"id":13726897,"url":"https://github.com/ocaml/ocamlunix","last_synced_at":"2025-04-13T04:20:25.869Z","repository":{"id":16889352,"uuid":"19650021","full_name":"ocaml/ocamlunix","owner":"ocaml","description":"Unix system programming in OCaml book","archived":false,"fork":false,"pushed_at":"2018-04-05T07:43:09.000Z","size":8508,"stargazers_count":288,"open_issues_count":5,"forks_count":22,"subscribers_count":30,"default_branch":"master","last_synced_at":"2025-03-24T09:43:44.270Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://ocaml.github.io/ocamlunix/","language":"TeX","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ocaml.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}},"created_at":"2014-05-10T19:27:56.000Z","updated_at":"2025-02-23T20:26:54.000Z","dependencies_parsed_at":"2022-08-07T09:00:05.417Z","dependency_job_id":null,"html_url":"https://github.com/ocaml/ocamlunix","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ocaml%2Focamlunix","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ocaml%2Focamlunix/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ocaml%2Focamlunix/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ocaml%2Focamlunix/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ocaml","download_url":"https://codeload.github.com/ocaml/ocamlunix/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248662221,"owners_count":21141534,"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-03T01:03:30.442Z","updated_at":"2025-04-13T04:20:25.820Z","avatar_url":"https://github.com/ocaml.png","language":"TeX","funding_links":[],"categories":["TeX"],"sub_categories":[],"readme":"ocamlunix — Unix System Programming in OCaml\n-------------------------------------------------------------------------------\nRelease !!VERSION!!\n\nocamlunix is the english translation of Xavier Leroy and Didier Rémy's\n[Unix system programming course][1].\n\nocamlunix is distributed under a Creative Commons by-nc-sa\nlicense. For the details see the file [`LICENSE`](LICENSE).\n\n[1]: http://gallium.inria.fr/~remy/camlunix/ \n\nProject home page : http://ocaml.github.io/ocamlunix  \nContact \u0026 typos : `Daniel Bünzli daniel.buenzl i@erratique.ch`\n\n\n## Prerequisites\n\nTo generate the documents you will need in your `$PATH` :\n\n1. An OCaml distribution with ocamlbuild (i.e. at least version 3.10).\n2. A recent TeX distribution (tested with TeX Live 2008).\n3. And for the HTML version: HeVeA (tested with version 1.10),\n   ghostscript (tested with version 8.63)\n\n\n## Document generation\n\nFrom the root directory of the distribution the following commands can\nbe issued to build the various versions of the document (ocamlbuild\ncan be used directly instead of `./build`)\n\n    \u003e ./build ocamlunix.pdf    # PDF version\n    \u003e ./build ocamlunix.html   # Monolithic HTML\n    \u003e ./build index.html       # HTML by chapters\n\nThe results are in the directory `_build/src`. To generate all versions\nof the document you can simply type :\n\n    \u003e ./build\n\nThe result can be installed in the `$INSTALLDIR` directory by typing :\n\n    \u003e INSTALLDIR=/path/to/instal/dir ./build install\n\nif `$INSTALLDIR` is left unspecified `+ocamlunix` is used. \n\nThe target `install` doesn't install the archive with the sources, use\ninstall-distrib for that. For example to publish to the website do :\n\n     \u003e INSTALLDIR=/path/to/www ./build install-distrib\n\nThe `_build` directory can be removed by typing\n\n     \u003e ./build clean\n\n\n## Quick guide to the distribution\n\n`src/` contains the tex sources from which the HTML version and the\nPDF version are generated. Most chapters are in their own file. They\nare aggregated by the master file `ocamlunix.tex` which also contains\nuseful macros common to both versions. This is also the place where\nyou'll want to comment out chapters while working on a specific one to\nreduce compilation times.\n\nLayout and macros distinctions between the HTML and the PDF version\nare respectively in the file prelude.hva and prelude.sty. Minor layout\nand content distinctions are performed using the macros `\\ifhtml`,\n`\\ifhtmlelse and \\ifnothtml`.\n\n\n### Pictures\n\nPictures are created with the PGF/TikZ package. For the HTML version\nthey are first extracted via the preview package (invoke the target\n`ocamlunix-image.pdf`) and then converted to pngs with ghostscript\n(invoke the target `ocaml-image.pngs`). This is handled automatically\nwhen one of the HTML versions is build.\n\n\n### Code extraction\n\nThe environments listingcodefile and codefile (the contents of the\nlatter being invisible in the final document) allow to write code in\nthe file specified as an argument to the environment. This code is in\nfact written to the file `_build/src/ocamlunix.code`. By building the\ntarget:\n\n    \u003e ./build ocamlunix.extract\n\nThe contents of this file will be extracted to the code/ directory of\nthe distribution. Once this is done programs can be built e.g. by\ntyping :\n\n    \u003e ./build echo.native\n\nThe result will be in the `_build/code/` directory. If you use the\n`build` script (vs. ocamlbuild directly), trying to build a `*.native`\nor `*.byte` will automatically build the `ocamlunix.extract` target.\n\n\n## Translation credits\n\n* Chapter — translator / proofreader\n* Generalities — Eliot Handelman / Prashanth Mundkur\n* Files — Richard Paradies (reworked by Daniel C. Buenzli) /\n  Erik de Castro Lopo\n* Processes — Mark Wong-VanHaren / Anil Madhavapeddy\n* Signals — Thad Meyer / David Allsopp\n* Pipes — Daniel C. Buenzli / John Clements\n* Sockets — Till Varoquaux, Priya Hattiangdi and Prashanth Mundkur \n  (reworked by Daniel C. Buenzli) / Prashanth Mundkur\n* Threads — Eric Cooper / Prashanth Mundkur\n* Remaining text — Daniel C. Buenzli / Prashanth Mundkur\n\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Focaml%2Focamlunix","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Focaml%2Focamlunix","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Focaml%2Focamlunix/lists"}