Skip to content

Commit

Permalink
[scrape.yml] New OCaml Planet blog posts and videos from watch.ocaml.org
Browse files Browse the repository at this point in the history
  • Loading branch information
christinerose authored Dec 14, 2024
1 parent 8b3e85d commit b961572
Show file tree
Hide file tree
Showing 85 changed files with 5,566 additions and 0 deletions.
12 changes: 12 additions & 0 deletions data/planet/cwn/ocaml-weekly-news-03-dec-2024.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
title: OCaml Weekly News, 03 Dec 2024
description:
url: https://alan.petitepomme.net/cwn/2024.12.03.html
date: 2024-12-03T12:00:00-00:00
preview_image:
authors:
- Caml Weekly News
source:
---

<ol><li><a href="https://alan.petitepomme.net/cwn/2024.12.03.html#1">Good example of handwritten Lexer + Recursive Descent Parser?</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.12.03.html#2">Boulder Dash in OCaml</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.12.03.html#3">Js_of_ocaml 5.9.0</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.12.03.html#4">Liquidsoap 2.3.0</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.12.03.html#5">Bytesrw 0.1.0 &ndash; Composable byte stream readers and writers</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.12.03.html#6">dream-html and pure-html 3.5.2</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.12.03.html#7">Second beta release of OCaml 5.3.0</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.12.03.html#8">New release of Monolith</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.12.03.html#9">Jsont 0.1.0 &ndash; Declarative JSON data manipulation for OCaml</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.12.03.html#10">Tiny educational concurrent I/O and promises library</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.12.03.html#11">Eliom 11.1: Towards Web Assembly support</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.12.03.html#12">Areas and Adversaries</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.12.03.html#13">MariaDB 1.2.0</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.12.03.html#14">Proposed Package Archiving Policy for the opam Repository</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.12.03.html#15">capnp-rpc 2.0</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.12.03.html#16">Other OCaml News</a></li></ol>
12 changes: 12 additions & 0 deletions data/planet/cwn/ocaml-weekly-news-05-nov-2024.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
title: OCaml Weekly News, 05 Nov 2024
description:
url: https://alan.petitepomme.net/cwn/2024.11.05.html
date: 2024-11-05T12:00:00-00:00
preview_image:
authors:
- Caml Weekly News
source:
---

<ol><li><a href="https://alan.petitepomme.net/cwn/2024.11.05.html#1">GPTar 1.0.0</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.11.05.html#2">opam 2.3.0~rc1</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.11.05.html#3">Call for Contributions: BOB 2025 (Berlin, March 14 - Deadline Nov 15)</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.11.05.html#4">First beta release for OCaml 5.3.0</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.11.05.html#5">dune 3.16</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.11.05.html#6">Other OCaml News</a></li></ol>
12 changes: 12 additions & 0 deletions data/planet/cwn/ocaml-weekly-news-08-oct-2024.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
title: OCaml Weekly News, 08 Oct 2024
description:
url: https://alan.petitepomme.net/cwn/2024.10.08.html
date: 2024-10-08T12:00:00-00:00
preview_image:
authors:
- Caml Weekly News
source:
---

<ol><li><a href="https://alan.petitepomme.net/cwn/2024.10.08.html#1">Releases of fpath-sexplib0, fpath-base, loc, file-rewriter, sexps-rewriter and provider</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.10.08.html#2">Build a project without Stdlib</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.10.08.html#3">obatcher: Framework for building efficient concurrent services</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.10.08.html#4">DBLP query program and library</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.10.08.html#5">cudajit: Bindings to the ~cuda~ and ~nvrtc~ libraries</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.10.08.html#6">YOCaml, a framework for static site generator</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.10.08.html#7">oepub 0.1.0 : A library to parse epub files</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.10.08.html#8">ppx_deriving_router &mdash; type safe routing for Dream and Melange</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.10.08.html#9">Mica, a PPX that automates differential testing for OCaml modules</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.10.08.html#10">Simplified Android cross-compiler with DkML</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.10.08.html#11">Other OCaml News</a></li></ol>
12 changes: 12 additions & 0 deletions data/planet/cwn/ocaml-weekly-news-10-dec-2024.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
title: OCaml Weekly News, 10 Dec 2024
description:
url: https://alan.petitepomme.net/cwn/2024.12.10.html
date: 2024-12-10T12:00:00-00:00
preview_image:
authors:
- Caml Weekly News
source:
---

<ol><li><a href="https://alan.petitepomme.net/cwn/2024.12.10.html#1">Release of cppo 1.8.0</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.12.10.html#2">New releases of Merlin and OCaml-LSP</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.12.10.html#3">New release of baby</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.12.10.html#4">Release of Saturn 1.0</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.12.10.html#5">Dune dev meeting</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.12.10.html#6">Dune 3.17</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.12.10.html#7">Spec and interface to declare dependencies in an OCaml script</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.12.10.html#8">Other OCaml News</a></li></ol>
12 changes: 12 additions & 0 deletions data/planet/cwn/ocaml-weekly-news-12-nov-2024.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
title: OCaml Weekly News, 12 Nov 2024
description:
url: https://alan.petitepomme.net/cwn/2024.11.12.html
date: 2024-11-12T12:00:00-00:00
preview_image:
authors:
- Caml Weekly News
source:
---

<ol><li><a href="https://alan.petitepomme.net/cwn/2024.11.12.html#1">Picos &mdash; Interoperable effects based concurrency</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.11.12.html#2">findlib-1.9.7</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.11.12.html#3">First release candidate for OCaml 5.2.1</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.11.12.html#4">mirage-swapfs</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.11.12.html#5">Dune dev meeting</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.11.12.html#6">Other OCaml News</a></li></ol>
12 changes: 12 additions & 0 deletions data/planet/cwn/ocaml-weekly-news-15-oct-2024.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
title: OCaml Weekly News, 15 Oct 2024
description:
url: https://alan.petitepomme.net/cwn/2024.10.15.html
date: 2024-10-15T12:00:00-00:00
preview_image:
authors:
- Caml Weekly News
source:
---

<ol><li><a href="https://alan.petitepomme.net/cwn/2024.10.15.html#1">grep_cmt: structural search of OCaml code</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.10.15.html#2">Mutaml 0.1</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.10.15.html#3">ocaml-activitypub</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.10.15.html#4">Ortac/QCheck-STM 0.4.0 Dynamic formal verification beyond one system under test</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.10.15.html#5">Openbsd 1.0</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.10.15.html#6">Compsort - reorder files in archives for improved compression</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.10.15.html#7">Dune dev meeting</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.10.15.html#8">Other OCaml News</a></li></ol>
12 changes: 12 additions & 0 deletions data/planet/cwn/ocaml-weekly-news-19-nov-2024.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
title: OCaml Weekly News, 19 Nov 2024
description:
url: https://alan.petitepomme.net/cwn/2024.11.19.html
date: 2024-11-19T12:00:00-00:00
preview_image:
authors:
- Caml Weekly News
source:
---

<ol><li><a href="https://alan.petitepomme.net/cwn/2024.11.19.html#1">Boulder Dash in OCaml</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.11.19.html#2">Jane Street OCaml extensions &ndash; now with developer tooling!</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.11.19.html#3">opam 2.3.0 is out!</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.11.19.html#4">Installing Developer Tools with Dune</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.11.19.html#5">Dune Developer Preview Updates</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.11.19.html#6">First release of cmdlang</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.11.19.html#7">findlib-1.9.8</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.11.19.html#8">Testo 0.1.0 - a new testing framework for OCaml</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.11.19.html#9">Other OCaml News</a></li></ol>
12 changes: 12 additions & 0 deletions data/planet/cwn/ocaml-weekly-news-22-oct-2024.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
title: OCaml Weekly News, 22 Oct 2024
description:
url: https://alan.petitepomme.net/cwn/2024.10.22.html
date: 2024-10-22T12:00:00-00:00
preview_image:
authors:
- Caml Weekly News
source:
---

<ol><li><a href="https://alan.petitepomme.net/cwn/2024.10.22.html#1">opam 2.3.0~beta1</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.10.22.html#2">Dune dev meeting</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.10.22.html#3">Wildcard expansion on Windows</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.10.22.html#4">OCamlformat and GitHub actions</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.10.22.html#5">New vs. Old OCaml Academic Users Page Survey</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.10.22.html#6">New vs. Old OCaml Industrial Users Page</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.10.22.html#7">Eliom 11 and Ocsigen Start 7</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.10.22.html#8">Other OCaml News</a></li></ol>
12 changes: 12 additions & 0 deletions data/planet/cwn/ocaml-weekly-news-26-nov-2024.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
title: OCaml Weekly News, 26 Nov 2024
description:
url: https://alan.petitepomme.net/cwn/2024.11.26.html
date: 2024-11-26T12:00:00-00:00
preview_image:
authors:
- Caml Weekly News
source:
---

