Mailing list for all users of the OCaml language and system.
 help / color / mirror / Atom feed
From: Alan Schmitt <alan.schmitt@polytechnique.org>
To: "lwn" <lwn@lwn.net>, caml-list@inria.fr
Subject: [Caml-list] Attn: Development Editor, Latest OCaml Weekly News
Date: Tue, 03 Sep 2024 10:24:17 +0200	[thread overview]
Message-ID: <m2cyll16xa.fsf@petitepomme.net> (raw)

[-- Attachment #1: Type: text/plain, Size: 11512 bytes --]

Hello

Here is the latest OCaml Weekly News, for the week of August 27 to
September 03, 2024.

Table of Contents
─────────────────

ppx_minidebug 2.0: verbosity levels
Ppx by example - repo to help on ppx learning
Blog Post: Simple Example where Ocaml calls a C function
Outreachy December 2024 Round
Other OCaml News
Old CWN


ppx_minidebug 2.0: verbosity levels
═══════════════════════════════════

  Archive:
  <https://discuss.ocaml.org/t/ann-ppx-minidebug-2-0-verbosity-levels/15212/1>


Lukasz Stafiniak announced
──────────────────────────

  I'm pleased to mention that [ppx_minidebug 2.0] is available now. The
  README at [ppx_minidebug - GitHub] is the user manual, and the runtime
  API is documented here: [ppx_minidebug.Minidebug_runtime].

  Version 2.0 brings linear verbosity log levels. Both logging scopes
  and individual log statements can be either: at a default (omitted)
  log level, at a compile-time log level (e.g. `[%log2 "test"]' logs
  `test' at level 2), or at a runtime-provided log level (e.g. `[%logN
  for_level; "test"]' logs `test' at level `for_level'). When the level
  to log at is omitted, it is inherited from its direct syntactic
  logging scope (i.e. the log entry that the log or log entry is
  syntactically in – not the log entry that the log is dynamically
  attached to, if it's different). Providing a compile-time log level
  will prune the generated code accordingly. See more here:
  [ppx_minidebug: Using as a logging framework].

  Version 1.6 brought support for local runtimes, where the runtime for
  logging in a logging scope is fetched by a user-provided function. The
  function can for example use domain-local storage. See more here:
  [ppx_minidebug: Dealing with concurrent execution].

  Happy debugging!


[ppx_minidebug 2.0] <https://github.com/lukstafi/ppx_minidebug>

[ppx_minidebug - GitHub] <https://github.com/lukstafi/ppx_minidebug>

[ppx_minidebug.Minidebug_runtime]
<https://lukstafi.github.io/ppx_minidebug/ppx_minidebug/Minidebug_runtime/index.html>

[ppx_minidebug: Using as a logging framework]
<https://github.com/lukstafi/ppx_minidebug?tab=readme-ov-file#using-as-a-logging-framework>

[ppx_minidebug: Dealing with concurrent execution]
<https://github.com/lukstafi/ppx_minidebug?tab=readme-ov-file#dealing-with-concurrent-execution>


Ppx by example - repo to help on ppx learning
═════════════════════════════════════════════

  Archive:
  <https://discuss.ocaml.org/t/ppx-by-example-repo-to-help-on-ppx-learning/15213/1>


Pedro Braga announced
─────────────────────

  Over the past few weeks, I've started my journey to learn PPX, and
  during this process, I found it challenging to find examples. So, I
  began creating my own examples and adding explanations for myself.

  I realized that I could make my examples and explanations public
  because this would push me to learn more deeply (as I’d need to
  provide better and clearer explanations) and could also help anyone
  else on this learning path. @davesnx also encouraged me to share my
  process (maybe through a blog post in the future). So, I created this
  repository: [github.com/pedrobslisboa/ppx-by-example].

  The idea is to have examples and an explanation for each detail on
  those. It has also a brief explanation about the subject on every
  README.

  I have a few notes:
  • It is a wip project, which means that there are parts in
    development. But sharing it is also a way to push me to improve this
    project.
  • As I said, I'm on the process of learning PPX, so probably I missed
    or added something wrongly, so please If you notice it, share it on
    the repo so I can fix.
  • I am also in the process of learning OCaml. I started coding in
    OCaml this year (professionally just last month), so this repository
    might not have the best code. If you think it can be improved,
    please let me know. :heart:
  • I'm not a native English speaker or the best writer. I asked ChatGPT
    to help fix some mistakes and improve cohesion, but if you notice
    anything that needs to be improved, please let me know. :heart:

  Besides that, any comments, help, or additions are welcome. I hope
  this can be helpful :3 Thank you all!


[github.com/pedrobslisboa/ppx-by-example]
<https://github.com/pedrobslisboa/ppx-by-example>


Blog Post: Simple Example where Ocaml calls a C function
════════════════════════════════════════════════════════

  Archive:
  <https://discuss.ocaml.org/t/blog-post-simple-example-where-ocaml-calls-a-c-function/15211/3>


Deep in this thread, Tim McGilchrist said
─────────────────────────────────────────

  My favourite example at the moment is this one from [Retrofitting
  Effect Handlers onto OCaml]. It shows OCaml calling C, C calling an
  OCaml callback and exceptions crossing those boundaries.

  ┌────
  │ $ cat meander.ml
  └────

  ┌────
  │ external ocaml_to_c
  │          : unit -> int = "ocaml_to_c"
  │ exception E1
  │ exception E2
  │ let c_to_ocaml () = raise E1
  │ let _ = Callback.register
  │           "c_to_ocaml" c_to_ocaml
  │ let omain () =
  │   try (* h1 *)
  │     try (* h2 *) ocaml_to_c ()
  │     with E2 -> 0
  │   with E1 -> 42
  │ let _ = assert (omain () = 42)
  └────

  ┌────
  │ $ cat meander_c.c
  └────

  ┌────
  │ #include <caml/mlvalues.h>
  │ #include <caml/callback.h>
  │ 
  │ value ocaml_to_c (value unit) {
  │     caml_callback(*caml_named_value
  │                   ("c_to_ocaml"), Val_unit);
  │     return Val_int(0);
  │ }
  └────

  Compile it with OCaml 5.2:

  ┌────
  │ $ ocamlopt --version
  │ 5.2.0
  │ $ ocamlopt meander_c.c meander.ml -o meander.exe
  │ $ ./meander.exe
  │ $ echo $?
  │ 0
  └────

  Bonus you can use GDB/LLDB on this to set breakpoints in both OCaml
  and C.


[Retrofitting Effect Handlers onto OCaml]
<https://doi.org/10.1145/3453483.3454039>


Outreachy December 2024 Round
═════════════════════════════

  Archive:
  <https://discuss.ocaml.org/t/outreachy-december-2024-round/15223/1>


Patrick Ferris announced
────────────────────────

  With the conclusion of the previous Outreachy round (see [Outreachy
  Demo Presentation]), the next round is fast approaching and the OCaml
  community has signed up again to participate!


[Outreachy Demo Presentation]
<https://discuss.ocaml.org/t/outreachy-demo-presentation/15189>

The Next Round
╌╌╌╌╌╌╌╌╌╌╌╌╌╌

  The *deadline for mentors to [submit a project] is [date=2024-09-11
  timezone="Europe/London"]*. If people are interested in mentoring and
  they maintain an open-source project, then they can reach out directly
  to me and I can help scope a project, explain the contribution period
  and provide as much other help as we can! Co-mentoring is also an
  option for people who are interested in mentoring but do not have a
  specific project – do reply to this thread if that's you!

  When signing up mentors propose an open-source project where
  prospective interns submit PRs during the “contribution phases” as
  part of their application. Mentors will then choose an intern to work
  with for 3 months. A more detailed explanation is available [on the
  Outreachy mentor section ].

  I'm particularly interested in *projects from some of the larger OCaml
  projects* (e.g. dune, opam, ppxlib, miou, eio, cohttp, melange
  etc.). I'm very happy to help with co-mentoring on any of these
  projects. If you are interested and are a maintainer of a larger
  project, please do reach out. Of course, smaller projects are still
  very much possible.


[submit a project] <https://www.outreachy.org/communities/cfp/ocaml/>

[on the Outreachy mentor section ]
<https://www.outreachy.org/mentor/#mentor>


Funding
╌╌╌╌╌╌╌

  _Funding for this upcoming Outreachy round is not yet finalised_. We
  hope to have funding for three interns, I will reply to this thread
  once things are confirmed which should be soon. If any company is
  interested in supporting the OCaml community Outreachy initative
  please do reach out to me.

  I'd also like to take this moment to raise some awareness for the
  current [struggles Outreachy is facing]. The OCaml community has
  benefited massively from Outreachy. Both by participating directly as
  a community (see <https://ocaml.org/outreachy> for some past projects)
  and via the participation of other communities. I'm very grateful for
  everyone who has taken part in some way, including non-mentors
  engaging with the interns.

  As always if you have any general questions or mentoring ideas do
  comment on this thread or reach out directly.

  Thanks!


[struggles Outreachy is facing]
<https://www.outreachy.org/blog/2024-08-14/outreachy-needs-your-help/>


Other OCaml News
════════════════

>From the ocaml.org blog
───────────────────────

  Here are links from many OCaml blogs aggregated at [the ocaml.org
  blog].

  • [The Biggest Functional Programming Conference of the Year: What are
    we Bringing to ICFP?]
  • [ICFP 2024]
  • [Project-Wide Occurrences: A New Navigation Feature for OCaml 5.2
    Users]
  • [What the interns have wrought, 2024 edition]


[the ocaml.org blog] <https://ocaml.org/blog/>

[The Biggest Functional Programming Conference of the Year: What are we
Bringing to ICFP?]
<https://tarides.com/blog/2024-08-30-the-biggest-functional-programming-conference-of-the-year-what-are-we-bringing-to-icfp>

[ICFP 2024] <https://blog.janestreet.com/icfp-2024-index/>

[Project-Wide Occurrences: A New Navigation Feature for OCaml 5.2 Users]
<https://tarides.com/blog/2024-08-28-project-wide-occurrences-a-new-navigation-feature-for-ocaml-5-2-users>

[What the interns have wrought, 2024 edition]
<https://blog.janestreet.com/what-the-interns-have-wrought-2024-edition-index/>


Old CWN
═══════

  If you happen to miss a CWN, you can [send me a message] and I'll mail
  it to you, or go take a look at [the archive] or the [RSS feed of the
  archives].

  If you also wish to receive it every week by mail, you may subscribe
  to the [caml-list].

  [Alan Schmitt]


[send me a message] <mailto:alan.schmitt@polytechnique.org>

[the archive] <https://alan.petitepomme.net/cwn/>

[RSS feed of the archives] <https://alan.petitepomme.net/cwn/cwn.rss>

[caml-list] <https://sympa.inria.fr/sympa/info/caml-list>

[Alan Schmitt] <https://alan.petitepomme.net/>


[-- Attachment #2: Type: text/html, Size: 23041 bytes --]

             reply	other threads:[~2024-09-03  8:24 UTC|newest]

Thread overview: 270+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-09-03  8:24 Alan Schmitt [this message]
  -- strict thread matches above, loose matches on Subject: below --
2025-12-09 15:04 Alan Schmitt
2025-12-02 10:39 Alan Schmitt
2025-11-25 13:49 Alan Schmitt
2025-11-18 14:01 Alan Schmitt
2025-11-11  9:49 Alan Schmitt
2025-11-04 13:21 Alan Schmitt
2025-10-28 13:30 Alan Schmitt
2025-10-21  9:17 Alan Schmitt
2025-10-14  9:56 Alan Schmitt
2025-10-07 12:22 Alan Schmitt
2025-09-30 13:12 Alan Schmitt
2025-09-23 13:23 Alan Schmitt
2025-09-16 11:52 Alan Schmitt
2025-09-09 12:30 Alan Schmitt
2025-09-02 12:23 Alan Schmitt
2025-08-26 12:34 Alan Schmitt
2025-08-19 12:20 Alan Schmitt
2025-08-12 15:32 Alan Schmitt
2025-08-05  8:17 Alan Schmitt
2025-07-29  9:36 Alan Schmitt
2025-07-22 12:07 Alan Schmitt
2025-07-15 17:14 Alan Schmitt
2025-07-08 12:45 Alan Schmitt
2025-07-01 11:16 Alan Schmitt
2025-06-24 14:02 Alan Schmitt
2025-06-17  6:44 Alan Schmitt
2025-06-10 13:36 Alan Schmitt
2025-06-03  9:19 Alan Schmitt
2025-05-27  9:22 Alan Schmitt
2025-05-20 11:52 Alan Schmitt
2025-05-13  9:40 Alan Schmitt
2025-05-06  7:24 Alan Schmitt
2025-04-29  8:39 Alan Schmitt
2025-04-22 11:50 Alan Schmitt
2025-04-15  9:51 Alan Schmitt
2025-04-08 13:14 Alan Schmitt
2025-04-01  9:12 Alan Schmitt
2025-03-25  8:06 Alan Schmitt
2025-03-18 10:18 Alan Schmitt
2025-03-11 15:00 Alan Schmitt
2025-03-04 14:01 Alan Schmitt
2025-02-25 10:36 Alan Schmitt
2025-02-18 14:33 Alan Schmitt
2025-02-11  7:17 Alan Schmitt
2025-02-04 12:05 Alan Schmitt
2025-01-28 13:24 Alan Schmitt
2025-01-21 15:47 Alan Schmitt
2025-01-14  8:20 Alan Schmitt
2025-01-07 17:26 Alan Schmitt
2024-12-31  8:03 Alan Schmitt
2024-12-24  8:55 Alan Schmitt
2024-12-17 13:05 Alan Schmitt
2024-12-10 13:48 Alan Schmitt
2024-12-03 14:44 Alan Schmitt
2024-11-26  8:30 Alan Schmitt
2024-11-19  6:52 Alan Schmitt
2024-11-12 15:00 Alan Schmitt
2024-11-05 13:22 Alan Schmitt
2024-10-29 13:30 Alan Schmitt
2024-10-22 12:42 Alan Schmitt
2024-10-15 13:31 Alan Schmitt
2024-10-08 10:56 Alan Schmitt
2024-10-01 13:37 Alan Schmitt
2024-09-24 13:18 Alan Schmitt
2024-09-17 14:02 Alan Schmitt
2024-09-10 13:55 Alan Schmitt
2024-08-27  9:02 Alan Schmitt
2024-08-20  9:29 Alan Schmitt
2024-08-13 13:21 Alan Schmitt
2024-08-06  9:00 Alan Schmitt
2024-07-30 13:26 Alan Schmitt
2024-07-23 13:30 Alan Schmitt
2024-07-16  6:24 Alan Schmitt
2024-07-09  9:19 Alan Schmitt
2024-07-02  7:30 Alan Schmitt
2024-06-25 13:58 Alan Schmitt
2024-06-18 13:05 Alan Schmitt
2024-06-11 15:04 Alan Schmitt
2024-06-04 13:26 Alan Schmitt
2024-05-28  9:07 Alan Schmitt
2024-05-21 13:07 Alan Schmitt
2024-05-14 13:25 Alan Schmitt
2024-05-07  7:30 Alan Schmitt
2024-04-30  7:22 Alan Schmitt
2024-04-23 12:17 Alan Schmitt
2024-04-16 12:00 Alan Schmitt
2024-04-09  9:15 Alan Schmitt
2024-04-02 14:31 Alan Schmitt
2024-03-26  6:32 Alan Schmitt
2024-03-19 15:09 Alan Schmitt
2024-03-12 10:31 Alan Schmitt
2024-03-05 14:50 Alan Schmitt
2024-02-27 13:53 Alan Schmitt
2024-02-20  9:12 Alan Schmitt
2024-02-13  8:42 Alan Schmitt
2024-02-06 15:14 Alan Schmitt
2024-01-30 14:16 Alan Schmitt
2024-01-23  9:45 Alan Schmitt
2024-01-16 10:01 Alan Schmitt
2024-01-09 13:40 Alan Schmitt
2024-01-02  8:59 Alan Schmitt
2023-12-26 10:12 Alan Schmitt
2023-12-19 10:10 Alan Schmitt
2023-12-12 10:20 Alan Schmitt
2023-12-05 10:13 Alan Schmitt
2023-11-28  9:09 Alan Schmitt
2023-11-21  7:47 Alan Schmitt
2023-11-14 13:42 Alan Schmitt
2023-11-07 10:31 Alan Schmitt
2023-10-31 10:43 Alan Schmitt
2023-10-24  9:17 Alan Schmitt
2023-10-17  7:46 Alan Schmitt
2023-10-10  7:48 Alan Schmitt
2023-10-03 13:00 Alan Schmitt
2023-09-19  8:54 Alan Schmitt
2023-09-12 13:21 Alan Schmitt
2023-09-05  9:00 Alan Schmitt
2023-08-29 13:04 Alan Schmitt
2023-08-22  9:20 Alan Schmitt
2023-08-15 16:33 Alan Schmitt
2023-08-08  8:53 Alan Schmitt
2023-08-01  7:13 Alan Schmitt
2023-07-25  8:45 Alan Schmitt
2023-07-11  8:45 Alan Schmitt
2023-07-04  9:18 Alan Schmitt
2023-06-27  8:38 Alan Schmitt
2023-06-20  9:52 Alan Schmitt
2023-06-13  7:09 Alan Schmitt
2023-06-06 14:22 Alan Schmitt
2023-05-30 15:43 Alan Schmitt
2023-05-23  9:41 Alan Schmitt
2023-05-16 13:05 Alan Schmitt
2023-05-09 11:49 Alan Schmitt
2023-05-02  8:01 Alan Schmitt
2023-04-25  9:25 Alan Schmitt
2023-04-18  8:50 Alan Schmitt
2023-04-11 12:41 Alan Schmitt
2023-04-04  8:45 Alan Schmitt
2023-03-28  7:21 Alan Schmitt
2023-03-21 10:07 Alan Schmitt
2023-03-14  9:52 Alan Schmitt
2023-03-07  9:02 Alan Schmitt
2023-02-28 14:38 Alan Schmitt
2023-02-21 10:19 Alan Schmitt
2023-02-14  8:12 Alan Schmitt
2023-02-07  8:16 Alan Schmitt
2023-01-31  6:44 Alan Schmitt
2023-01-24  8:57 Alan Schmitt
2023-01-17  8:37 Alan Schmitt
2022-11-29 14:53 Alan Schmitt
2022-09-27  7:17 Alan Schmitt
2022-09-20 14:01 Alan Schmitt
2022-09-13  8:40 Alan Schmitt
2022-08-23  8:06 Alan Schmitt
2022-08-16  8:51 Alan Schmitt
2022-08-09  8:02 Alan Schmitt
2022-08-02  9:51 Alan Schmitt
2022-07-26 17:54 Alan Schmitt
2022-07-19  8:58 Alan Schmitt
2022-07-12  7:59 Alan Schmitt
2022-07-05  7:42 Alan Schmitt
2022-06-28  7:37 Alan Schmitt
2022-06-21  8:06 Alan Schmitt
2022-06-14  9:29 Alan Schmitt
2022-06-07 10:15 Alan Schmitt
2022-05-31 12:29 Alan Schmitt
2022-05-24  8:04 Alan Schmitt
2022-05-17  7:12 Alan Schmitt
2022-05-10 12:30 Alan Schmitt
2022-05-03  9:11 Alan Schmitt
2022-04-26  6:44 Alan Schmitt
2022-04-19  5:34 Alan Schmitt
2022-04-12  8:10 Alan Schmitt
2022-04-05 11:50 Alan Schmitt
2022-03-29  7:42 Alan Schmitt
2022-03-22 13:01 Alan Schmitt
2022-03-15  9:59 Alan Schmitt
2022-03-01 13:54 Alan Schmitt
2022-02-22 12:43 Alan Schmitt
2022-02-08 13:16 Alan Schmitt
2022-02-01 13:00 Alan Schmitt
2022-01-25 12:44 Alan Schmitt
2022-01-11  8:20 Alan Schmitt
2022-01-04  7:56 Alan Schmitt
2021-12-28  8:59 Alan Schmitt
2021-12-21  9:11 Alan Schmitt
2021-12-14 11:02 Alan Schmitt
2021-11-30 10:51 Alan Schmitt
2021-11-16  8:41 Alan Schmitt
2021-11-09 10:08 Alan Schmitt
2021-11-02  8:50 Alan Schmitt
2021-10-19  8:23 Alan Schmitt
2021-09-28  6:37 Alan Schmitt
2021-09-21  9:09 Alan Schmitt
2021-09-07 13:23 Alan Schmitt
2021-08-24 13:44 Alan Schmitt
2021-08-17  6:24 Alan Schmitt
2021-08-10 16:47 Alan Schmitt
2021-07-27  8:54 Alan Schmitt
2021-07-20 12:58 Alan Schmitt
2021-07-06 12:33 Alan Schmitt
2021-06-29 12:24 Alan Schmitt
2021-06-22  9:04 Alan Schmitt
2021-06-01  9:23 Alan Schmitt
2021-05-25  7:30 Alan Schmitt
2021-05-11 14:47 Alan Schmitt
2021-05-04  8:57 Alan Schmitt
2021-04-27 14:26 Alan Schmitt
2021-04-20  9:07 Alan Schmitt
2021-04-06  9:42 Alan Schmitt
2021-03-30 14:55 Alan Schmitt
2021-03-23  9:05 Alan Schmitt
2021-03-16 10:31 Alan Schmitt
2021-03-09 10:58 Alan Schmitt
2021-02-23  9:51 Alan Schmitt
2021-02-16 13:53 Alan Schmitt
2021-02-02 13:56 Alan Schmitt
2021-01-26 13:25 Alan Schmitt
2021-01-19 14:28 Alan Schmitt
2021-01-12  9:47 Alan Schmitt
2021-01-05 11:22 Alan Schmitt
2020-12-29  9:59 Alan Schmitt
2020-12-22  8:48 Alan Schmitt
2020-12-15  9:51 Alan Schmitt
2020-12-01  8:54 Alan Schmitt
2020-11-03 15:15 Alan Schmitt
2020-10-27  8:43 Alan Schmitt
2020-10-20  8:15 Alan Schmitt
2020-10-06  7:22 Alan Schmitt
2020-09-29  7:02 Alan Schmitt
2020-09-22  7:27 Alan Schmitt
2020-09-08 13:11 Alan Schmitt
2020-09-01  7:55 Alan Schmitt
2020-08-18  7:25 Alan Schmitt
2020-07-28 16:57 Alan Schmitt
2020-07-21 14:42 Alan Schmitt
2020-07-14  9:54 Alan Schmitt
2020-07-07 10:04 Alan Schmitt
2020-06-30  7:00 Alan Schmitt
2020-06-16  8:36 Alan Schmitt
2020-06-09  8:28 Alan Schmitt
2020-05-19  9:52 Alan Schmitt
2020-05-12  7:45 Alan Schmitt
2020-05-05  7:45 Alan Schmitt
2020-04-28 12:44 Alan Schmitt
2020-04-21  8:58 Alan Schmitt
2020-04-14  7:28 Alan Schmitt
2020-04-07  7:51 Alan Schmitt
2020-03-31  9:54 Alan Schmitt
2020-03-24  9:31 Alan Schmitt
2020-03-17 11:04 Alan Schmitt
2020-03-10 14:28 Alan Schmitt
2020-03-03  8:00 Alan Schmitt
2020-02-25  8:51 Alan Schmitt
2020-02-18  8:18 Alan Schmitt
2020-02-04  8:47 Alan Schmitt
2020-01-28 10:53 Alan Schmitt
2020-01-21 14:08 Alan Schmitt
2020-01-14 14:16 Alan Schmitt
2020-01-07 13:43 Alan Schmitt
2019-12-31  9:18 Alan Schmitt
2019-12-17  8:52 Alan Schmitt
2019-12-10  8:21 Alan Schmitt
2019-12-03 15:42 Alan Schmitt
2019-11-26  8:33 Alan Schmitt
2019-11-12 13:21 Alan Schmitt
2019-11-05  6:55 Alan Schmitt
2019-10-15  7:28 Alan Schmitt
2019-09-03  7:35 Alan Schmitt

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=m2cyll16xa.fsf@petitepomme.net \
    --to=alan.schmitt@polytechnique.org \
    --cc=caml-list@inria.fr \
    --cc=lwn@lwn.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox