From mirageos-devel-bounces@lists.xenproject.org Mon Aug 03 14:37:30 2026
Return-path: <mirageos-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Aug 2026 14:37:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1381542.1625094 (Exim 4.92)
	(envelope-from <mirageos-devel-bounces@lists.xenproject.org>)
	id 1wqtn7-0005om-Bj; Mon, 03 Aug 2026 14:37:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1381542.1625094; Mon, 03 Aug 2026 14:37:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <mirageos-devel-bounces@lists.xenproject.org>)
	id 1wqtn7-0005of-8v; Mon, 03 Aug 2026 14:37:21 +0000
Received: by outflank-mailman (input) for mailman id 1381542;
 Mon, 03 Aug 2026 14:37:20 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <hannes@mehnert.org>) id 1wqtn6-0005oZ-0E
 for mirageos-devel@lists.xenproject.org; Mon, 03 Aug 2026 14:37:20 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wqtn4-00FVlh-RB
 for mirageos-devel@lists.xenproject.org; Mon, 03 Aug 2026 16:37:18 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <hannes@mehnert.org>)
 id 6a70a79e-5cb7-0a2a0a5109dd-0a2a4505a7d8-0
 for <mirageos-devel@lists.xenproject.org>; Mon, 03 Aug 2026 16:37:18 +0200
Received: from [213.73.89.200] (helo=mail.mehnert.org)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <hannes@mehnert.org>)
 id 6a70a79e-4cb1-0a2a45050019-d54959c83109-3
 for <mirageos-devel@lists.xenproject.org>; Mon, 03 Aug 2026 16:37:18 +0200
Received: from [192.168.2.76] (unknown [195.52.187.195])
 (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256
 client-signature RSA-PSS (2048 bits) client-digest SHA256)
 (Client CN "hannes@mehnert.org", Issuer "mehnert root CA" (not verified))
 by mail.mehnert.org (Postfix) with ESMTPS id 12F6AB4DA;
 Mon,  3 Aug 2026 16:37:18 +0200 (CEST)
X-BeenThere: mirageos-devel@lists.xenproject.org
List-Id: Developer list for MirageOS <mirageos-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/mirageos-devel>, 
 <mailto:mirageos-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:mirageos-devel@lists.xenproject.org>
List-Help: <mailto:mirageos-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/mirageos-devel>, 
 <mailto:mirageos-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: mirageos-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "MirageOS-devel" <mirageos-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=mail header.d=mehnert.org header.i="@mehnert.org" header.h="Date:Subject:To:References:From:In-Reply-To"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mehnert.org; s=mail;
	t=1785767838; bh=fkFjVNfrfHUEt9J1HgFH4gWeXkmqnZ6U4CAkVp8U1e8=;
	h=Date:Subject:To:References:From:In-Reply-To;
	b=rk2mnkXgU3nrqHmx71hZi5VckcJBGuDXQ5tgKtFW6j8eC6nQd3WeHdWPqlqmHQLNn
	 SRRLXBJn5Wf9iKtuospFVSBdfDuMeWzoQ3CVjCOmTbiVGoyco8RKYNmpWda4hcD9Zo
	 JYJ0vnMPW7mFh5lsnh0k7DFCc2NgKc6JofUNwaBeeQzkL6MCW1sJyCAn+JguDvORVK
	 xDew9pkd/EGRdJiQMC22QSlO4oq6uTK3b3IwMkh4WHaOXUJDudTou85BtVn/IbuTSM
	 sASpjkeza3siZ58OR2UIv+R1kiTTsW7IOHk4zopQSoOzXQ0bbkiuqWkDbT1vDkmB4+
	 tJ3EpnbhPXmuw==
Message-ID: <a67a6453-cc09-49bd-829e-f7d4338d7a31@mehnert.org>
Date: Mon, 3 Aug 2026 16:37:17 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: Mirage-net-xen and Generic Segmentation Offload, and question
 about genAI and code
To: pierre.alain@tuta.io, Mirageos Devel <mirageos-devel@lists.xenproject.org>
References: <Oyt_Gow--N-9@tuta.io>
Content-Language: en-US
From: Hannes Mehnert <hannes@mehnert.org>
In-Reply-To: <Oyt_Gow--N-9@tuta.io>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-purgate-ID: tlsNG-c201ff/1785767838-716AD2A1-68BD0493/0/0
X-purgate-type: clean
X-purgate-size: 4156

Dear Pierre,

thanks for starting the discussion. And great to hear the improved 
numbers for mirage-qubes-firewall/GSO.

On 31/07/2026 21:38, pierre.alain@tuta.io wrote:
> I've started some time ago (maybe years?) to add Generic Segmentation Offload to mirage-net-xen to improve bandwidth for qubes-mirage-firewall, because I observed that it introduced a large restriction compared to a Linux kernel firewall [1].
> 
> That was very long, and now I'm happy to announce that I have some PRs [2-5] that enable GSO with qubes-mirage-firewall. The 'good' thing is that I've got the following results on Qubes using iperf3 for 10 second runs between two VMs with a firewall in between (run only once, and 10s, so I won't commit to exact figures, just take the overall picture):
> - GSO disabled with qubes-mirage-firewall: 0.531 Gbit/s (current head is at 0.350 Gbit/s) vs. Linux: 1.92 Gbit/s, ratio 3.62
> - GSO enabled with qubes-mirage-firewall: 3.16 Gbit/s vs. Linux-fw: 6.16 Gbit/s, ratio 1.95


That sounds great - do you have some profiling what are the expensive 
bits compared to the linux firewall? A factor of 2 is still very high 
IMHO - a good selling point would be a factor of 0.2 ;)


> So now we're only roughly half the performance of Linux \o/
> Although there is still a lot of work to do to improve the bandwidth, it's not on the GSO path any more.
> 
> The 'bad' thing, leading to this email, is that across the branches for mirage-xen, mirage-net-xen, mirage-nat and qubes-mirage-firewall, some (a lot of) findings and code were produced using Claude Opus 5 as a 'rubber duck'. I tried to be explicit in the commits about the help I got from it, from findings to co-authorship, and I want to convey that, even if I've done a lot of work before, I would not have been able to finish so quickly without that tool. It really helped me a lot for tracking issues in pcaps, comparing packets byte by byte, finding references in the Xen or Linux sources, etc.
> 
> So my question about this work is whether the way I disclosed it in the commits the right granularity? Especially, when Claude Opus is credited with co-authorship (e.g. the mirage-xen PR [3]), it means the code was written by the tool and reviewed by me, I cannot guarantee that the same code does not exist in another repository, possibly under a more restrictive licence.


 From my point of view, the first item is crucial: be transparent (as 
you are) about the usage thereof. Review all the changes in detail, and 
figure out whether that is the way to go or there would be some other 
way (which also means, be open for constructive feedback on PRs).

The license issue is a real one, where I don't have any clue about. If 
the first point - you reviewed and now own the code - is done 
extensively, it shouldn't be a thing to re-implement the solution you 
saw with your own fingers -- but that certainly won't solve the 
licensing in any way (since it is not a clean-room implementation). I 
wonder what a good strategy is? Maybe other people who use AI a lot have 
some ideas about it? All I can tell is that last Friday in Germany some 
AI music generator lost in court against real musicians -- so the AI 
generated music violates copyright. I believe the same will be in the 
future being adapted to software and copyright.

And obviously, using AI to find references, compare packets, ... is an 
ok utilization - as long as you agree to the terms and impact (to 
climate, politics, strengthening bigtech companies, likely more) of AI. 
[To make it transparent, I never used AI, and I don't plan to use any 
for writing code. If you're interested about some reasoning, I find the 
article https://superrr.net/en/blog/about-ai-and-unlikelihood very 
interesting, with lots of useful links. If you're more of an audio 
person, https://techwontsave.us/episodes also has tons of interesting 
episodes.]

I am happy to review your PRs, and am not so happy to review random 
passing-by PRs which are heavily done by AI without any manual review 
(as https://github.com/mirage/mirage/pull/1647).


Best,

Hannes


From mirageos-devel-bounces@lists.xenproject.org Mon Aug 03 15:19:02 2026
Return-path: <mirageos-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Aug 2026 15:19:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1381590.1625135 (Exim 4.92)
	(envelope-from <mirageos-devel-bounces@lists.xenproject.org>)
	id 1wquRN-0007gE-7N; Mon, 03 Aug 2026 15:18:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1381590.1625135; Mon, 03 Aug 2026 15:18:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <mirageos-devel-bounces@lists.xenproject.org>)
	id 1wquRN-0007g7-4S; Mon, 03 Aug 2026 15:18:57 +0000
Received: by outflank-mailman (input) for mailman id 1381590;
 Mon, 03 Aug 2026 15:18:56 +0000
Received: from mx.expurgate.net ([194.145.224.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <avsm2@cam.ac.uk>) id 1wquRL-0007g1-I1
 for mirageos-devel@lists.xenproject.org; Mon, 03 Aug 2026 15:18:56 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wquRK-008V0y-KT
 for mirageos-devel@lists.xenproject.org; Mon, 03 Aug 2026 17:18:54 +0200
Received: from [10.42.69.2] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <avsm2@cam.ac.uk>)
 id 6a70b141-2eae-0a2a0a5409dd-0a2a4502ccd6-28
 for <mirageos-devel@lists.xenproject.org>; Mon, 03 Aug 2026 17:18:54 +0200