<ol><li><a href="https://alan.petitepomme.net/cwn/2024.11.26.html#1">OCaml 5.2.1 released</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.11.26.html#2">smaws preview release, an AWS SDK for OCaml using eio</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.11.26.html#3">ppx_deriving_ezjsonm</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.11.26.html#4">FUN OCaml now has a YouTube Channel</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.11.26.html#5">Terrateam's open source Ocaml repository</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.11.26.html#6">OUPS december 2024</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.11.26.html#7">Dune dev meeting</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.11.26.html#8">Other OCaml News</a></li></ol>
12 changes: 12 additions & 0 deletions data/planet/cwn/ocaml-weekly-news-29-oct-2024.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
title: OCaml Weekly News, 29 Oct 2024
description:
url: https://alan.petitepomme.net/cwn/2024.10.29.html
date: 2024-10-29T12:00:00-00:00
preview_image:
authors:
- Caml Weekly News
source:
---

<ol><li><a href="https://alan.petitepomme.net/cwn/2024.10.29.html#1">HOL Light released to OPAM</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.10.29.html#2">Could we add a tiny OCaml interpreter to Numworks graphical calculators?</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.10.29.html#3">opam 2.3.0~beta2</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.10.29.html#4">Editors dev-meeting #4, Thu. 31th: Search by type &agrave; la Sherlodoc &#128373;&#65039;</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.10.29.html#5">Dune dev meeting</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.10.29.html#6">Shell Completions in Dune Developer Preview</a></li><li><a href="https://alan.petitepomme.net/cwn/2024.10.29.html#7">Other OCaml News</a></li></ol>
12 changes: 12 additions & 0 deletions data/planet/dinosaure/happy-eyeballs.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
title: Happy eyeballs?!
description:
url: https://blog.osau.re/articles/happy_eyeballs.html
date: 2024-09-27T00:00:00-00:00
preview_image:
authors:
- Romain Calascibetta
source:
---

When connect() hides a lot of details.
90 changes: 90 additions & 0 deletions data/planet/emillon/introducing-tree-sitter-dune.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
---
title: Introducing tree-sitter-dune
description:
url: http://blog.emillon.org/posts/2024-07-26-introducing-tree-sitter-dune.html
date: 2024-07-26T00:00:00-00:00
preview_image:
authors:
- Etienne Millon
source:
---