Received: from [128.232.132.148] (helo=smtp-2.srv.uis.cam.ac.uk)
 by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <avsm2@cam.ac.uk>)
 id 6a70b15d-6ca4-0a2a45020019-80e88494ad5a-3
 for <mirageos-devel@lists.xenproject.org>; Mon, 03 Aug 2026 17:18:54 +0200
Received: from svr-postfix-1.cl.cam.ac.uk ([128.232.119.160]:9601)
 by smtp-2.srv.uis.cam.ac.uk with esmtps  (TLS1.3) tls TLS_AES_256_GCM_SHA384
 (Exim 4.99.4) (envelope-from <avsm2@cam.ac.uk>)
 id 1wquRJ-00000002Zpi-5bUS; Mon, 03 Aug 2026 16:18:53 +0100
Received: from fauth-c2-smtp.messagingengine.com
 (fauth-c2-smtp.messagingengine.com [204.75.18.201])
 (Authenticated sender: avsm2+cam-fm)
 by svr-postfix-1.cl.cam.ac.uk (Postfix) with ESMTPSA id 8747E40924;
 Mon,  3 Aug 2026 15:18:47 +0000 (UTC)
Received: from phl-compute-04.internal (phl-compute-04.internal [10.202.2.44])
 by mailfauth.ams.internal (Postfix) with ESMTP id F0FAC1980054;
 Mon,  3 Aug 2026 11:18:46 -0400 (EDT)
Received: from phl-frontend-04 ([10.202.2.163])
 by phl-compute-04.internal (MEProxy); Mon, 03 Aug 2026 11:18:47 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon,
 3 Aug 2026 11:18:45 -0400 (EDT)
X-BeenThere: mirageos-devel@lists.xenproject.org
List-Id: Developer list for MirageOS <mirageos-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/mirageos-devel>, 
 <mailto:mirageos-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:mirageos-devel@lists.xenproject.org>
List-Help: <mailto:mirageos-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/mirageos-devel>, 
 <mailto:mirageos-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: mirageos-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "MirageOS-devel" <mirageos-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20250721.smtp header.d=cam.ac.uk header.i="@cam.ac.uk" header.h="References:To:Cc:In-Reply-To:Date:Subject:Mime-Version:Content-Type:Message-Id:From"
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=cam.ac.uk;
	s=20250721.smtp; h=References:To:Cc:In-Reply-To:Date:Subject:Mime-Version:
	Content-Type:Message-Id:From:Sender:Reply-To:Content-Transfer-Encoding:
	Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender:
	Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:
	List-Subscribe:List-Post:List-Owner:List-Archive;
	bh=owtb2gLXYUVMPYFM11YDVjgRYTHwTuXtN5b3+cG2vQ8=; b=OVl0A72HmlG6IEWNKeC/jsyclx
	e4eclO/1nUU3qzKs+0IFES+iIRkUKtQxmJNfBR0Lqbhz3I2sjrraao8DIULYm1g9rA7PvtAy5SRxD
	km2sR4IcrJQ/lp/GKYdUEODN2nzhtIguxDOIMjQyzDNz4t4gJGR20VvOF7kj6d+Sc5Wa99gN7+37r
	ARq+qygZbA/fwVN10LjqT2KuA7Bw+eI6mDtnQzKyYKXpxeqtE88HDkNzrX/IFubAIBJrTM+5JUSfp
	j8t6PgGpNpNed3GrLH8v9ZtA0Ac23K+V3D75yB2PWilyQmPJE7UA/iiV0+EBliD3390KTqPSBmfYY
	7mUsUTEw==;
X-Cam-AntiVirus: no malware found
X-Cam-ScannerInfo: https://help.uis.cam.ac.uk/email-scanner-virus
X-ME-Sender: <xms:VrFwaox33AFjX_dDK_cZT1GZ-tVAHhL-DXg6HeNRmnMm9ydijOjo2Q>
    <xme:VrFwajumKC0n55VRR2om-WHxbXh3l8meMof1JF9DlrMdcnFEHPuL-T7AzatalfUIP
    _G25iDtf3WencKNGlsaljNx5qRbiqI3P8n0svmIU6k5-UbDA-RzguI>
X-ME-Received: <xmr:VrFwanvRiVx9HE16O9N0BN0jnD3zXOlEtD4Xqm8ZeK7Qp4Fu-Omo0kxdrIVJcEPMgL3nuXXHmcZQmKAtXjOQMIMZuaypjYGV>
X-ME-Proxy-Cause: dmFkZTGRaS3d9zx8nFl+zoM9SOLynaypryRJzAyhdgzrYm3U1CtnU/MkcqKtwqgGLbDh8c
    pYJ+ISPDK4K/XufMMq8CBhznCjrEP7+qxC/2BAdTHqg4zA7zLwhXL4REi5Q+FBnAwmp4bd
    RPahrQRI69ialSy11lB2QI8bV2nSZzmtStNyRdX/sjIqKM8fjX8Fe5mUDpu7UR8Ua7Mb8m
    /z9Zn974/66EAo6Hco32YT6flinDxLSiPLBzxGS2fbPD7RtOef1rAk0xeVBuTL1ntatsmW
    yyyyxtKbKdvNwxNkiNQHQkUvgLUqYrF0k7AB1LtAIlu/IYfzGe9ql2gckE1q6tMkN5AhiO
    BpngXqBvUNqP/h5Crj/Fd4+PJDLlSbtMX3kFcI8EUK56ukUaZM5pqElVpVQloHBUH3dW7X
    Zhviu9AXUhXQTJn1n7QL9CDYvMpOnBkjKh0wFzVZpI1Aq6BjXvd9kXr9UE2do3nuM524ZS
    QtraQfAnYeT/SOj080ueN5cBwKoTdwbUVcFMOI9vLF3bLJYg5v7MaJnKreCaZ5FH+criGn
    CKWHfODQQVSfU3LqM9CFCgMy21V3ItrU/FDRu32+bDkBUQ3gFjy0Lf8xjI7PSj02rDl9Qn
    O+MDeQfjDPe4pUPH7ToIfLjIEUFF5YSd6tUl9V1ODStodgYbgSV1hExhosSA
X-ME-Proxy: <xmx:VrFwagM3EekvZDB8HTQfjqDtZ7A4_qPfQ6IVVFa_lPf61SKFg8_TOA>
    <xmx:VrFwat2Z5m6TQQ3bFqkMCG6exuGo275zcdxLZyAGe_Petk1bqOMC2w>
    <xmx:VrFwakOSue55pom1a7kBVXKu7i2olmGkBP7iNNQlAUklDLJSzmihFQ>
    <xmx:VrFwal2CArw6IzrSPeny7zw9uU1iA9vV8KkcnynVsROXoYDZbQA4dg>
    <xmx:VrFwajHQG4UekauzQRUQXkXGe-G2HE3SccD9dSZGIhh680j4-x4s9AIZ>
Feedback-ID: i945c46d4:Fastmail
From: Anil Madhavapeddy <avsm2@cam.ac.uk>
Message-Id: <3DE3F0EB-7798-407A-B5CC-6AC897AAFFCB@cam.ac.uk>
Content-Type: multipart/alternative;
	boundary="Apple-Mail=_A59D19F8-D0A7-4F5F-9721-BE88A25B5580"
Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3897.100.8.1.1\))
Subject: Re: Mirage-net-xen and Generic Segmentation Offload, and question
 about genAI and code
Date: Mon, 3 Aug 2026 16:18:35 +0100
In-Reply-To: <a67a6453-cc09-49bd-829e-f7d4338d7a31@mehnert.org>
Cc: pierre.alain@tuta.io,
 Mirageos Devel <mirageos-devel@lists.xenproject.org>
To: Hannes Mehnert <hannes@mehnert.org>
References: <Oyt_Gow--N-9@tuta.io>
 <a67a6453-cc09-49bd-829e-f7d4338d7a31@mehnert.org>
X-Mailer: Apple Mail (2.3897.100.8.1.1)
X-purgate-ID: tlsNG-720697/1785770334-666B72AC-F024CB8C/0/0
X-purgate-type: clean
X-purgate-size: 10193


--Apple-Mail=_A59D19F8-D0A7-4F5F-9721-BE88A25B5580
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=us-ascii

> On 3 Aug 2026, at 15:37, Hannes Mehnert <hannes@mehnert.org> wrote:
>=20
> Dear Pierre,
>=20
> thanks for starting the discussion. And great to hear the improved =
numbers for mirage-qubes-firewall/GSO.

Likewise, this is very encouraging!

>> So now we're only roughly half the performance of Linux \o/
>> Although there is still a lot of work to do to improve the bandwidth, =
it's not on the GSO path any more.
>> The 'bad' thing, leading to this email, is that across the branches =
for mirage-xen, mirage-net-xen, mirage-nat and qubes-mirage-firewall, =
some (a lot of) findings and code were produced using Claude Opus 5 as a =
'rubber duck'. I tried to be explicit in the commits about the help I =
got from it, from findings to co-authorship, and I want to convey that, =
even if I've done a lot of work before, I would not have been able to =
finish so quickly without that tool. It really helped me a lot for =
tracking issues in pcaps, comparing packets byte by byte, finding =
references in the Xen or Linux sources, etc.
>> So my question about this work is whether the way I disclosed it in =
the commits the right granularity? Especially, when Claude Opus is =
credited with co-authorship (e.g. the mirage-xen PR [3]), it means the =
code was written by the tool and reviewed by me, I cannot guarantee that =
the same code does not exist in another repository, possibly under a =
more restrictive licence.
>=20
>=20
> =46rom my point of view, the first item is crucial: be transparent (as =
you are) about the usage thereof. Review all the changes in detail, and =
figure out whether that is the way to go or there would be some other =
way (which also means, be open for constructive feedback on PRs).
>=20
> The license issue is a real one, where I don't have any clue about. If =
the first point - you reviewed and now own the code - is done =
extensively, it shouldn't be a thing to re-implement the solution you =
saw with your own fingers -- but that certainly won't solve the =
licensing in any way (since it is not a clean-room implementation). I =
wonder what a good strategy is? Maybe other people who use AI a lot have =
some ideas about it? All I can tell is that last Friday in Germany some =
AI music generator lost in court against real musicians -- so the AI =
generated music violates copyright. I believe the same will be in the =
future being adapted to software and copyright.
>=20
> And obviously, using AI to find references, compare packets, ... is an =
ok utilization - as long as you agree to the terms and impact (to =
climate, politics, strengthening bigtech companies, likely more) of AI. =
[To make it transparent, I never used AI, and I don't plan to use any =
for writing code. If you're interested about some reasoning, I find the =
article https://superrr.net/en/blog/about-ai-and-unlikelihood very =
interesting, with lots of useful links. If you're more of an audio =
person, https://techwontsave.us/episodes also has tons of interesting =
episodes.]
>=20
> I am happy to review your PRs, and am not so happy to review random =
passing-by PRs which are heavily done by AI without any manual review =
(as https://github.com/mirage/mirage/pull/1647).

My very quick 2c is that I largely agree with Hannes:

- I recommend not putting Claude Code as a coauthor, but instead =
ensuring that you've read through everything and are willing to standup =
for it.  I generally follow the SF Conservancy guidelines here =
(https://sfconservancy.org/llm-gen-ai/llm-backed-generative-ai-recommendat=
ions.html) which keep an eye on the legal status here, but generally =
speaking following the existing project licensing and being judicious in =
your inputs seems to be the best we can do right now.

- I'm hopeful in the future we'll have a high quality fully open model =
(like https://www.apertus-ai.org/, for which a new version is =
forthcoming I'm told).

- I'm happy to review Claude generated PRs from people I know like you, =
and I'm interested in the performance of the Xen backend again recently =
since I'm running it in my home router as of a month ago after several =
years of not running Mirage/Xen in production...

More generally, it's clear that LLM-assisted programming is here to =
stay, and every community is going to have to (painfully) adapt, so =
being open and transparent is the best we can do. Everything is =
changing, everywhere, and all at once :-)

-anil=

--Apple-Mail=_A59D19F8-D0A7-4F5F-9721-BE88A25B5580
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html;
	charset=us-ascii

<html aria-label=3D"message body"><head><meta http-equiv=3D"content-type" =
content=3D"text/html; charset=3Dus-ascii"></head><body =
style=3D"overflow-wrap: break-word; -webkit-nbsp-mode: space; =
line-break: after-white-space;"><div><blockquote type=3D"cite"><div>On 3 =
Aug 2026, at 15:37, Hannes Mehnert &lt;hannes@mehnert.org&gt; =
wrote:</div><br class=3D"Apple-interchange-newline"><div><div>Dear =
Pierre,<br><br>thanks for starting the discussion. And great to hear the =
improved numbers for =
mirage-qubes-firewall/GSO.<br></div></div></blockquote><div><br></div>Like=
wise, this is very encouraging!</div><div><br><blockquote =
type=3D"cite"><div><div><blockquote type=3D"cite">So now we're only =
roughly half the performance of Linux \o/<br>Although there is still a =
lot of work to do to improve the bandwidth, it's not on the GSO path any =
more.<br>The 'bad' thing, leading to this email, is that across the =
branches for mirage-xen, mirage-net-xen, mirage-nat and =
qubes-mirage-firewall, some (a lot of) findings and code were produced =
using Claude Opus 5 as a 'rubber duck'. I tried to be explicit in the =
commits about the help I got from it, from findings to co-authorship, =
and I want to convey that, even if I've done a lot of work before, I =
would not have been able to finish so quickly without that tool. It =
really helped me a lot for tracking issues in pcaps, comparing packets =
byte by byte, finding references in the Xen or Linux sources, etc.<br>So =
my question about this work is whether the way I disclosed it in the =
commits the right granularity? Especially, when Claude Opus is credited =
with co-authorship (e.g. the mirage-xen PR [3]), it means the code was =
written by the tool and reviewed by me,&nbsp;I cannot guarantee that the =
same code does not exist in another repository, possibly under a more =
restrictive licence.<br></blockquote><br><br>=46rom my point of view, =
the first item is crucial: be transparent (as you are) about the usage =
thereof. Review all the changes in detail, and figure out whether that =
is the way to go or there would be some other way (which also means, be =
open for constructive feedback on PRs).<br><br>The license issue is a =
real one, where I don't have any clue about. If the first point - you =
reviewed and now own the code - is done extensively, it shouldn't be a =
thing to re-implement the solution you saw with your own fingers -- but =
that certainly won't solve the licensing in any way (since it is not a =
clean-room implementation). I wonder what a good strategy is? Maybe =
other people who use AI a lot have some ideas about it? All I can tell =
is that last Friday in Germany some AI music generator lost in court =
against real musicians -- so the AI generated music violates copyright. =
I believe the same will be in the future being adapted to software and =
copyright.<br><br>And obviously, using AI to find references, compare =
packets, ... is an ok utilization - as long as you agree to the terms =
and impact (to climate, politics, strengthening bigtech companies, =
likely more) of AI. [To make it transparent, I never used AI, and I =
don't plan to use any for writing code. If you're interested about some =
reasoning, I find the article =
https://superrr.net/en/blog/about-ai-and-unlikelihood very interesting, =
with lots of useful links. If you're more of an audio person, =
https://techwontsave.us/episodes also has tons of interesting =
episodes.]<br><br>I am happy to review your PRs, and am not so happy to =
review random passing-by PRs which are heavily done by AI without any =
manual review (as =
https://github.com/mirage/mirage/pull/1647).<br></div></div></blockquote><=
/div><br><div>My very quick 2c is that I largely agree with =
Hannes:</div><div><br></div><div>- I recommend not putting Claude Code =
as a coauthor, but instead ensuring that you've read through everything =
and are willing to standup for it. &nbsp;I generally follow the SF =
Conservancy guidelines here (<a =
href=3D"https://sfconservancy.org/llm-gen-ai/llm-backed-generative-ai-reco=
mmendations.html">https://sfconservancy.org/llm-gen-ai/llm-backed-generati=
ve-ai-recommendations.html</a>) which keep an eye on the legal status =
here, but generally speaking following the existing project licensing =
and being judicious in your inputs seems to be the best we can do right =
now.</div><div><br></div><div>- I'm hopeful in the future we'll have a =
high quality fully open model (like&nbsp;<a =
href=3D"https://www.apertus-ai.org/">https://www.apertus-ai.org/</a>, =
for which a new version is forthcoming I'm =
told).</div><div><br></div><div>- I'm happy to review Claude generated =
PRs from people I know like you, and I'm interested in the performance =
of the Xen backend again recently since I'm running it in my home router =
as of a month ago after several years of not running Mirage/Xen in =
production...</div><div><br></div><div>More generally, it's clear that =
LLM-assisted programming is here to stay, and every community is going =
to have to (painfully) adapt, so being open and transparent is the best =
we can do. Everything is changing, everywhere, and all at once =
:-)</div><div><br></div><div>-anil</div></body></html>=

--Apple-Mail=_A59D19F8-D0A7-4F5F-9721-BE88A25B5580--


From mirageos-devel-bounces@lists.xenproject.org Mon Aug 03 15:31:20 2026
Return-path: <mirageos-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Mon, 03 Aug 2026 15:31:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1381624.1625160 (Exim 4.92)
	(envelope-from <mirageos-devel-bounces@lists.xenproject.org>)
	id 1wqudJ-0003U5-NM; Mon, 03 Aug 2026 15:31:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1381624.1625160; Mon, 03 Aug 2026 15:31:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <mirageos-devel-bounces@lists.xenproject.org>)
	id 1wqudJ-0003Ty-JL; Mon, 03 Aug 2026 15:31:17 +0000
Received: by outflank-mailman (input) for mailman id 1381624;
 Mon, 03 Aug 2026 15:31:16 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <pierre.alain@tuta.io>) id 1wqudH-0003To-V2
 for mirageos-devel@lists.xenproject.org; Mon, 03 Aug 2026 15:31:16 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wqudF-00C9Cx-2i
 for mirageos-devel@lists.xenproject.org; Mon, 03 Aug 2026 17:31:13 +0200
Received: from [10.42.69.5] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <pierre.alain@tuta.io>)
 id 6a70b438-e002-0a2a0a5209dd-0a2a4505e2da-36
 for <mirageos-devel@lists.xenproject.org>; Mon, 03 Aug 2026 17:31:12 +0200