<p>I made a <a href="https://tree-sitter.github.io/tree-sitter/">tree-sitter</a> plugin for
<code>dune</code> files. It is available <a href="https://github.com/emillon/tree-sitter-dune">on
GitHub</a>.</p>
<p>Tree-sitter is a parsing system that can be used in text editors.
<a href="https://dune.build/">Dune</a> is a build system for OCaml projects.
Its configuration language lives in <code>dune</code> files which use a s-expression
syntax.</p>
<p>This makes highlighting challenging: the lexing part of the language is very
simple (atoms, strings, parentheses), but it is not enough to make a good
highlighter.</p>
<p>In the following example, <code>with-stdout-to</code> and <code>echo</code> are &ldquo;actions&rdquo; that we
could highlight in a special way, but these names can also appear in places
where they are not interpreted as actions, and doing so would be confusing (for
example, we could write to a file named <code>echo</code> instead of <code>foo.txt</code>.</p>
<div class="sourceCode"><pre class="sourceCode scheme"><code class="sourceCode scheme"><span><a href="http://blog.emillon.org/feeds/ocaml.xml#cb1-1" aria-hidden="true" tabindex="-1"></a>(rule</span>
<span><a href="http://blog.emillon.org/feeds/ocaml.xml#cb1-2" aria-hidden="true" tabindex="-1"></a> (action</span>
<span><a href="http://blog.emillon.org/feeds/ocaml.xml#cb1-3" aria-hidden="true" tabindex="-1"></a> (with-stdout-to</span>
<span><a href="http://blog.emillon.org/feeds/ocaml.xml#cb1-4" aria-hidden="true" tabindex="-1"></a> foo.txt</span>
<span><a href="http://blog.emillon.org/feeds/ocaml.xml#cb1-5" aria-hidden="true" tabindex="-1"></a> (echo <span class="st">&quot;testing&quot;</span>))))</span></code></pre></div>
<p>Tree-sitter solves this, because it creates an actual parser that goes beyond
lexing.</p>
<p>In this example, I created grammar rules that parse the contents of <code>(action ...)</code> as an action, recognizing the various constructs of this DSL.</p>
<p>The output of the parser is this syntax tree with location information (for
some reason, line numbers start at 0 which is normal and unusual at the same
time).</p>
<pre><code>(source_file [0, 0] - [5, 0]
(stanza [0, 0] - [4, 22]
(stanza_name [0, 1] - [0, 5])
(field_name [1, 2] - [1, 8])
(action [2, 2] - [4, 20]
(action_name [2, 3] - [2, 17])
(file_name_target [3, 3] - [3, 10]
(file_name [3, 3] - [3, 10]))
(action [4, 3] - [4, 19]
(action_name [4, 4] - [4, 8])
(quoted_string [4, 9] - [4, 18])))))</code></pre>
<p>The various strings are annotated with their type: we have stanza names
(<code>rule</code>), field names (<code>action</code>), action names (<code>with-stdout-to</code>, <code>echo</code>), file
names (<code>foo.txt</code>), and plain strings (<code>&quot;testing&quot;</code>).</p>
<p>By itself, that is not useful, but it&rsquo;s possible to write <em>queries</em> to make
this syntax tree do interesting stuff.</p>
<p>The first one is highlighting: we can set styles for various &ldquo;patterns&rdquo; (in
practice, I only used node names) by defining queries:</p>
<div class="sourceCode"><pre class="sourceCode scheme"><code class="sourceCode scheme"><span><a href="http://blog.emillon.org/feeds/ocaml.xml#cb3-1" aria-hidden="true" tabindex="-1"></a>(stanza_name) @function</span>
<span><a href="http://blog.emillon.org/feeds/ocaml.xml#cb3-2" aria-hidden="true" tabindex="-1"></a>(field_name) @property</span>
<span><a href="http://blog.emillon.org/feeds/ocaml.xml#cb3-3" aria-hidden="true" tabindex="-1"></a>(quoted_string) @string</span>
<span><a href="http://blog.emillon.org/feeds/ocaml.xml#cb3-4" aria-hidden="true" tabindex="-1"></a>(multiline_string) @string</span>
<span><a href="http://blog.emillon.org/feeds/ocaml.xml#cb3-5" aria-hidden="true" tabindex="-1"></a>(action_name) @keyword</span></code></pre></div>
<p>The parts with <code>@</code> map to &ldquo;highlight groups&rdquo; used in text editors.</p>
<p>Another type of query is called &ldquo;injections&rdquo;. It is used to link different
types of grammars together. For example, <code>dune</code> files can start with a special
comment that indicates that the rest of the file is an OCaml program. In that
case, the parser emits a single <code>ocaml_syntax</code> node and the following injection
indicates that this file should be parsed using an OCaml parser:</p>
<div class="sourceCode"><pre class="sourceCode scheme"><code class="sourceCode scheme"><span><a href="http://blog.emillon.org/feeds/ocaml.xml#cb4-1" aria-hidden="true" tabindex="-1"></a>((ocaml_syntax) @injection.content</span>
<span><a href="http://blog.emillon.org/feeds/ocaml.xml#cb4-2" aria-hidden="true" tabindex="-1"></a> (#<span class="kw">set!</span> injection.language <span class="st">&quot;ocaml&quot;</span>))</span></code></pre></div>
<p>Another use case for this is <code>system</code> actions: these strings in <code>dune</code> files
could be interpreted using a shell parser.</p>
<p>In the other direction, it is possible to inject <code>dune</code> files into another
document. For example, a markdown parser can use injections to highlight code
blocks.</p>
<p>I&rsquo;m happy to have explored this technology. The toolchain seemed complex at
first: there&rsquo;s a compiler which seems to be a mix of node and rust, which
generates C, which is compiled into a dynamically loaded library; but this is
actually pretty well integrated in nix and neovim to the details are made
invisible.</p>
<p>The testing mechanism is similar to the cram tests we use in Dune, but I was a
bit confused with the colors at first: when the output of a test changes, Dune
considers that the new output is a <code>+</code> in the diff, and highlights it in green;
while tree-sitter considers that the &ldquo;expected output&rdquo; is green.</p>
<p>There are many ways to improve this prototype: either by adding queries (it&rsquo;s
possible to define text objects, folding expressions, etc), or by improving
coverage for <code>dune</code> files (in most cases, the parser uses a s-expression
fallback). I&rsquo;m also curious to see if it&rsquo;s possible to use this parser to
provide a completion source. Since the strings are tagged with their type (are
we expecting a library name, a module name, etc), I think we could use that to
provide context-specific completions, but that&rsquo;s probably difficult to do.</p>
<p>Thanks <a href="https://x.com/teej_dv">teej</a> for the initial idea and the useful
resources.</p>
Loading

0 comments on commit b961572

Please sign in to comment.