Received: from [185.205.69.213] (helo=mail.w13.tutanota.de)
 by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <pierre.alain@tuta.io>)
 id 6a70b440-4cb1-0a2a45050019-b9cd45d5b0b8-3
 for <mirageos-devel@lists.xenproject.org>; Mon, 03 Aug 2026 17:31:12 +0200
Received: from tutadb.w10.tutanota.de (w10.api.tuta.com [IPv6:fd:ac::d:10])
 by mail.w13.tutanota.de (Postfix) with ESMTP id 553E7168C2A4D
 for <mirageos-devel@lists.xenproject.org>;
 Mon,  3 Aug 2026 17:31:12 +0200 (CEST)
X-BeenThere: mirageos-devel@lists.xenproject.org
List-Id: Developer list for MirageOS <mirageos-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/mirageos-devel>, 
 <mailto:mirageos-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:mirageos-devel@lists.xenproject.org>
List-Help: <mailto:mirageos-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/mirageos-devel>, 
 <mailto:mirageos-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: mirageos-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "MirageOS-devel" <mirageos-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=s1 header.d=tuta.io header.i="@tuta.io" header.h="From:To:Subject:Content-Type:Content-Transfer-Encoding:Cc:Date:In-Reply-To:MIME-Version:Message-ID:References"
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1785771072;
	s=s1; d=tuta.io;
	h=From:From:To:To:Subject:Subject:Content-Description:Content-ID:Content-Type:Content-Type:Content-Transfer-Encoding:Content-Transfer-Encoding:Cc:Cc:Date:Date:In-Reply-To:In-Reply-To:MIME-Version:MIME-Version:Message-ID:Message-ID:Reply-To:References:References:Sender;
	bh=5iva2iwrfdPaZkiC9HPRvPh3TMSDSr6xvaeKFSqNpOk=;
	b=24AirDOI4bRVhABHlApDGsHFw0D13t0waZyQ/EqRuvGrOR74Qy02vuQkOCD84a2q
	jTDGGP6QX+1ty4W7xKEvv4goAHSG7jpL7pUUnD1LA6swQVjE9BIPRbPYVyztEiILl/Q
	opPXf/+7EUuC8DtvK0mRYC2gTTieU7q8wqg7Frr3zpOQWDyoswSQ/ICg48XwOe8cvNx
	cTufCgHA7RW9Q2xSo8CMBeIp0wFl5KRiyFw9uyIEZ2tJ9n4+1FIhu0bmvjfYgJP/xTl
	tk1ppP5PuJy7Dgy7OjouDZTdjm8cwO6ZrnbXmbCnjrPfwu4fDvoo5RJ2WIzAHv3VWD0
	wm+1pMEKvQ==
Date: Mon, 3 Aug 2026 17:31:12 +0200 (CEST)
From: pierre.alain@tuta.io
To: Hannes Mehnert <hannes@mehnert.org>
Cc: Mirageos Devel <mirageos-devel@lists.xenproject.org>
Message-ID: <Oz7Exx0--F-9@tuta.io>
In-Reply-To: <a67a6453-cc09-49bd-829e-f7d4338d7a31@mehnert.org-Oz730Xz--F-9>
References: <Oyt_Gow--N-9@tuta.io> <a67a6453-cc09-49bd-829e-f7d4338d7a31@mehnert.org-Oz730Xz--F-9>
Subject: Re: Mirage-net-xen and Generic Segmentation Offload, and question
 about genAI and code
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
Feedback-ID: 01eaf8ab5c4fb66a25616152514a399f598322e6638868ba822dedd227211ef3e68edf4699e2849fa51d28ca2bbb961117ec852d94c0b4e715ebab57f6709efd92:TurnOnPrivacy!:tutamail
X-purgate-ID: tlsNG-c201ff/1785771072-F46A52A1-F8F47753/0/0
X-purgate-type: clean
X-purgate-size: 3400

Dear Hannes,
Thank you for your reply.

3 ao=C3=BBt 2026, 16:38 hannes@mehnert.org wrote:

>
> That sounds great - do you have some profiling what are the expensive bit=
s compared to the linux firewall? A factor of 2 is still very high IMHO - a=
 good selling point would be a factor of 0.2 ;)
>
That's just based on some quick experiments but so far I got up to 4Gb/s by=
 using a different hypercall that vectorises grant copies. That has kept th=
e firewall below 100=E2=84=85 CPU (just under, at around 90=E2=84=85), and =
it seems the next step is to implement multiqueue communication to remove s=
tress from sys-net. So that's not a near future perspective :(
>
> From my point of view, the first item is crucial: be transparent (as you =
are) about the usage thereof. Review all the changes in detail, and figure =
out whether that is the way to go or there would be some other way (which a=
lso means, be open for constructive feedback on PRs).
>
> The license issue is a real one, where I don't have any clue about. If th=
e first point - you reviewed and now own the code - is done extensively, it=
 shouldn't be a thing to re-implement the solution you saw with your own fi=
ngers -- but that certainly won't solve the licensing in any way (since it =
is not a clean-room implementation). I wonder what a good strategy is? Mayb=
e other people who use AI a lot have some ideas about it? All I can tell is=
 that last Friday in Germany some AI music generator lost in court against =
real musicians -- so the AI generated music violates copyright. I believe t=
he same will be in the future being adapted to software and copyright.
>
> And obviously, using AI to find references, compare packets, ... is an ok=
 utilization - as long as you agree to the terms and impact (to climate, po=
litics, strengthening bigtech companies, likely more) of AI. [To make it tr=
ansparent, I never used AI, and I don't plan to use any for writing code. I=
f you're interested about some reasoning, I find the article https://superr=
r.net/en/blog/about-ai-and-unlikelihood very interesting, with lots of usef=
ul links. If you're more of an audio person, https://techwontsave.us/episod=
es also has tons of interesting episodes.]
>
To be honest l'm not thrilled to have actually found that tool so helpful. =
I'm not happy with the climate impact, nor any of all impacts you mention. =
Nor I'm happy about the social impact : I feel as though I have missed out =
a good session of sharing and coding with peers as during my only mirage re=
treat. I wanted to understand the hype with them, but I think I was too nai=
ve :(

Now the code exist, and I'm really keen to spare anyone the cost to recode =
it under a clean-room protocol.

> I am happy to review your PRs, and am not so happy to review random passi=
ng-by PRs which are heavily done by AI without any manual review (as https:=
//github.com/mirage/mirage/pull/1647).
>

Thank you for your review proposal, and I'll be glad to defend/adapt my cod=
e proposition :)

About the PR you mention, the PR text clearly feels AI-generated, perhaps t=
he code too. Clearly it should have been disclosed if that was the case. On=
 the "how to implement that" it seems straightforward enough to me to appro=
ve, but maybe it would have been better to decline due to AI usage.

Best
Pierre


From mirageos-devel-bounces@lists.xenproject.org Thu Aug 06 10:30:52 2026
Return-path: <mirageos-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Thu, 06 Aug 2026 10:30:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1384537.1627435 (Exim 4.92)
	(envelope-from <mirageos-devel-bounces@lists.xenproject.org>)
	id 1wrvMz-0006Az-66; Thu, 06 Aug 2026 10:30:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1384537.1627435; Thu, 06 Aug 2026 10:30:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <mirageos-devel-bounces@lists.xenproject.org>)
	id 1wrvMz-0006As-2d; Thu, 06 Aug 2026 10:30:37 +0000
Received: by outflank-mailman (input) for mailman id 1384537;
 Thu, 06 Aug 2026 10:30:36 +0000
Received: from mx.expurgate.net ([195.190.135.20])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <avsm2@cam.ac.uk>) id 1wrvMx-0006Am-Vc
 for mirageos-devel@lists.xenproject.org; Thu, 06 Aug 2026 10:30:36 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wrvMw-003PUC-VT
 for mirageos-devel@lists.xenproject.org; Thu, 06 Aug 2026 12:30:35 +0200
Received: from [10.42.69.8] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <avsm2@cam.ac.uk>)
 id 6a746240-2eae-0a2a0a5409dd-0a2a4508ebc4-18
 for <mirageos-devel@lists.xenproject.org>; Thu, 06 Aug 2026 12:30:34 +0200
Received: from [128.232.132.148] (helo=smtp-2.srv.uis.cam.ac.uk)
 by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <avsm2@cam.ac.uk>)
 id 6a746248-f659-0a2a45080019-80e88494df62-3
 for <mirageos-devel@lists.xenproject.org>; Thu, 06 Aug 2026 12:30:32 +0200
Received: from svr-postfix-1.cl.cam.ac.uk ([128.232.119.160]:63165)
 by smtp-2.srv.uis.cam.ac.uk with esmtps  (TLS1.3) tls TLS_AES_256_GCM_SHA384
 (Exim 4.99.4) (envelope-from <avsm2@cam.ac.uk>)
 id 1wrvMu-0000000EDjV-5A7i for mirageos-devel@lists.xenproject.org;
 Thu, 06 Aug 2026 11:30:32 +0100
Received: from fauth-c1-smtp.messagingengine.com
 (fauth-c1-smtp.messagingengine.com [204.75.18.200])
 (Authenticated sender: avsm2+cam-fm)
 by svr-postfix-1.cl.cam.ac.uk (Postfix) with ESMTPSA id 5922D4045D
 for <mirageos-devel@lists.xenproject.org>;
 Thu,  6 Aug 2026 10:30:32 +0000 (UTC)
Received: from phl-compute-05.internal (phl-compute-05.internal [10.202.2.45])
 by mailfauth.ams.internal (Postfix) with ESMTP id BAD561980045
 for <mirageos-devel@lists.xenproject.org>;
 Thu,  6 Aug 2026 06:30:31 -0400 (EDT)
Received: from phl-frontend-03 ([10.202.2.162])
 by phl-compute-05.internal (MEProxy); Thu, 06 Aug 2026 06:30:31 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA for
 <mirageos-devel@lists.xenproject.org>; Thu,
 6 Aug 2026 06:30:30 -0400 (EDT)
X-BeenThere: mirageos-devel@lists.xenproject.org
List-Id: Developer list for MirageOS <mirageos-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/mirageos-devel>, 
 <mailto:mirageos-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:mirageos-devel@lists.xenproject.org>
List-Help: <mailto:mirageos-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/mirageos-devel>, 
 <mailto:mirageos-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: mirageos-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "MirageOS-devel" <mirageos-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=20250721.smtp header.d=cam.ac.uk header.i="@cam.ac.uk" header.h="To:Date:Message-Id:Subject:Mime-Version:Content-Transfer-Encoding:Content-Type:From"
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=cam.ac.uk;
	s=20250721.smtp; h=To:Date:Message-Id:Subject:Mime-Version:
	Content-Transfer-Encoding:Content-Type:From:Sender:Reply-To:Cc:Content-ID:
	Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
	:Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
	List-Subscribe:List-Post:List-Owner:List-Archive;
	bh=pF3pNp3p3fn6/wEUXdmJR1O/U8SL/C/JbEvQv4iBTMQ=; b=bBLoVX6ST+T3B9C9OmKLI3a+kt
	5b2KHw62A1Bus1NcsKVKSrqT2NFxK+frUypMlhouKVocFSIeTQUSOi1S/NsQUaQW5ZwKpBJ31//Gq
	SCR+FG3Y3BrYKccOEcxbNk/1eee7Yh25UqtGhuSIVTvt3hyZ+nTc1gkuK6oHQs8wdXCAxRBCoT+n+
	IL0fCsKFHZlJOeffrLohJ0JBCMMoF8WbYgSQnTqBM/ZCeYuMDSHrt5RABOPhSy8+UyclJNO8FMsvF
	qXlP5KHl49Utxw/CKQcAwb9df5TkeLr8WSrgb8xwt1GD3KXEHmReY4tfk0q22GO5EjrNOoZoDm+AZ
	TuKbZFWg==;
X-Cam-AntiVirus: no malware found
X-Cam-ScannerInfo: https://help.uis.cam.ac.uk/email-scanner-virus
X-ME-Sender: <xms:R2J0arYHWXm8ahsfnWF54kV3cPFM5alOPCRCo5tNATvSTs-Fimr3CA>
    <xme:R2J0ahXhPT6RE3jKQZRFHXSifn1XYj5q7nSNN50P74BKVAGb-DHB1zGDE55te6gY0
    HBSI2bipKhMCZ_tFDL3R-5VgxtPZJiBhExyflwJLdZVBeSCiAtdHA>
X-ME-Received: <xmr:R2J0ajkfEEqDdGIVLSOdSORF7f_yiAg12FQqH5g20aZ0RMzmRHFDY9rn0MAIA7bMfEbxGyK4sfz-TMZYXFDDEsnrL2STygxX>
X-ME-Proxy-Cause: dmFkZTGR49XkGpKRMrw0Avx8zNU/p1Qyp9Wf3Lfr5B0Qi/HgPppo35A9usJPmxXyExKArZ
    IM6qexR3as2jL/apbmlK0G0YnkqFmxO8Y7UOO3elqeoo2WKp2NjuEhcGFz8K4Rn3hnmkqY
    SLY9hFlQ47Ev2gyzTdzCPvYrKtQg1NoeS/cugA3SVpaMYc1ZZ5gCIBRmA9FACUFRd3zOwm
    Ki5PiLNNbrXxp7DL6KFxQbuMF6WPvmd4nlrgrCICvyYeupn1qaiRPEeoPDkv0RBi6EQn6W
    OJJKqB3WX9UETQFlFAGL4KlIpx58u9uRYtjdQToj9ZmH+LhexWfhZ5BTKYhqrjQ+aoQPdZ
    j092eXlI04s6kc+YTapGPtuW6fH6m4AKBxgHI8Jgqrki0ctMhyX9gWesJbs3rFsyxyDN8O
    y/izIAB8cehvAD6g0/v5Q152B7BqB6Q4tTSk4+3Lrd3GvH7LaRjrV3mSx3iiBmK0vdPfwq
    Tr9FohIgI3yzEV0cDOo87ES1fM/EWqcYULZRWMoK9aeW4Br+21Co9L5V0IAuAtUbh48nAp
    Fiwu//AL6jjXv2fCDoLPGptzsor2ZWJJQ4QU35BSWfQqfCHU+0bR3CsyHlDzCvWpqsJIUl
    noCg73DGcAsTovao7fxNOTQCIu3zg7bXf+KVNfNJakdAKjwZPR6G81EFtiQA
X-ME-Proxy: <xmx:R2J0amwC7KPEHTbh1ttTl8qTacHHyEXcZKo_jDiyY2CgLZu34ZsxJQ>
    <xmx:R2J0amgFX1rBapLNYn6EG3xLyUif25dq68oKppO7yCOT3W1C7UocOw>
    <xmx:R2J0ajWq28aeqtmSNpVwbZPl-7rIfOYYuRyIm29KTjvCRQaHd95G2g>
    <xmx:R2J0ag0gTvR6_7sz8ioxppbFqVLTQ5KER-nHlTFhBpviI7766kJxCQ>
    <xmx:R2J0ahHznuCpQTKdTv-3_1rTo-NABmMVFnFt2nbrK4KIIW92x6R02geH>
Feedback-ID: i945c46d4:Fastmail
From: Anil Madhavapeddy <avsm2@cam.ac.uk>
Content-Type: text/plain;
	charset=us-ascii
Content-Transfer-Encoding: quoted-printable
Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3897.100.8.1.1\))
Subject: upcoming prometheus releases
Message-Id: <99C4B6DA-C413-4053-8C32-A1ACA8144010@cam.ac.uk>
Date: Thu, 6 Aug 2026 11:30:19 +0100
To: Mirageos Devel <mirageos-devel@lists.xenproject.org>
X-Mailer: Apple Mail (2.3897.100.8.1.1)
X-purgate-ID: tlsNG-c1860d/1786012233-D5F4787B-A46CD48E/0/0
X-purgate-type: clean
X-purgate-size: 1877

Dear all,

A heads up about some PRs in mirage/prometheus. The core `prometheus` =
library has had a dependency on Lwt which was a bit unnecessary, since =
the core metrics gathering functions (such as incrementing integers or =
clocking) do not require any blocking.

However, changing the types will break all existing consumers, and so =
Thomas Leonard suggested that we do a two step release process:

- https://github.com/mirage/prometheus/pull/66 adds a forward-compatible =
Prometheus_lwt library that are just aliases, with deprecation warnings =
on the existing functions. It also adds _fn suffixed synchronous =
versions of some metrics. Users can either mechanically convert Lwt =
code, or just use the direct functions, as they prefer, with no other =
changes.  I intend to release this as version 2.0 and can be done quite =
soon.

- https://github.com/mirage/prometheus/pull/65 then performs the =
breaking change and moves Lwt out of the core, deleting deprecated =
functions. I am also reviewing =
https://github.com/mirage/prometheus/pull/46 to see if we can take the =
opportunity to have a prometheus-reporter package to ease the dependency =
on Cohttp. This would be version 3.0 once the main branch settles, and =
once this is done it's fairly straightforward to maintain other =
concurrency library collectors out of tree.

- After all this I'm looking at OCaml runtime events being exposed, =
which would bump the minimum OCaml version up to 5.2 or so. I'm assuming =
noone who wants new prometheus features is still on OCaml 4.x, but =
please do speak up if you are.

...and is there anything else anyone wants? I'll look over the backlog =
in https://github.com/mirage/prometheus/pulls while I'm here. Thanks to =
Thomas Leonard, Mark Elvers and Romain for discussions on the various =
PRs so far!

cheers,
Anil=


From mirageos-devel-bounces@lists.xenproject.org Tue Aug 11 07:07:06 2026
Return-path: <mirageos-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xenproject.org
Delivery-date: Tue, 11 Aug 2026 07:07:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.1387933.1629185 (Exim 4.92)
	(envelope-from <mirageos-devel-bounces@lists.xenproject.org>)
	id 1wtgZd-0003lO-Eg; Tue, 11 Aug 2026 07:06:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 1387933.1629185; Tue, 11 Aug 2026 07:06:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <mirageos-devel-bounces@lists.xenproject.org>)
	id 1wtgZd-0003lH-Bz; Tue, 11 Aug 2026 07:06:57 +0000
Received: by outflank-mailman (input) for mailman id 1387933;
 Mon, 10 Aug 2026 23:29:33 +0000
Received: from mx.expurgate.net ([195.190.135.10])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <rmm1002@cam.ac.uk>) id 1wtZQz-0007EM-II
 for mirageos-devel@lists.xenproject.org; Mon, 10 Aug 2026 23:29:33 +0000
Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp
 id 1wtZQw-00A09b-KP
 for mirageos-devel@lists.xenproject.org; Tue, 11 Aug 2026 01:29:30 +0200
Received: from [10.42.69.4] (helo=localhost)
 by localhost with ESMTP (eXpurgate MTA 0.9.1)
 (envelope-from <rmm1002@cam.ac.uk>)
 id 6a7a5ea0-2eae-0a2a0a5409dd-0a2a4504c1c8-24
 for <mirageos-devel@lists.xenproject.org>; Tue, 11 Aug 2026 01:29:30 +0200
Received: from [52.101.96.80]
 (helo=LO0P265CU003.outbound.protection.outlook.com)
 by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.57.1)
 (envelope-from <rmm1002@cam.ac.uk>)
 id 6a7a5ed9-b57f-0a2a45040019-34656050716b-3
 for <mirageos-devel@lists.xenproject.org>; Tue, 11 Aug 2026 01:29:29 +0200
Received: from CWLP265MB4643.GBRP265.PROD.OUTLOOK.COM (2603:10a6:400:16a::12)
 by LOAP265MB8432.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:473::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.292.25; Mon, 10 Aug
 2026 23:29:27 +0000
Received: from CWLP265MB4643.GBRP265.PROD.OUTLOOK.COM
 ([fe80::3072:6f15:257:6360]) by CWLP265MB4643.GBRP265.PROD.OUTLOOK.COM
 ([fe80::3072:6f15:257:6360%7]) with mapi id 15.21.0292.019; Mon, 10 Aug 2026
 23:29:27 +0000
X-BeenThere: mirageos-devel@lists.xenproject.org
List-Id: Developer list for MirageOS <mirageos-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/mirageos-devel>, 
 <mailto:mirageos-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:mirageos-devel@lists.xenproject.org>
List-Help: <mailto:mirageos-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/mirageos-devel>, 
 <mailto:mirageos-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: mirageos-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "MirageOS-devel" <mirageos-devel-bounces@lists.xenproject.org>
Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector2 header.d=cam.ac.uk header.i="@cam.ac.uk" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:x-ms-exchange-senderadcheck"
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=W+Jdi0Y6Efs++CnrHLnV8f/N+VmCBKVmf1oKkKeQ5B/PCJQxx/xd/o081dU9fnz4+SDuZ3fg+l2fGI2vdnqy7O0mjtokUAFK22hU0kCTQWGQHKZsTScFU9yN6QCthzXr8SqwIkbtD6RZVpwzz7VMP7IUj2ZqQwVhPyzDMUmQJKwA563o3Aci9xS9ue6BLEpKJcJh6Fxf+XTt73EF0UXiWjc7MIVoxG1TVtH5rxVdAvHId9MjvGwrkdQFDL9hpYOw9bcCD0kOk2wHgZ3TPomuPfZCEqwzRIQbaeIvBE2i4C3VTRmMEYReZhE0QLhQjrO9iFmFT5OrBvnfri2RHvRs+A==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=0Xy/lIk64HwLGFFBlDU00VSrseHpYc4ZrHVppm5TpJQ=;
 b=HSreVsHw/pj7v5rBONwTxNMUQKGjRZb24fO83CHfZad5PLgTDg0+9fV/hYxf06QHc1wrZiczn4Eexc0XoIqMcvboXHgUQVdYzEbPirBBRwd6ZBXK1c1FGhoDsElzjlFglrPIkIxPMW0aCTiU8k7LT26VW464/ZHLhwL+bkCnr3jjwV9G5cc69wNq3rKt56Dt/jeNDQyHArkWJmvcARd5a/dcWaZD83jmse+ujVf4YaHTWDo9ryc/sIwiE3l6a0fLlg2KaagSyZGAefuN3xEQVS28zrncxLa5wZasIpq2ZV4fezHUo2FVyqr9zGiP5KwsuqoKn9VGfOMz+WR7kD5vTw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=cam.ac.uk; dmarc=pass action=none header.from=cam.ac.uk;
 dkim=pass header.d=cam.ac.uk; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cam.ac.uk;
 s=selector2;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=0Xy/lIk64HwLGFFBlDU00VSrseHpYc4ZrHVppm5TpJQ=;
 b=AUeRCVe9pw+QrSsNOB3dtpWxvrZC/A9W3WZkAwMIKUw/ClG/XuOAGICGUgAIYsz829wGl7LMadPdXlU1vmmoUtDPvUPnT5IgzEvFpOjo14PbOccHlaafuCJkwtX39FRqHj3X3M2+L5wNFgbhd7vj9Ts9xyA/js7xEQpQMSLTHlsSWpXyFlMHsPEUkl8oLFlQ3/UxHrVi8SVjWGEKFVSCOsaM7F1D2oxWUNQ/5CGZBxloC/6TCiQbDNx+qkp+wSVj9gql/mXB0M3kQm7zDAi0v6mFrfgT6CkoH1gpF8fs/o609gRl4nv0GtQodFS24k3Ls/GgoQc7O3WX9IOpzvyfqQ==
From: Richard Mortier <rmm1002@cam.ac.uk>
To: "mirageos-devel@lists.xenproject.org"
	<mirageos-devel@lists.xenproject.org>
Subject: Re: Mirage-net-xen and Generic Segmentation Offload, and question
 about genAI and code
Thread-Topic: Mirage-net-xen and Generic Segmentation Offload, and question
 about genAI and code
Thread-Index: AQHdI10dlO8Y7fF1h0+oo6kpxoga1baX+W8A
Date: Mon, 10 Aug 2026 23:29:26 +0000
Message-ID: <c2123f9a-26fb-4879-9fce-6646c9500d3c@cam.ac.uk>
References: <Oyt_Gow--N-9@tuta.io>
 <a67a6453-cc09-49bd-829e-f7d4338d7a31@mehnert.org-Oz730Xz--F-9>
 <Oz7Exx0--F-9@tuta.io>
In-Reply-To: <Oz7Exx0--F-9@tuta.io>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
user-agent: Mozilla Thunderbird
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=cam.ac.uk;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: CWLP265MB4643:EE_|LOAP265MB8432:EE_
x-ms-office365-filtering-correlation-id: 8f825218-546c-4544-1769-08def73737f9
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
 BCL:0;ARA:13230040|366016|23010399003|376014|786006|1800799024|22082099003|18002099003|4143699003|38070700021|10067099003|56012099006|11063799006|5023799004|6133799003|4133799003|3023799007;
x-microsoft-antispam-message-info:
 KyObeELSnmujf2mRaya2aymJXjVmIGneBszEhYF9gfLoi6p/Tl+7Ttj6om5nRXNVDzWhS1B0x2zOqkhcbpyVh6KB5JSr7TnHdGn53EERVxz8ctMEqLkT34tzDa1N2LO6StlmQ+T920JRI4lBx6D/FmqiERA9nY/vVPTa9vSi8ZtkzgGUb/pMJ/ngyrGHIJI7h3+goNeh/5RRWe6aTkdHYaQi/VH/XGlYKHD0DMjqVwF74cfCfD/Yd0J2cCoc3Xd3rTBtiP3KyaBWboHn2o/pLQoFTMDQBXNc8kDC38TCNovRNRZrh8zqEPA9OhkBtL4doXn+MURT2T6iwBeOtnIMMCs/aFBO9P5yA+H0cXNHYDfL6dzc7wS0AsOxdNLC/tICNK8hcCK4FYsm4pZrQeGsXrFCoJs6GdxjRGt6L0tclAZ11r35QG90CN4uFEmDNfBWNlzuiIEwD84cp0PwTbsMKczFU/9/a+PZvJ5cf7Magft8nSRI1NRJVXdZge1gMXEMuZ4VQeL11SGOV/lk4uyR6LDlrrJdTi+Mp07ahifHNBZGTHmjHP19Ce4X/3ydtgoAcmSHbaTuyzbJXx0o81mwQ/S3GKrP/8RUYo1FhJLVToZ3Gb/kFmzHXhYH4agATaEZeTD/UtqYEdYKLtrF2vTFw0hud501erxxus57t3Ry+l4=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CWLP265MB4643.GBRP265.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(366016)(23010399003)(376014)(786006)(1800799024)(22082099003)(18002099003)(4143699003)(38070700021)(10067099003)(56012099006)(11063799006)(5023799004)(6133799003)(4133799003)(3023799007);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?eVRXR01MSEZOZ2QyVW41R2ZqUnFGMGFCWFRFejlONTBvNllUUkRuV203WDZm?=
 =?utf-8?B?dFlLQTUrWkxZWlFEYnV5Y1BQWFNDczZiaENHMnpGUXBNcFl4ci9KMGRIajJD?=
 =?utf-8?B?UjVzT3RIWmhBbEhEbTAwazl5OW5SNEtWd2xTQW9jOHhYeFFrR3ZUL1lMcWEx?=
 =?utf-8?B?RnMrQlhwbVVDNnhKQU9zNnlKMmF5blk2YzYxcTJmNDFYbTZwVTVBS01JYVIx?=
 =?utf-8?B?ZGdid2pVYTYvNEQvMFkwZTdyamUwRnowZVNkRm1SK3NjTUxQT0V2M1FEcmlD?=
 =?utf-8?B?cmNBeFA2WTRHT2xvRk1NeWtNb1hiK1BmLzFUcGpLaXVYRDliVTU4a3I5b0RG?=
 =?utf-8?B?ZXpkVFVvMEU3SXF6K01URzdOWlQxMXhyWkhuWDkwTTBtemU0LzBFYStiY1U4?=
 =?utf-8?B?ckU5RkRvQTRLUVRsQVpDdDNDbHViQWl6T290YW9wQnloVXBrbnI5OFFDNVIz?=
 =?utf-8?B?NFlVbmRTamExRHNXZExvV05xc2UvNjFoRmZ0UVdadTR6a3BBRXBUQ3krVFY0?=
 =?utf-8?B?dS9BQUdPWEJYWHNoK0x6L1JndVhzckdBQmVvenMyd0hEK1dRQkdLZ3JTQ3BE?=
 =?utf-8?B?UmVlSmNoV0dkMGx1R25XOUg3Qk02QytueTBzNkxZL2pDYjRaYjZOTVVqUis5?=
 =?utf-8?B?dDFRNC9KbDZQSFcvRC9CNE9PVW5Qd0lzUVpjeGdkYjdwNkpkaGFoajAyblkw?=
 =?utf-8?B?RlFWUUJuNy9Da1c4azhWWXpPbE81c0hMZjlwSXNtM0Y5WE8yU0ZnVFpxR2xI?=
 =?utf-8?B?V2Q5ZmhlKzBvd1hnM1pUekpTSWduWDFvbVRIcTNGNGtwbk5ObXVnTXJ0N0Mr?=
 =?utf-8?B?MkhXT0xndVlPRkRpMGEwNzdidzBGNHA3WE1rM2t5MkZmNVJSbFdwTGFGNXBl?=
 =?utf-8?B?bi9XMTRoK2xqSncyZDRHdXlPNWc3WGMwZEJLaHV6RVY0czhNOTZJL3dZSCtz?=
 =?utf-8?B?R21jKzU2VHVTenlacGtwanowY0QremFMaytFTEJqaTRvbDlaZ1hwb3RqVi9i?=
 =?utf-8?B?T2RtNi9KcDF5MHNYVGJueXhZMzNCNTBlQWh2WFRib3VndFlOT21ROUhDT3Z2?=
 =?utf-8?B?L2RabVVUbzB6bkF2b0VjaFQ4ZzRtWFdhMU8vYTlDTXl5MWtQRHJQaFdJL1Zl?=
 =?utf-8?B?enZqTEQ4K2pvYnIxMFE0TjhZS2FPSTF2ZUVkS1prT28rYU1oUUpXMWlzSEtJ?=
 =?utf-8?B?cUhPLzhweGZnbUUzdXVaOEpka1Qwd3I1TGhEcXQreHdFZUp1eHpvZ1NLcWVw?=
 =?utf-8?B?UStJdlBJRE91SEU5ZTNVZzRxbGtuSmZsR3FmOGk2d1NOQWs2YlF2WWtyNFRJ?=
 =?utf-8?B?WHR2UUJQeDFmMWNtWm9ndUlWMzFoa3duN08wM1BVcW9hK3Iza1JQMmNnWW01?=
 =?utf-8?B?VXE4Wi9VYklJbC9iN0NnbC9EZ21yWUJqYU82YllTY1I5dEdYYzk0aWYwWGJE?=
 =?utf-8?B?M2k0dis2bFl6S25yUWRKQ0VlWGh5eFlTVEZISlcrSGpQM0p4d2J6OUxjam5C?=
 =?utf-8?B?K0hFWjVUU2FIeTRKcFpmcnh5anpYSmJUTFdTTThQZ1crblY2djBnQjlwK1ht?=
 =?utf-8?B?bXBnNDRBMmsvOC80QjJKb2JITkRsaXhOU1J4L1p0d2hnRTh1MFJvMFBBSUtr?=
 =?utf-8?B?Q1NzSzJPbjNsOXRrZWE1RmVLT2liKzByYXdwL1pISVRacXRCbnRBcUdTRXZM?=
 =?utf-8?B?Vjc2dDIrMUNkeUIvQXJqWkltWGZEdCtiODVFZittV1dPMEJtYzVkcjg3TnhZ?=
 =?utf-8?B?NFVSeGFETGhsSG9FZEROcmtpL3Z3VGRGSFo2RDlVWnlzWDdNQUZRaWltR2Vk?=
 =?utf-8?B?Z2crQlRWNHU1empYcE1EbVVyOWZaNHI3MkJEcVdyR3NFS2dNeHdWb0VPZllu?=
 =?utf-8?B?MHpBNk55R3JHQ3UvdU4xN0JlRTVKS0gzWjVCSUdQZjVudDZqQVFXanMzVTk0?=
 =?utf-8?B?Ryt3eEsyL3ltSGpEY0VaUGdTSXV5VXNOcWR1WmRoNExMVGhHM0lhSmgybFl4?=
 =?utf-8?B?UHNWdm5YYXR6Mjh1cTBVWC9PWnZCWHN2RjlIbXBhQU03c25qUmhoa0tISzdZ?=
 =?utf-8?B?bUlnaDREZ003UEZQMExCTHhENEkvcmFoUzJvY0Vrc0p0TW02bkZwVG5OTXk3?=
 =?utf-8?B?ZEszY04wVnFYRHBXa2h5QTdvd0g1cHBUVnlNNXBsa2cxUHYzRlZLb2RlRTVQ?=
 =?utf-8?B?SmJ0QlFacWc2M3M3OHJRWGROYTlwLzJwYVdTMEJ2NjdGSmc2d1lqKzAwRC9P?=
 =?utf-8?B?TjNBYXdrQk9pdzJCb29JK0V0NEdtR2RiSkpDUjhWVS9JcmhPcGtWTVlHVENF?=
 =?utf-8?B?K0dKSEpsbXRXa1dGS3lyOE5LZTBoVGw1ZFM1T0pvMkNsbVREK0NCUT09?=
Content-Type: text/plain; charset="utf-8"
Content-ID: <79F97CAC31EF8F49A572F9E4A810DFC8@GBRP265.PROD.OUTLOOK.COM>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: cam.ac.uk
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: CWLP265MB4643.GBRP265.PROD.OUTLOOK.COM
X-MS-Exchange-CrossTenant-Network-Message-Id: 8f825218-546c-4544-1769-08def73737f9
X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Aug 2026 23:29:26.7189
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 49a50445-bdfa-4b79-ade3-547b4f3986e9
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: F7hIeGmPOs7MiP6PWZp25derWD3mmacFNr2kRCrpOqBzvoppqxN13ddfv84FOI84K17S2Oj2p6tkxwG/bi6WhA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LOAP265MB8432
X-purgate-ID: tlsNG-ebf023/1786404570-C20D5B50-155A55AB/0/0
X-purgate-type: clean
X-purgate-size: 5076

U2xpZ2h0bHkgdGFuZ2VudGlhbCBidXQgRldJVzogcmVnYXJkaW5nIEFJIGFuZCB0aGUgbGFuZ3Vh
Z2UgdXNlZCB0byB0YWxrDQphYm91dCBBSSwgSSBmb3VuZA0KDQpodHRwczovL3d3dy50ZWNocG9s
aWN5LnByZXNzL3dlLW5lZWQtdG8tdGFsay1hYm91dC1ob3ctd2UtdGFsay1hYm91dC1haS8NCg0K
YW5kDQoNCmh0dHBzOi8vYnV0dG9uZG93bi5jb20vbWFpaHQzay9hcmNoaXZlL2hvdy10by10YWxr
LWFib3V0LWFpLXdpdGhvdXQtYWRkaW5nLXRvLXRoZS8NCg0KDQpib3RoIGludGVyZXN0aW5nIHJl
YWRzLg0KDQoNCk9uIDAzLzA4LzIwMjYgMTY6MzEsIHBpZXJyZS5hbGFpbkB0dXRhLmlvIHdyb3Rl
Og0KPiBEZWFyIEhhbm5lcywNCj4gVGhhbmsgeW91IGZvciB5b3VyIHJlcGx5Lg0KPg0KPiAzIGFv
w7t0IDIwMjYsIDE2OjM4IGhhbm5lc0BtZWhuZXJ0Lm9yZyB3cm90ZToNCj4NCj4+DQo+PiBUaGF0
IHNvdW5kcyBncmVhdCAtIGRvIHlvdSBoYXZlIHNvbWUgcHJvZmlsaW5nIHdoYXQgYXJlIHRoZSBl
eHBlbnNpdmUgYml0cyBjb21wYXJlZCB0byB0aGUgbGludXggZmlyZXdhbGw/IEEgZmFjdG9yIG9m
IDIgaXMgc3RpbGwgdmVyeSBoaWdoIElNSE8gLSBhIGdvb2Qgc2VsbGluZyBwb2ludCB3b3VsZCBi
ZSBhIGZhY3RvciBvZiAwLjIgOykNCj4+DQo+IFRoYXQncyBqdXN0IGJhc2VkIG9uIHNvbWUgcXVp
Y2sgZXhwZXJpbWVudHMgYnV0IHNvIGZhciBJIGdvdCB1cCB0byA0R2IvcyBieSB1c2luZyBhIGRp
ZmZlcmVudCBoeXBlcmNhbGwgdGhhdCB2ZWN0b3Jpc2VzIGdyYW50IGNvcGllcy4gVGhhdCBoYXMg
a2VwdCB0aGUgZmlyZXdhbGwgYmVsb3cgMTAw4oSFIENQVSAoanVzdCB1bmRlciwgYXQgYXJvdW5k
IDkw4oSFKSwgYW5kIGl0IHNlZW1zIHRoZSBuZXh0IHN0ZXAgaXMgdG8gaW1wbGVtZW50IG11bHRp
cXVldWUgY29tbXVuaWNhdGlvbiB0byByZW1vdmUgc3RyZXNzIGZyb20gc3lzLW5ldC4gU28gdGhh
dCdzIG5vdCBhIG5lYXIgZnV0dXJlIHBlcnNwZWN0aXZlIDooDQo+Pg0KPj4gIEZyb20gbXkgcG9p
bnQgb2YgdmlldywgdGhlIGZpcnN0IGl0ZW0gaXMgY3J1Y2lhbDogYmUgdHJhbnNwYXJlbnQgKGFz
IHlvdSBhcmUpIGFib3V0IHRoZSB1c2FnZSB0aGVyZW9mLiBSZXZpZXcgYWxsIHRoZSBjaGFuZ2Vz
IGluIGRldGFpbCwgYW5kIGZpZ3VyZSBvdXQgd2hldGhlciB0aGF0IGlzIHRoZSB3YXkgdG8gZ28g
b3IgdGhlcmUgd291bGQgYmUgc29tZSBvdGhlciB3YXkgKHdoaWNoIGFsc28gbWVhbnMsIGJlIG9w
ZW4gZm9yIGNvbnN0cnVjdGl2ZSBmZWVkYmFjayBvbiBQUnMpLg0KPj4NCj4+IFRoZSBsaWNlbnNl
IGlzc3VlIGlzIGEgcmVhbCBvbmUsIHdoZXJlIEkgZG9uJ3QgaGF2ZSBhbnkgY2x1ZSBhYm91dC4g
SWYgdGhlIGZpcnN0IHBvaW50IC0geW91IHJldmlld2VkIGFuZCBub3cgb3duIHRoZSBjb2RlIC0g
aXMgZG9uZSBleHRlbnNpdmVseSwgaXQgc2hvdWxkbid0IGJlIGEgdGhpbmcgdG8gcmUtaW1wbGVt
ZW50IHRoZSBzb2x1dGlvbiB5b3Ugc2F3IHdpdGggeW91ciBvd24gZmluZ2VycyAtLSBidXQgdGhh
dCBjZXJ0YWlubHkgd29uJ3Qgc29sdmUgdGhlIGxpY2Vuc2luZyBpbiBhbnkgd2F5IChzaW5jZSBp
dCBpcyBub3QgYSBjbGVhbi1yb29tIGltcGxlbWVudGF0aW9uKS4gSSB3b25kZXIgd2hhdCBhIGdv
b2Qgc3RyYXRlZ3kgaXM/IE1heWJlIG90aGVyIHBlb3BsZSB3aG8gdXNlIEFJIGEgbG90IGhhdmUg
c29tZSBpZGVhcyBhYm91dCBpdD8gQWxsIEkgY2FuIHRlbGwgaXMgdGhhdCBsYXN0IEZyaWRheSBp
biBHZXJtYW55IHNvbWUgQUkgbXVzaWMgZ2VuZXJhdG9yIGxvc3QgaW4gY291cnQgYWdhaW5zdCBy
ZWFsIG11c2ljaWFucyAtLSBzbyB0aGUgQUkgZ2VuZXJhdGVkIG11c2ljIHZpb2xhdGVzIGNvcHly
aWdodC4gSSBiZWxpZXZlIHRoZSBzYW1lIHdpbGwgYmUgaW4gdGhlIGZ1dHVyZSBiZWluZyBhZGFw
dGVkIHRvIHNvZnR3YXJlIGFuZCBjb3B5cmlnaHQuDQo+Pg0KPj4gQW5kIG9idmlvdXNseSwgdXNp
bmcgQUkgdG8gZmluZCByZWZlcmVuY2VzLCBjb21wYXJlIHBhY2tldHMsIC4uLiBpcyBhbiBvayB1
dGlsaXphdGlvbiAtIGFzIGxvbmcgYXMgeW91IGFncmVlIHRvIHRoZSB0ZXJtcyBhbmQgaW1wYWN0
ICh0byBjbGltYXRlLCBwb2xpdGljcywgc3RyZW5ndGhlbmluZyBiaWd0ZWNoIGNvbXBhbmllcywg
bGlrZWx5IG1vcmUpIG9mIEFJLiBbVG8gbWFrZSBpdCB0cmFuc3BhcmVudCwgSSBuZXZlciB1c2Vk
IEFJLCBhbmQgSSBkb24ndCBwbGFuIHRvIHVzZSBhbnkgZm9yIHdyaXRpbmcgY29kZS4gSWYgeW91
J3JlIGludGVyZXN0ZWQgYWJvdXQgc29tZSByZWFzb25pbmcsIEkgZmluZCB0aGUgYXJ0aWNsZSBo
dHRwczovL3N1cGVycnIubmV0L2VuL2Jsb2cvYWJvdXQtYWktYW5kLXVubGlrZWxpaG9vZCB2ZXJ5
IGludGVyZXN0aW5nLCB3aXRoIGxvdHMgb2YgdXNlZnVsIGxpbmtzLiBJZiB5b3UncmUgbW9yZSBv
ZiBhbiBhdWRpbyBwZXJzb24sIGh0dHBzOi8vdGVjaHdvbnRzYXZlLnVzL2VwaXNvZGVzIGFsc28g
aGFzIHRvbnMgb2YgaW50ZXJlc3RpbmcgZXBpc29kZXMuXQ0KPj4NCj4gVG8gYmUgaG9uZXN0IGwn
bSBub3QgdGhyaWxsZWQgdG8gaGF2ZSBhY3R1YWxseSBmb3VuZCB0aGF0IHRvb2wgc28gaGVscGZ1
bC4gSSdtIG5vdCBoYXBweSB3aXRoIHRoZSBjbGltYXRlIGltcGFjdCwgbm9yIGFueSBvZiBhbGwg
aW1wYWN0cyB5b3UgbWVudGlvbi4gTm9yIEknbSBoYXBweSBhYm91dCB0aGUgc29jaWFsIGltcGFj
dCA6IEkgZmVlbCBhcyB0aG91Z2ggSSBoYXZlIG1pc3NlZCBvdXQgYSBnb29kIHNlc3Npb24gb2Yg
c2hhcmluZyBhbmQgY29kaW5nIHdpdGggcGVlcnMgYXMgZHVyaW5nIG15IG9ubHkgbWlyYWdlIHJl
dHJlYXQuIEkgd2FudGVkIHRvIHVuZGVyc3RhbmQgdGhlIGh5cGUgd2l0aCB0aGVtLCBidXQgSSB0
aGluayBJIHdhcyB0b28gbmFpdmUgOigNCj4NCj4gTm93IHRoZSBjb2RlIGV4aXN0LCBhbmQgSSdt
IHJlYWxseSBrZWVuIHRvIHNwYXJlIGFueW9uZSB0aGUgY29zdCB0byByZWNvZGUgaXQgdW5kZXIg
YSBjbGVhbi1yb29tIHByb3RvY29sLg0KPg0KPj4gSSBhbSBoYXBweSB0byByZXZpZXcgeW91ciBQ
UnMsIGFuZCBhbSBub3Qgc28gaGFwcHkgdG8gcmV2aWV3IHJhbmRvbSBwYXNzaW5nLWJ5IFBScyB3
aGljaCBhcmUgaGVhdmlseSBkb25lIGJ5IEFJIHdpdGhvdXQgYW55IG1hbnVhbCByZXZpZXcgKGFz
IGh0dHBzOi8vZ2l0aHViLmNvbS9taXJhZ2UvbWlyYWdlL3B1bGwvMTY0NykuDQo+Pg0KPg0KPiBU
aGFuayB5b3UgZm9yIHlvdXIgcmV2aWV3IHByb3Bvc2FsLCBhbmQgSSdsbCBiZSBnbGFkIHRvIGRl
ZmVuZC9hZGFwdCBteSBjb2RlIHByb3Bvc2l0aW9uIDopDQo+DQo+IEFib3V0IHRoZSBQUiB5b3Ug
bWVudGlvbiwgdGhlIFBSIHRleHQgY2xlYXJseSBmZWVscyBBSS1nZW5lcmF0ZWQsIHBlcmhhcHMg
dGhlIGNvZGUgdG9vLiBDbGVhcmx5IGl0IHNob3VsZCBoYXZlIGJlZW4gZGlzY2xvc2VkIGlmIHRo
YXQgd2FzIHRoZSBjYXNlLiBPbiB0aGUgImhvdyB0byBpbXBsZW1lbnQgdGhhdCIgaXQgc2VlbXMg
c3RyYWlnaHRmb3J3YXJkIGVub3VnaCB0byBtZSB0byBhcHByb3ZlLCBidXQgbWF5YmUgaXQgd291
bGQgaGF2ZSBiZWVuIGJldHRlciB0byBkZWNsaW5lIGR1ZSB0byBBSSB1c2FnZS4NCj4NCj4gQmVz
dA0KPiBQaWVycmUNCj4NCg0KDQotLQ0KUmljaGFyZCBNb3J0aWVyDQpybW0xMDAyQGNhbS5hYy51
aw0K


