Attn: Development Editor, Latest OCaml Weekly News

Alan Schmitt <[email protected]> Tue, 16 Jun 2026 12:51:18 +0200
Newsgroups gmane.comp.lang.caml.inria
Message-ID <[email protected]>
--===-=-=
Content-Type: multipart/mixed; boundary="=-=-="

--=-=-=
Content-Type: multipart/alternative; boundary="==-=-="

--==-=-=
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: base64

SGVsbG8NCg0KSGVyZSBpcyB0aGUgbGF0ZXN0IE9DYW1sIFdlZWtseSBOZXdzLCBmb3IgdGhlIHdl
ZWsgb2YgSnVuZSAwOSB0byAxNiwNCjIwMjYuDQoNClRhYmxlIG9mIENvbnRlbnRzDQrilIDilIDi
lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIANCg0KQSBsaW5lLWJ5
LWxpbmUgdHJhbnNsYXRpb24gb2YgdGhlIE9DYW1sIHJ1bnRpbWUgZnJvbSBDIHRvIFJ1c3QNCkZp
cnN0IHJlbGVhc2UgY2FuZGlkYXRlIGZvciBPQ2FtbCA1LjUuMA0KT0NhbWwgNC4xNC4zIGZvciBQ
bGFuIDkNCk1pb3UsIGEgc2ltcGxlIHNjaGVkdWxlciBmb3IgT0NhbWwgNQ0KT0NhbWwgNC4xNC40
IHJlbGVhc2VkDQpPbGQgQ1dODQoNCg0KQSBsaW5lLWJ5LWxpbmUgdHJhbnNsYXRpb24gb2YgdGhl
IE9DYW1sIHJ1bnRpbWUgZnJvbSBDIHRvIFJ1c3QNCuKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV
kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV
kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV
kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkA0KDQogIEFyY2hp
dmU6DQogIDxodHRwczovL2Rpc2N1c3Mub2NhbWwub3JnL3QvYS1saW5lLWJ5LWxpbmUtdHJhbnNs
YXRpb24tb2YtdGhlLW9jYW1sLXJ1bnRpbWUtZnJvbS1jLXRvLXJ1c3QvMTgyNDcvMT4NCg0KDQpN
aWNoYWVsIEJhY2FyZWxsYSBhbm5vdW5jZWQNCuKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU
gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KDQog
IFRoZSBSdXN0IGNvbW11bml0eSBvd2VzIHRoZSBPQ2FtbCBjb21tdW5pdHkgYSBkZWJ0IG9mIGdy
YXRpdHVkZSwgdGhlDQogIGZpcnN0IFJ1c3QgY29tcGlsZXIgd2FzIHdyaXR0ZW4gaW4gT0NhbWwu
IEluIHRoaXMgcG9zdCB3ZSByZXdyaXRlIHRoZQ0KICBPQ2FtbCBydW50aW1lIGluIFJ1c3QuIENv
bnNpZGVyIGl0IG91ciBkb3duIHBheW1lbnQgb24gcmVwYXlpbmcgdGhlDQogIGRlYnQuIDpzYWx1
dGluZ19mYWNlOg0KDQogIE5vIE1hcmtzIFNoaW53ZWxsIHdlcmUgaGFybWVkWzFdDQoNCiAgL0Vk
aXRvcuKAmXMgbm90ZTogdGhlIHBvc3QgYmVpbmcgdG9vIGxvbmcgdG8gcmVwcm9kdWNlIGluIHRo
aXMNCiAgbmV3c2xldHRlciwgSSBlbmNvdXJhZ2UgeW91IHRvIHJlYWQgaXQgb25saW5lLi8NCg0K
DQpGaXJzdCByZWxlYXNlIGNhbmRpZGF0ZSBmb3IgT0NhbWwgNS41LjANCuKVkOKVkOKVkOKVkOKV
kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV
kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkA0KDQogIEFyY2hp
dmU6DQogIDxodHRwczovL2Rpc2N1c3Mub2NhbWwub3JnL3QvZmlyc3QtcmVsZWFzZS1jYW5kaWRh
dGUtZm9yLW9jYW1sLTUtNS0wLzE4MjUzLzE+DQoNCg0Kb2N0YWNocm9uIGFubm91bmNlZA0K4pSA
4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQoN
CiAgVGhlIHJlbGVhc2Ugb2YgT0NhbWwgNS41LjAgaXMgaW1taW5lbnQuDQoNCiAgQXMgYSBmaW5h
bCBzdGVwLCB3ZSBhcmUgcHVibGlzaGluZyBhIHJlbGVhc2UgY2FuZGlkYXRlIHRvIGNoZWNrIHRo
YXQNCiAgZXZlcnl0aGluZyBpcyBpbiBvcmRlciBiZWZvcmUgdGhlIHJlbGVhc2UgaW4gdGhlIHVw
Y29taW5nIHdlZWsuDQoNCiAgSWYgeW91IGZpbmQgYW55IGJ1Z3MsIHBsZWFzZSByZXBvcnQgdGhl
bSBvbiB0aGUgW09DYW1sJ3MgaXNzdWUNCiAgdHJhY2tlcl0uDQoNCiAgQ29tcGFyZWQgdG8gdGhl
IGZpcnN0IGJldGEsIHRoaXMgcmVsZWFzZSBjYW5kaWRhdGUgY29udGFpbnMgdHdvDQogIHJ1bnRp
bWUgZml4ZXMsIHR3byBzdGFuZGFyZCBsaWJyYXJ5IGZpeGVzLCBzaXggbWlzY2VsbGFuZW91cyBm
aXhlcyBhbmQNCiAgb25lIGRvY3VtZW50YXRpb24gdXBkYXRlLg0KDQogIFRoZSBmdWxsIGNoYW5n
ZSBsb2cgZm9yIE9DYW1sIDUuNS4wIGlzIFthdmFpbGFibGUgb24gR2l0SHViXS4NCg0KICBIYXBw
eSBoYWNraW5nLCBGbG9yaWFuIEFuZ2VsZXR0aSBmb3IgdGhlIE9DYW1sIHRlYW0uDQoNCg0KW09D
YW1sJ3MgaXNzdWUgdHJhY2tlcl0gPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC9pc3N1
ZXM+DQoNClthdmFpbGFibGUgb24gR2l0SHViXSA8aHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29j
YW1sL2Jsb2IvNS41L0NoYW5nZXM+DQoNCkluc3RhbGxhdGlvbiBpbnN0cnVjdGlvbnMNCuKVjOKV
jOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKV
jOKVjOKVjOKVjOKVjA0KDQogIFRoZSBiYXNlIGNvbXBpbGVyIGNhbiBiZSBpbnN0YWxsZWQgYXMg
YW4gb3BhbSBzd2l0Y2ggd2l0aCB0aGUNCiAgZm9sbG93aW5nIGNvbW1hbmRzIG9uIG9wYW0gMi4x
IGFuZCBsYXRlcjoNCg0KICDilIzilIDilIDilIDilIANCiAg4pSCIG9wYW0gdXBkYXRlDQogIOKU
giBvcGFtIHN3aXRjaCBjcmVhdGUgNS41LjB+cmMxDQogIOKUlOKUgOKUgOKUgOKUgA0KDQogIFRo
ZSBzb3VyY2UgY29kZSBmb3IgdGhlIHJlbGVhc2UgY2FuZGlkYXRlIGlzIGFsc28gZGlyZWN0bHkg
YXZhaWxhYmxlDQogIG9uOg0KDQogIOKAoiBHaXRIdWI6IDxodHRwczovL2dpdGh1Yi5jb20vb2Nh
bWwvb2NhbWwvYXJjaGl2ZS81LjUuMC1yYzEudGFyLmd6Pg0KICDigKIgT0NhbWwgYXJjaGl2ZXMg
YXQgSW5yaWE6DQogICAgPGh0dHBzOi8vY2FtbC5pbnJpYS5mci9wdWIvZGlzdHJpYi9vY2FtbC01
LjUvb2NhbWwtNS41LjB+cmMxLnRhci5nej4NCg0KDQpGaW5lLXR1bmVkIGNvbXBpbGVyIGNvbmZp
Z3VyYXRpb24NCuKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKV
jOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjA0KDQog
IElmIHlvdSB3YW50IHRvIHR3ZWFrIHRoZSBjb25maWd1cmF0aW9uIG9mIHRoZSBjb21waWxlciwg
eW91IGNhbiBzd2l0Y2gNCiAgdG8gdGhlIG9wdGlvbiB2YXJpYW50IHdpdGg6DQoNCiAg4pSM4pSA
4pSA4pSA4pSADQogIOKUgiBvcGFtIHVwZGF0ZQ0KICDilIIgb3BhbSBzd2l0Y2ggY3JlYXRlIDxz
d2l0Y2hfbmFtZT4gb2NhbWwtdmFyaWFudHMuNS41LjB+cmMxK29wdGlvbnMgPG9wdGlvbl9saXN0
Pg0KICDilJTilIDilIDilIDilIANCg0KICB3aGVyZSBgPG9wdGlvbl9saXN0PicgaXMgYSBzcGFj
ZS1zZXBhcmF0ZWQgbGlzdCBvZiBgb2NhbWwtb3B0aW9uLSonDQogIHBhY2thZ2VzLiBGb3IgaW5z
dGFuY2UsIGZvciBhIGBmbGFtYmRhJyBhbmQgYG5vLWZsYXQtZmxvYXQtYXJyYXknDQogIHN3aXRj
aDoNCg0KICDilIzilIDilIDilIDilIANCiAg4pSCIG9wYW0gc3dpdGNoIGNyZWF0ZSA1LjUuMH5y
YzErZmxhbWJkYStuZmZhIG9jYW1sLXZhcmlhbnRzLjUuNS4wfnJjMStvcHRpb25zIG9jYW1sLW9w
dGlvbi1mbGFtYmRhIG9jYW1sLW9wdGlvbi1uby1mbGF0LWZsb2F0LWFycmF5DQogIOKUlOKUgOKU
gOKUgOKUgA0KDQoNCiAgQWxsIGF2YWlsYWJsZSBvcHRpb25zIGNhbiBiZSBsaXN0ZWQgd2l0aCBg
b3BhbSBzZWFyY2ggb2NhbWwtb3B0aW9uJy4NCg0KDQpDaGFuZ2VzIHNpbmNlIHRoZSBmaXJzdCBi
ZXRhIHJlbGVhc2UNCuKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKV
jOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKV
jOKVjOKVjA0KDQril4ogUnVudGltZSBmaXhlcw0KDQogIOKAoiBbIzE0ODIwXTogY2FtbF9iYV9h
bGxvYyBtdXN0IGFjY291bnQgZm9yIG1lbW9yeSBpdCBhbGxvY2F0ZWQgaXRzZWxmLg0KICAgIENB
TUxfQkFfU1VCQVJSQVkgKGludHJvZHVjZWQgaW4gNS4yKSB3aXRoIGRhdGE9TlVMTCB3b3VsZCBy
ZXN1bHQgaW4NCiAgICB0aGUgR2MgYWNjb3VudGluZyBmb3IgdGhlIGFsbG9jYXRpb24gYXMgMCBi
eXRlcywgd2hpY2ggY2FuDQogICAgZXZlbnR1YWxseSBsZWFkIHRvIE9PTS4gVGhpcyBjb25kaXRp
b24gbmV2ZXIgb2NjdXJzIGluIHRoZSBjb21waWxlcg0KICAgIGl0c2VsZiwgYnV0IG9jY3VycyBp
biBleHRlcm5hbCBDIGJpbmRpbmdzIHRoYXQgYXR0ZW1wdCB0byBjcmVhdGUgYQ0KICAgIG5ldyBi
aWdhcnJheSBpbiB0aGUgc2hhcGUgb2YgYW4gZXhpc3Rpbmcgb25lLiBGb3IgYmFja3dhcmRzDQog
ICAgY29tcGF0aWJpbGl0eSBpZ25vcmUgQ0FNTF9CQV9TVUJBUlJBWSB3aGVuIGRhdGEgaXMgTlVM
TC4gIChFZHdpbg0KICAgIFTDtnLDtmssIHJldmlldyBieSBEYW1pZW4gRG9saWdleikNCg0KICDi
gKIg4oCmLCArWyMxNDcyMl06IHJ1bnRpbWUsIGZpeCBpbiB0aGUgb3JwaGFuaW5nIG9mIGVwaGVt
ZXJvbnMgKEdhYnJpZWwNCiAgICBTY2hlcmVyLCByZXZpZXcgYnkgT2xpdmllciBOaWNvbGUgYW5k
IERhbWllbiBEb2xpZ2V6LCByZXBvcnQgYnkgSmFuDQogICAgTWlkdGdhYXJkKQ0KDQoNCiAgWyMx
NDgyMF0gPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC9pc3N1ZXMvMTQ4MjA+DQoNCiAg
WyMxNDcyMl0gPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC9pc3N1ZXMvMTQ3MjI+DQoN
Cg0K4peKIFN0YW5kYXJkIGxpYnJhcnkgZml4DQoNCiAg4oCiIFsjMTQ4NTNdLCBDVkUtMjAyNi00
MTA4MywgT1NFQy0yMDI2LTA1OiBmaXggcXVvdGluZyBvZiBmaWxlbmFtZXMNCiAgICBwYXNzZWQg
dG8gYEZpbGVuYW1lLnF1b3RlX2NvbW1hbmQnIG9uIFdpbmRvd3MuICAoRGF2aWQgQWxsc29wcCwN
CiAgICByZXBvcnQgYnkgQW5kcmV3IE5lc2JpdHQsIHJldmlldyBieSBGbG9yaWFuIEFuZ2VsZXR0
aSkNCg0KICDigKIg4oCmLCArWyMxNDcxNV06IFVzZSBQT1NJWCB0aHJlYWQtc2FmZSBnZXRncm5h
bV9yLCBnZXRncmdpZF9yLA0KICAgIGdldHB3bmFtX3IsIGdldHB3dWlkX3IsIGdtdGltZV9yLCBs
b2NhbHRpbWVfciwgZ2V0bG9naW5fciwgYW5kIGZpeA0KICAgIG1rdGltZSBlcnJvciBjaGVja2lu
Zy4gIChBbnRvbmluIETDqWNpbW8sIHJldmlldyBieSBGbG9yaWFuDQogICAgQW5nZWxldHRpLCBE
YXZpZCBBbGxzb3BwLCBTdGVmYW4gTXVlbnplbCwgR2FicmllbCBTY2hlcmVyLCBhbmQgTWlvZA0K
ICAgIFZhbGxhdCkNCg0KDQogIFsjMTQ4NTNdIDxodHRwczovL2dpdGh1Yi5jb20vb2NhbWwvb2Nh
bWwvaXNzdWVzLzE0ODUzPg0KDQogIFsjMTQ3MTVdIDxodHRwczovL2dpdGh1Yi5jb20vb2NhbWwv
b2NhbWwvaXNzdWVzLzE0NzE1Pg0KDQoNCuKXiiBDb21waWxlciB1c2VyLWludGVyZmFjZSBmaXgN
Cg0KICDigKIgWyMxNDcwMl06IEZpeCBoaWRkZW4gZGlyZWN0b3J5IGZpbGVzIGxlYWtpbmcgaW50
byB0aGUgdmlzaWJsZSBsb2FkDQogICAgcGF0aCB0YWJsZS4gIFdoZW4gYSBoaWRkZW4gZGlyZWN0
b3J5IGNvbnRhaW5lZCBhIGZpbGUgd2hvc2UgYmFzZW5hbWUNCiAgICB3YXMgYWxyZWFkeSBwcmVz
ZW50LCB0aGUgZmlsZSBjb3VsZCBiZSBpbmNvcnJlY3RseSBhZGRlZCB0byB0aGUNCiAgICB2aXNp
YmxlIHRhYmxlLiAgKEh1Z28gSGV1emFyZCwgcmV2aWV3IGJ5IEZsb3JpYW4gQW5nZWxldHRpKQ0K
DQoNCiAgWyMxNDcwMl0gPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC9pc3N1ZXMvMTQ3
MDI+DQoNCg0K4peKIENvbXBpbGVybGlicyBmaXgNCg0KICDigKIgWyMxNDc5N106IGF2b2lkIGRy
b3BwaW5nIGF0dHJpYnV0ZXMgYXR0YWNoZWQgdG8gcGFja2FnZSB0eXBlcyB3aGVuDQogICAgcHJl
dHR5IHByaW50aW5nIGluIHN1cmZhY2Ugc3ludGF4LiAgKENoZXQgTXVydGh5LCByZXZpZXcgYnkg
Tmljb2zDoXMNCiAgICBPamVkYSBCw6RyKQ0KDQoNCiAgWyMxNDc5N10gPGh0dHBzOi8vZ2l0aHVi
LmNvbS9vY2FtbC9vY2FtbC9pc3N1ZXMvMTQ3OTc+DQoNCg0K4peKIENvbmZpZ3VyYXRpb24gZml4
ZXMNCg0KICDigKIgWyMxNDQ4NF06IFNldCBgX1dJTjMyX1dJTk5UJyB0byByZXF1aXJlIFdpbmRv
d3MgOC9TZXJ2ZXIgMjAxMg0KICAgIFdpbmRvd3MgaGVhZGVyIFNESyBzdXBwb3J0LiAgKEFudG9u
aW4gRMOpY2ltbywgcmV2aWV3IGJ5IERhdmlkDQogICAgQWxsc29wcCkNCg0KICDigKIgWyMxNDc2
MF0sIFsjMTQ4MDJdLCBbIzE0ODQ2XTogQ29ycmVjdCB0aGUgZGV0ZWN0aW9uIG9mIGFyZ3VtZW50
DQogICAgZGVmYXVsdHMgaW4gY29uZmlndXJlLCBmaXhpbmcgYW4gaW5jb3JyZWN0IGVycm9yIG1l
c3NhZ2Ugd2hlbg0KICAgIGluc3RhbGxpbmcgT0NhbWwgdGhyb3VnaCBvcGFtIG9uIE9wZW5TVVNF
IHdpdGggdGhlIHNpdGUtY29uZmlnDQogICAgcGFja2FnZSBpbnN0YWxsZWQuICAoRGF2aWQgQWxs
c29wcCwgcmVwb3J0IGFuZCByZXZpZXcgYnkgRWR3aW4NCiAgICBUw7Zyw7ZrKQ0KDQoNCiAgWyMx
NDQ4NF0gPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC9pc3N1ZXMvMTQ0ODQ+DQoNCiAg
WyMxNDc2MF0gPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC9pc3N1ZXMvMTQ3NjA+DQoN
CiAgWyMxNDgwMl0gPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC9pc3N1ZXMvMTQ4MDI+
DQoNCiAgWyMxNDg0Nl0gPGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC9pc3N1ZXMvMTQ4
NDY+DQoNCg0K4peKIERvY3VtZW50YXRpb24gZml4DQoNCiAg4oCiIFsjMTQ2ODRdLCBbIzE0Nzgy
XSwgWyMxNDgzOF06IEltcHJvdmUgb2NhbWxjJ3MgYW5kIG9jYW1sb3B0J3MgbWFudWFsDQogICAg
cGFnZXMgYW5kIGZpeCBzbWFsbCBpc3N1ZXMgaW4gdGhlIG1hbnVhbCAoU2FtdWVsIEh5bSwgcmV2
aWV3IGJ5DQogICAgRmxvcmlhbiBBbmdlbGV0dGksIEFudG9uaW4gRMOpY2ltbywgR2FicmllbCBT
Y2hlcmVyIGFuZCBOaWNvbMOhcyBPamVkYQ0KICAgIELDpHIpDQoNCg0KICBbIzE0Njg0XSA8aHR0
cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sL2lzc3Vlcy8xNDY4ND4NCg0KICBbIzE0NzgyXSA8
aHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sL2lzc3Vlcy8xNDc4Mj4NCg0KICBbIzE0ODM4
XSA8aHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sL2lzc3Vlcy8xNDgzOD4NCg0KDQril4og
SW50ZXJuYWwgZml4DQoNCiAg4oCiIOKApiwgK1sjMTQ1NTBdOiBBZGQgdGhlIG5vdC1yb290IGJ1
aWx0aW4gb2NhbWx0ZXN0IGFjdGlvbi4gVGhpcyBhbGxvd3MNCiAgICB0byBza2lwIHRlc3RzIHRo
YXQgZmFpbCBpZiB0aGUgY3VycmVudCB1c2VyIGlzIHJvb3QgKHN1cGVydXNlcikuDQogICAgKEth
dGUgRGVwbGFpeCwgcmV2aWV3IGJ5IEdhYnJpZWwgU2NoZXJlciwgTmljb2zDoXMgT2plZGEgQsOk
ciwgYW5kDQogICAgQW50b25pbiBEw6ljaW1vKQ0KDQoNCiAgWyMxNDU1MF0gPGh0dHBzOi8vZ2l0
aHViLmNvbS9vY2FtbC9vY2FtbC9pc3N1ZXMvMTQ1NTA+DQoNCg0KT0NhbWwgNC4xNC4zIGZvciBQ
bGFuIDkNCuKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV
kOKVkOKVkOKVkOKVkOKVkOKVkA0KDQogIEFyY2hpdmU6IDxodHRwczovL2Rpc2N1c3Mub2NhbWwu
b3JnL3Qvb2NhbWwtNC0xNC0zLWZvci1wbGFuLTkvMTgyMjMvMj4NCg0KDQpDb250aW51aW5nIHRo
aXMgdGhyZWFkLCBFZHVhcmRvIENhdmF6b3MgYW5ub3VuY2VkDQrilIDilIDilIDilIDilIDilIDi
lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi
lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi
lIDilIDilIDilIDilIANCg0KICBIZXJlJ3MgYSBkZW1vIG9mIHRoZSBvY2FtbCByZXBsIGluIHRo
ZSBhY21lIGVkaXRvciBpbiBwbGFuOSBhbmQgc29tZQ0KICBpbnRlZ3JhdGlvbiBmZWF0dXJlczoN
Cg0KICA8aHR0cHM6Ly95b3V0dS5iZS8wR1BfVjFzQUNUdz4NCg0KICBUaGUgYWNtZS1yZXBsIGRl
bW9uc3RyYXRlZCB0aGVyZSBpcyBoZXJlOg0KDQogIDxodHRwczovL2dpdGh1Yi5jb20vZGhhcm1h
dGVjaC9hY21lLXJlcGw+DQoNCg0KTWlvdSwgYSBzaW1wbGUgc2NoZWR1bGVyIGZvciBPQ2FtbCA1
DQrilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi
lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZANCg0K
ICBBcmNoaXZlOg0KICA8aHR0cHM6Ly9kaXNjdXNzLm9jYW1sLm9yZy90L2Fubi1taW91LWEtc2lt
cGxlLXNjaGVkdWxlci1mb3Itb2NhbWwtNS8xMjk2My8xOT4NCg0KDQpDYWxhc2NpYmV0dGEgUm9t
YWluIGFubm91bmNlZA0K4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA
4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQoNCiAgSSBhbSBk
ZWxpZ2h0ZWQgdG8gYW5ub3VuY2UgdGhlIHJlbGVhc2Ugb2YgW21pb3UuMC43LjBdLiBXaGlsc3Qg
dGhpcw0KICByZWxlYXNlIGlzbuKAmXQgcXVpdGUgYXMgaW1wcmVzc2l2ZSBhcyBwcmV2aW91cyBv
bmVzLCBpdCBub3cgcHJvdmlkZXMgdXMNCiAgd2l0aCBhIHB1cmUgT0NhbWwgaW1wbGVtZW50YXRp
b24gb2YgU1NIIGZvciBvdXIgdW5pa2VybmVscyEgVGhpcw0KICByZWxlYXNlIG5vdGFibHkgaW50
cm9kdWNlcyBgTWlvdS5nZXQnLCB3aGljaCBhbGxvd3MgeW91IHRvIHdhaXQgZm9yDQogIGFuZCBy
ZXRyaWV2ZSBhIHRhc2sgc2F2ZWQgaW4gYW4gb3JwaGFuOiBmb3IgdGhpcywgd2UgcmVmZXIgeW91
IHRvIG91cg0KICBkb2N1bWVudGF0aW9uIGF2YWlsYWJsZSBbaGVyZV0uDQoNCiAgVGhpcyByZWxl
YXNlIGFsc28gc3RyZW5ndGhlbnMgb3VyIGVjb3N5c3RlbSBpbiBnZW5lcmFsOiBmb2xsb3dpbmcN
CiAgYGh0dHAnLCBgdGxzJywgYHRjcC9pcCcsIGBzbXRwJywgYGRucycgYW5kIGBudHAnLCB3ZSBj
YW4gbm93IGFkZCBgc3NoJw0KICB0byB0aGUgcHJvdG9jb2xzIGF2YWlsYWJsZSBmb3Igb3VyIHVu
aWtlcm5lbHMgKGFzIHdlbGwgYXMgZm9yIE9DYW1sDQogIGFwcGxpY2F0aW9ucyBpbiBnZW5lcmFs
KS4gSXQgaXMgbGFyZ2VseSB0aGFua3MgdG8gQGhhbm5lc+KAmXMgW3dvcmtdIG9uDQogIG1pZ3Jh
dGluZyBmcm9tIGBDc3RydWN0LnQnICh3aGljaCB3ZSBhcmUgbm93IGRlcHJlY2F0aW5nKSB0byBg
c3RyaW5nJw0KICAoYSBwcm9jZXNzIHdlIGJlZ2FuIHNldmVyYWwgeWVhcnMgYWdvIGZvbGxvd2lu
ZyBvYnNlcnZhdGlvbnMgb2YNCiAgW3BlcmZvcm1hbmNlIGlzc3VlcyB3aXRoIENzdHJ1Y3QudF0p
IHRoYXQgd2UgaGF2ZSBtYW5hZ2VkIHRvIGNvbXBsZXRlDQogIGBtbmV0LXNzaCcuDQoNCiAgQW5k
IHNvLCB0aGFua3MgdG8gb3VyIHdvcmsgb24gYG5vdHR5fi9+bm90dHVpJyAoYW5kDQogIFt+bHdk
fl0oZ2l0aHViLmNvbS9sZXQtZGVmL2x3ZCkpLCBTU0ggc3VwcG9ydCBmb3IgdW5pa2VybmVscywg
YW5kIG9uZQ0KICBvZiBvdXIgTWlyYWdlT1MgcmV0cmVhdHMsIHdlIGhhdmUgcmV2aXZlZCBhIHBy
b2plY3QgZGV2ZWxvcGVkIGJ5DQogIEByZXluaXI6IFtiYW5hd2EtY2hhdF0uIEl0IGlzIGEgdW5p
a2VybmVsIHRoYXQgb2ZmZXJzICJhIGNoYXQgcm9vbSBmb3INCiAgZXZlcnlvbmUiIHZpYSBTU0g7
IHlvdSBzaW1wbHkgbmVlZCB0byBjb25uZWN0IHRvIGl0IHRvIGNoYXQgd2l0aA0KICBvdGhlcnMg
KGEgbWluaSBJUkMpIGFuZCBpdCBwcm92aWRlcyBhIFRVSSBldmVuIHRob3VnaCB0aGUgdW5pa2Vy
bmVsDQogIGRvZXMgbm90IHJlY29nbmlzZSB0aGUgY29uY2VwdCBvZiBhIHRlcm1pbmFsISBUaGUg
cHJvamVjdCBpcyBhdmFpbGFibGUNCiAgW2hlcmVdIChhbmQgYW4gYG9wYW0gcGluJyBpcyBhbGwg
eW91IG5lZWQgdG8gb2J0YWluIGBiYW5hd2EuaHZ0JykuDQoNCiAgPGh0dHBzOi8vdXMxLmRpc2Nv
dXJzZS1jZG4uY29tL2ZsZXgwMjAvdXBsb2Fkcy9vY2FtbC9vcmlnaW5hbC8yWC9lL2U4NTdmOTRk
M2Y5ZjI1NzY3ZTc5ZDJlZmNjZDg5M2YyYzRlMmUwNDQud2VicD4NCg0KICBUaGlzIGNvbnNvbGlk
YXRpb24gaXMgbm93IHRha2luZyBzaGFwZSB3aXRoIHRoZSBlbWVyZ2VuY2Ugb2YgYSBmZXcNCiAg
dW5pa2VybmVscyBhbmQgdG9vbHMsIGFuZCB3ZeKAmXJlIHRha2luZyB0aGlzIG9wcG9ydHVuaXR5
IHRvIGludHJvZHVjZQ0KICB5b3UgdG8gYSBmZXcgdGhhdCBhcmUgbm93IGF2YWlsYWJsZToNCiAg
4oCiIGFub3RoZXIgb2xkZXIgdW5pa2VybmVsIGhhcyBqdXN0IHJlYXBwZWFyZWQ6IFtwYXN0ZXVy
XSBhbmQgaXRzDQogICAgZGVwbG95bWVudCA8aHR0cHM6Ly9wYXN0ZS5vc2F1LnJlLz4uIEl0IGJy
aW5ncyBvdXIgZWZmb3J0cyB0bw0KICAgIFtgdmlmJ10gYW5kIGRlbW9uc3RyYXRlcyBob3cgdG8g
Y3JlYXRlIGEgc2ltcGxlIHdlYiBhcHBsaWNhdGlvbiBpbg0KICAgIHRoZSBmb3JtIG9mIGEgdW5p
a2VybmVsLg0KICDigKIgW2BhdXNzaSddIGlzIGEgc21hbGwgZXhwZXJpbWVudGFsIHByb2plY3Qg
dGhhdCBjYW4gYmUgdXNlZCB3aXRoDQogICAgRG9ja2VyIHRvIGRlcGxveSBTb2xvNSB1bmlrZXJu
ZWxzIHF1aXRlIHNpbXBseSAoYSBzaW1wbGUgYGRvY2tlcg0KICAgIHJ1bicgaXMgZW5vdWdoIG5v
dyEpLiBIb3dldmVyLCB3ZSBzdGlsbCByZWNvbW1lbmQgdXNpbmcgW2FsYmF0cm9zc10NCiAgICBm
b3IgcHJvZHVjdGlvbiBkZXBsb3ltZW50Lg0KICDigKIgW2BjaGFvcyddIGhhcyBmaW5hbGx5IGNy
b3NzZWQgdGhlIFJ1Ymljb24uIEhhdmluZyBzdGFydGVkIHRoaXMNCiAgICBwcm9qZWN0IGEgeWVh
ciBhZ28gdG8gZXhwZXJpbWVudCB3aXRoIG91ciBuZXcgd29ya2Zsb3csIHRoaXMgTlRQDQogICAg
c2VydmVyICgiW0Nocm9ueV0tc3R5bGUiKSBpcyBub3cgYXZhaWxhYmxlIGF0IGBvc2F1LnJlOjEy
MycNCg0KICBXZSB0aGVyZWZvcmUgY29udGludWUgdG8gb2ZmZXIgdW5pa2VybmVscyBhbmQgYWN0
aXZlbHkgdXNlIHRoZW0gaW4NCiAgb3JkZXIgdG8gaW1wcm92ZSB0aGVtLiBBcyBzdWNoLCB3ZSB3
b3VsZCBsaWtlIHRvIHRoYW5rIGV2ZXJ5b25lIHdobw0KICBwcm92aWRlcyB1cyB3aXRoIChhbnkg
a2luZCBvZikgZmVlZGJhY2sgb24gd2hhdCB3ZSBhcmUgZGV2ZWxvcGluZywNCiAgZW5hYmxpbmcg
dXMgdG8gY29sbGVjdGl2ZWx5IGltcHJvdmUgd2hhdCBvdXIgY29vcGVyYXRpdmUgY2FuIG9mZmVy
IHRoZQ0KICBPQ2FtbCBjb21tdW5pdHkgKGFuZCwgbW9yZSBicm9hZGx5LCB0aGUgdXNlcnMgb2Yg
b3VyIHVuaWtlcm5lbHMpLiBJZg0KICB5b3UgbGlrZSB3aGF0IHdlIGRvLCB5b3UgY2FuIHN1cHBv
cnQgdXMgdmlhIGEgZG9uYXRpb24gKFtkaXJlY3RseV0gb3INCiAgdmlhIFtHaXRIdWJdKS4gSGFw
cHkgaGFja2luZyENCg0KDQpbbWlvdS4wLjcuMF0gPGh0dHBzOi8vZ2l0aHViLmNvbS9yb2J1ci1j
b29wL21pb3UvcmVsZWFzZXMvdGFnL3YwLjcuMD4NCg0KW2hlcmVdIDxodHRwczovL2RvY3Mub3Nh
dS5yZS9sb2NhbC9taW91L01pb3UvaW5kZXguaHRtbCNvcnBoYW5zPg0KDQpbd29ya10gPGh0dHBz
Oi8vZ2l0aHViLmNvbS9taXJhZ2UvYXdhLXNzaC9wdWxsLzg1Pg0KDQpbcGVyZm9ybWFuY2UgaXNz
dWVzIHdpdGggQ3N0cnVjdC50XQ0KPGh0dHBzOi8vYmxvZy5yb2J1ci5jb29wL2FydGljbGVzL3Nw
ZWVkaW5nLWVjLXN0cmluZy5odG1sPg0KDQpbYmFuYXdhLWNoYXRdIDxodHRwczovL2dpdGh1Yi5j
b20vcmV5bmlyL2JhbmF3YS1jaGF0Lz4NCg0KW2hlcmVdIDxodHRwczovL2dpdGh1Yi5jb20vcmV5
bmlyL2JhbmF3YS1jaGF0L3B1bGwvMz4NCg0KW3Bhc3RldXJdIDxodHRwczovL2dpdGh1Yi5jb20v
ZGlub3NhdXJlL3Bhc3RldXI+DQoNCltgdmlmJ10gPGh0dHBzOi8vZ2l0aHViLmNvbS9yb2J1ci1j
b29wL3ZpZj4NCg0KW2BhdXNzaSddIDxodHRwczovL2dpdGh1Yi5jb20vcm9idXItY29vcC9hdXNz
aT4NCg0KW2FsYmF0cm9zc10gPGh0dHBzOi8vZ2l0aHViLmNvbS9yb2J1ci1jb29wL2FsYmF0cm9z
cz4NCg0KW2BjaGFvcyddIDxodHRwczovL2dpdGh1Yi5jb20vcm9idXItY29vcC9jaGFvcz4NCg0K
W0Nocm9ueV0gPGh0dHBzOi8vY2hyb255LXByb2plY3Qub3JnLz4NCg0KW2RpcmVjdGx5XSA8aHR0
cHM6Ly9yb2J1ci5jb29wL0RvbmF0ZT4NCg0KW0dpdEh1Yl0gPGh0dHBzOi8vZ2l0aHViLmNvbS9z
cG9uc29ycy9yb2J1ci1jb29wPg0KDQoNCk9DYW1sIDQuMTQuNCByZWxlYXNlZA0K4pWQ4pWQ4pWQ
4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQDQoN
CiAgQXJjaGl2ZTogPGh0dHBzOi8vZGlzY3Vzcy5vY2FtbC5vcmcvdC9vY2FtbC00LTE0LTQtcmVs
ZWFzZWQvMTgyNTgvMT4NCg0KDQpvY3RhY2hyb24gYW5ub3VuY2VkDQrilIDilIDilIDilIDilIDi
lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIANCg0KICBXZSBoYXZlIHRo
ZSBwbGVhc3VyZSBvZiBjZWxlYnJhdGluZyB0aGUgYW5uaXZlcnNhcnkgb2YgdGhlIGZpcnN0DQog
IGZsaWdodCBvZiBBcmlhbmUgNCBieSBhbm5vdW5jaW5nIHRoZSByZWxlYXNlIG9mIE9DYW1sIHZl
cnNpb24NCiAgNC4xNC40W14xXS4NCg0KICBUaGlzIHJlbGVhc2UgaXMgYSBjb2xsZWN0aW9uIG9m
IHNhZmUgYnVnIGZpeGVzIGFuZCBzZWN1cml0eSBmaXhlcyBmb3INCiAgdGhlIHN0YW5kYXJkIGxp
YnJhcnksIGNoZXJyeS1waWNrZWQgZnJvbSB0aGUgT0NhbWwgNSBicmFuY2guDQoNCiAgVGhlIDQu
MTQgYnJhbmNoIGlzIGV4cGVjdGVkIHRvIHJlY2VpdmUgZXBpc29kaWMgdXBkYXRlcyB1bnRpbCBh
dCBsZWFzdA0KICB0aGUgZW5kIG9mIDIwMjYuDQoNCiAgSG93ZXZlciwgdGhlIGVuZCBvZiBpdHMg
ZXh0ZW5kZWQgbWFpbnRlbmFuY2UgcGVyaW9kIGlzIG9uIHRoZSBob3Jpem9uLg0KICBDb25zZXF1
ZW50bHksIHBsZWFzZSBtZW50aW9uIHRvIHVzIGFueSBvYnN0YWNsZSByZW1haW5pbmcgdG8geW91
cg0KICBtaWdyYXRpb24gdG8gT0NhbWwgNS4NCg0KICBJbiB0aGUgbWVhbndoaWxlLCBkbyBub3Qg
aGVzaXRhdGUgdG8gcmVwb3J0IGFueSBidWdzIG9uIHRoZSBbT0NhbWwNCiAgaXNzdWUgdHJhY2tl
cl0uDQoNCiAgU2VlIHRoZSBsaXN0IG9mIGNoYW5nZXMgYmVsb3cgZm9yIG1vcmUgZGV0YWlscy4N
Cg0KICBIYXBweSBoYWNraW5nLCBGbG9yaWFuIEFuZ2VsZXR0aSBmb3IgdGhlIE9DYW1sIHRlYW0u
DQoNCiAg4oCUDQoNCg0KW09DYW1sIGlzc3VlIHRyYWNrZXJdIDxodHRwczovL2dpdGh1Yi5jb20v
b2NhbWwvb2NhbWwvaXNzdWVzPg0KDQpJbnN0YWxsYXRpb24gSW5zdHJ1Y3Rpb25zDQrilYzilYzi
lYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzilYzi
lYzilYzilYzilYwNCg0KICBUaGUgYmFzZSBjb21waWxlciBjYW4gYmUgaW5zdGFsbGVkIGFzIGFu
IG9wYW0gc3dpdGNoIHdpdGggdGhlDQogIGZvbGxvd2luZyBjb21tYW5kczoNCiAg4pSM4pSA4pSA
4pSA4pSADQogIOKUgiBvcGFtIHVwZGF0ZQ0KICDilIIgb3BhbSBzd2l0Y2ggY3JlYXRlIDQuMTQu
NA0KICDilJTilIDilIDilIDilIANCiAgVGhlIHNvdXJjZSBjb2RlIGZvciB0aGUgcmVsZWFzZSBj
YW5kaWRhdGUgaXMgYWxzbyBkaXJlY3RseSBhdmFpbGFibGUNCiAgb246DQogIOKAoiBbR2l0SHVi
XQ0KICDigKIgW0lucmlhIGFyY2hpdmVdDQoNCiAg4oCUDQoNCg0KW0dpdEh1Yl0gPGh0dHBzOi8v
Z2l0aHViLmNvbS9vY2FtbC9vY2FtbC9hcmNoaXZlLzQuMTQuNC50YXIuZ3o+DQoNCltJbnJpYSBh
cmNoaXZlXQ0KPGh0dHBzOi8vY2FtbC5pbnJpYS5mci9wdWIvZGlzdHJpYi9vY2FtbC00LjE0L29j
YW1sLTQuMTQuNC50YXIuZ3o+DQoNCg0KQ2hhbmdlcyBpbiBPQ2FtbCA0LjE0LjQgKDE1IEp1bmUg
MjAyNikNCuKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKV
jOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKV
jOKVjOKVjA0KDQril4ogQnVpbGQgc3lzdGVtOg0KDQogIOKAoiBbIzEyMzcyXSwgWyMxNDU3Ml06
IFBhc3Mgb3B0aW9uIC1uby1leGVjdXRlLW9ubHkgdG8gdGhlIGxpbmtlciBmb3INCiAgICBPcGVu
QlNEID49IDcuMyBzbyB0aGF0IGNvZGUgc2VjdGlvbnMgcmVtYWluIHJlYWRhYmxlLCBhcyBuZWVk
ZWQgZm9yDQogICAgY2xvc3VyZSBtYXJzaGFsaW5nLiAgT3JpZ2luYWxseSBiYWNrcG9ydGVkIGlu
IDQuMTQuMiwgYnV0IHRoZSBmbGFnDQogICAgd2FzIGFjY2lkZW50YWxseSBub3QgcGFzc2VkIHdo
ZW4gbGlua2luZyB0aGUgLnNvIHZlcnNpb25zIG9mIHRoZQ0KICAgIE9DYW1sIHJ1bnRpbWUgbGli
cmFyaWVzIG9yIHdoZW4gbGlua2luZyAuY214cyBmaWxlcy4gIChYYXZpZXIgTGVyb3kNCiAgICBh
bmQgQW5pbCBNYWRoYXZhcGVkZHksIHJldmlldyBieSBBbmlsIE1hZGhhdmFwZWRkeSBhbmQgU8Op
YmFzdGllbg0KICAgIEhpbmRlcmVyKQ0KDQoNCiAgWyMxMjM3Ml0gPGh0dHBzOi8vZ2l0aHViLmNv
bS9vY2FtbC9vY2FtbC9pc3N1ZXMvMTIzNzI+DQoNCiAgWyMxNDU3Ml0gPGh0dHBzOi8vZ2l0aHVi
LmNvbS9vY2FtbC9vY2FtbC9pc3N1ZXMvMTQ1NzI+DQoNCg0K4peKIEJ1ZyBmaXhlczoNCg0KICDi
gKIgWyMxNDU5OV0sIFsjMTQ2MDZdOiBvbiBBUk02NCBwbGF0Zm9ybXMsIG9jYW1sb3B0IHdhcw0K
ICAgIHVuZGVyLWVzdGltYXRpbmcgdGhlIHNpemVzIG9mIHNvbWUgaW5zdHJ1Y3Rpb25zLiAgVGhp
cyBjb3VsZCBsZWFkIHRvDQogICAgb3ZlcmZsb3dzIGluIHJlbGF0aXZlIGJyYW5jaCBvZmZzZXRz
LCByZXBvcnRlZCBhcyBlcnJvcnMgYnkgdGhlDQogICAgYXNzZW1ibGVyLiAgKFhhdmllciBMZXJv
eSwgcmV2aWV3IGJ5IFZpbmNlbnQgTGF2aXJvbiwgcmVwb3J0IGJ5DQogICAgUmFwaGHDq2wgUHJv
dXN0KQ0KDQogIOKAoiBbIzE0NjA3XTogRml4IGxpbmtpbmcgd2l0aCBsaWJhc21ydW5fc2hhcmVk
LnNvIG9uIFJpc2MtViAodW5kZWZpbmVkDQogICAgc3ltYm9sIGRlY2xhcmVkIHJpc2N2Lm8pIChE
YXZpZCBBbGxzb3BwLCByZXZpZXcgYnkgTmljb2zDoXMgT2plZGENCiAgICBCw6RyKQ0KDQogIOKA
oiBbIzE0NjYxXTogQnVpbGQgZGxsdGhyZWFkcy5zbyB3aXRoIHB0aHJlYWRzIGZsYWdzIChyZW1v
dmVkIGluDQogICAgWyMxMzAxOF0pLiBGb3Igbm9ybWFsIHByb2dyYW1zIHRoZXJlJ3Mgbm8gc2Vt
YW50aWMgZGlmZmVyZW5jZSwNCiAgICBiZWNhdXNlIG9jYW1scnVuIGFuZCBvY2FtbGMub3B0IGFy
ZSBhbHdheXMgbGlua2VkIHdpdGggcHRocmVhZHMsIGJ1dA0KICAgIGl0IHdhcyBhIHJlZ3Jlc3Np
b24gdG8gcmVxdWlyZSBwcm9ncmFtcyB3aXNoaW5nIHRvIGRsb3Blbg0KICAgIGRsbHRocmVhZHMu
c28gdG8gaGF2ZSBhbHJlYWR5IGxpbmtlZCB3aXRoIHB0aHJlYWRzIHRoZW1zZWx2ZXMuDQogICAg
KERhdmlkIEFsbHNvcHAsIHJldmlldyBieSBHYWJyaWVsIFNjaGVyZXIpDQoNCiAg4oCiIFsjMTQ2
NTVdLCBbIzE0NjkxXSwgQ1ZFLTIwMjYtMzQzNTMsIE9TRUMtMjAyNi0wNDogY2hlY2sgZm9yIHNp
emUNCiAgICBvdmVyZmxvdyBpbiBjYW1sX2JhX3Jlc2hhcGUgKFN0ZXBoZW4gRG9sYW4sIHJldmll
dyBieSBYYXZpZXIgTGVyb3kpDQoNCiAg4oCiIFsjMTQ4NTNdLCBDVkUtMjAyNi00MTA4MywgT1NF
Qy0yMDI2LTA1OiBmaXggcXVvdGluZyBvZiBmaWxlbmFtZXMNCiAgICBwYXNzZWQgdG8gRmlsZW5h
bWUucXVvdGVfY29tbWFuZCBvbiBXaW5kb3dzLiAgKERhdmlkIEFsbHNvcHAsIHJlcG9ydA0KICAg
IGJ5IEFuZHJldyBOZXNiaXR0LCByZXZpZXcgYnkgRmxvcmlhbiBBbmdlbGV0dGkpDQoNCiAgW14x
XTogVGhlIHJlbGVhc2Ugb2YgT0NhbWwgNS41LjAgaXMgcGxhbm5lZCBsYXRlciB0aGlzIHdlZWsu
DQoNCg0KICBbIzE0NTk5XSA8aHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sL2lzc3Vlcy8x
NDU5OT4NCg0KICBbIzE0NjA2XSA8aHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sL2lzc3Vl
cy8xNDYwNj4NCg0KICBbIzE0NjA3XSA8aHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sL2lz
c3Vlcy8xNDYwNz4NCg0KICBbIzE0NjYxXSA8aHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1s
L2lzc3Vlcy8xNDY2MT4NCg0KICBbIzEzMDE4XSA8aHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29j
YW1sL2lzc3Vlcy8xMzAxOD4NCg0KICBbIzE0NjU1XSA8aHR0cHM6Ly9naXRodWIuY29tL29jYW1s
L29jYW1sL2lzc3Vlcy8xNDY1NT4NCg0KICBbIzE0NjkxXSA8aHR0cHM6Ly9naXRodWIuY29tL29j
YW1sL29jYW1sL2lzc3Vlcy8xNDY5MT4NCg0KICBbIzE0ODUzXSA8aHR0cHM6Ly9naXRodWIuY29t
L29jYW1sL29jYW1sL2lzc3Vlcy8xNDg1Mz4NCg0KDQpPbGQgQ1dODQrilZDilZDilZDilZDilZDi
lZDilZANCg0KICBJZiB5b3UgaGFwcGVuIHRvIG1pc3MgYSBDV04sIHlvdSBjYW4gW3NlbmQgbWUg
YSBtZXNzYWdlXSBhbmQgSSdsbCBtYWlsDQogIGl0IHRvIHlvdSwgb3IgZ28gdGFrZSBhIGxvb2sg
YXQgW3RoZSBhcmNoaXZlXSBvciB0aGUgW1JTUyBmZWVkIG9mIHRoZQ0KICBhcmNoaXZlc10uDQoN
CiAgSWYgeW91IGFsc28gd2lzaCB0byByZWNlaXZlIGl0IGV2ZXJ5IHdlZWsgYnkgbWFpbCwgeW91
IG1heSBzdWJzY3JpYmUNCiAgdG8gdGhlIFtjYW1sLWxpc3RdLg0KDQogIFtBbGFuIFNjaG1pdHRd
DQoNCg0KW3NlbmQgbWUgYSBtZXNzYWdlXSA8bWFpbHRvOmFsYW4uc2NobWl0dEBwb2x5dGVjaG5p
cXVlLm9yZz4NCg0KW3RoZSBhcmNoaXZlXSA8aHR0cHM6Ly9hbGFuLnBldGl0ZXBvbW1lLm5ldC9j
d24vPg0KDQpbUlNTIGZlZWQgb2YgdGhlIGFyY2hpdmVzXSA8aHR0cHM6Ly9hbGFuLnBldGl0ZXBv
bW1lLm5ldC9jd24vY3duLnJzcz4NCg0KW2NhbWwtbGlzdF0gPGh0dHBzOi8vc3ltcGEuaW5yaWEu
ZnIvc3ltcGEvaW5mby9jYW1sLWxpc3Q+DQoNCltBbGFuIFNjaG1pdHRdIDxodHRwczovL2FsYW4u
cGV0aXRlcG9tbWUubmV0Lz4NCg0K
--==-=-=
Content-Type: text/html; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

<?xml version=3D"1.0" encoding=3D"utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns=3D"http://www.w3.org/1999/xhtml" lang=3D"en" xml:lang=3D"en">
<head>
<!-- 2026-06-16 Tue 12:50 -->
<meta http-equiv=3D"Content-Type" content=3D"text/html;charset=3Dutf-8" />
<meta name=3D"viewport" content=3D"width=3Ddevice-width, initial-scale=3D1"=
 />
<title>OCaml Weekly News</title>
<meta name=3D"generator" content=3D"Org Mode" />
<style type=3D"text/css">
  #content { max-width: 60em; margin: auto; }
  .title  { text-align: center;
             margin-bottom: .2em; }
  .subtitle { text-align: center;
              font-size: medium;
              font-weight: bold;
              margin-top:0; }
  .todo   { font-family: monospace; color: red; }
  .done   { font-family: monospace; color: green; }
  .priority { font-family: monospace; color: orange; }
  .tag    { background-color: #eee; font-family: monospace;
            padding: 2px; font-size: 80%; font-weight: normal; }
  .timestamp { color: #bebebe; }
  .timestamp-kwd { color: #5f9ea0; }
  .org-right  { margin-left: auto; margin-right: 0px;  text-align: right; }
  .org-left   { margin-left: 0px;  margin-right: auto; text-align: left; }
  .org-center { margin-left: auto; margin-right: auto; text-align: center; }
  .underline { text-decoration: underline; }
  #postamble p, #preamble p { font-size: 90%; margin: .2em; }
  p.verse { margin-left: 3%; }
  pre {
    border: 1px solid #e6e6e6;
    border-radius: 3px;
    background-color: #f2f2f2;
    padding: 8pt;
    font-family: monospace;
    overflow: auto;
    margin: 1.2em;
  }
  pre.src {
    position: relative;
    overflow: auto;
  }
  pre.src:before {
    display: none;
    position: absolute;
    top: -8px;
    right: 12px;
    padding: 3px;
    color: #555;
    background-color: #f2f2f299;
  }
  pre.src:hover:before { display: inline; margin-top: 14px;}
  /* Languages per Org manual */
  pre.src-asymptote:before { content: 'Asymptote'; }
  pre.src-awk:before { content: 'Awk'; }
  pre.src-authinfo::before { content: 'Authinfo'; }
  pre.src-c:before { content: 'C'; }
  pre.src-C:before { content: 'C'; }
  /* pre.src-C++ doesn't work in CSS */
  pre.src-clojure:before { content: 'Clojure'; }
  pre.src-css:before { content: 'CSS'; }
  pre.src-D:before { content: 'D'; }
  pre.src-ditaa:before { content: 'ditaa'; }
  pre.src-dot:before { content: 'Graphviz'; }
  pre.src-calc:before { content: 'Emacs Calc'; }
  pre.src-emacs-lisp:before { content: 'Emacs Lisp'; }
  pre.src-fortran:before { content: 'Fortran'; }
  pre.src-gnuplot:before { content: 'gnuplot'; }
  pre.src-haskell:before { content: 'Haskell'; }
  pre.src-hledger:before { content: 'hledger'; }
  pre.src-java:before { content: 'Java'; }
  pre.src-js:before { content: 'JavaScript'; }
  pre.src-latex:before { content: 'LaTeX'; }
  pre.src-ledger:before { content: 'Ledger'; }
  pre.src-lisp:before { content: 'Lisp'; }
  pre.src-lilypond:before { content: 'Lilypond'; }
  pre.src-lua:before { content: 'Lua'; }
  pre.src-matlab:before { content: 'MATLAB'; }
  pre.src-mscgen:before { content: 'Mscgen'; }
  pre.src-ocaml:before { content: 'Objective Caml'; }
  pre.src-octave:before { content: 'Octave'; }
  pre.src-org:before { content: 'Org mode'; }
  pre.src-oz:before { content: 'OZ'; }
  pre.src-plantuml:before { content: 'Plantuml'; }
  pre.src-processing:before { content: 'Processing.js'; }
  pre.src-python:before { content: 'Python'; }
  pre.src-R:before { content: 'R'; }
  pre.src-ruby:before { content: 'Ruby'; }
  pre.src-sass:before { content: 'Sass'; }
  pre.src-scheme:before { content: 'Scheme'; }
  pre.src-screen:before { content: 'Gnu Screen'; }
  pre.src-sed:before { content: 'Sed'; }
  pre.src-sh:before { content: 'shell'; }
  pre.src-sql:before { content: 'SQL'; }
  pre.src-sqlite:before { content: 'SQLite'; }
  /* additional languages in org.el's org-babel-load-languages alist */
  pre.src-forth:before { content: 'Forth'; }
  pre.src-io:before { content: 'IO'; }
  pre.src-J:before { content: 'J'; }
  pre.src-makefile:before { content: 'Makefile'; }
  pre.src-maxima:before { content: 'Maxima'; }
  pre.src-perl:before { content: 'Perl'; }
  pre.src-picolisp:before { content: 'Pico Lisp'; }
  pre.src-scala:before { content: 'Scala'; }
  pre.src-shell:before { content: 'Shell Script'; }
  pre.src-ebnf2ps:before { content: 'ebfn2ps'; }
  /* additional language identifiers per "defun org-babel-execute"
       in ob-*.el */
  pre.src-cpp:before  { content: 'C++'; }
  pre.src-abc:before  { content: 'ABC'; }
  pre.src-coq:before  { content: 'Coq'; }
  pre.src-groovy:before  { content: 'Groovy'; }
  /* additional language identifiers from org-babel-shell-names in
     ob-shell.el: ob-shell is the only babel language using a lambda to put
     the execution function name together. */
  pre.src-bash:before  { content: 'bash'; }
  pre.src-csh:before  { content: 'csh'; }
  pre.src-ash:before  { content: 'ash'; }
  pre.src-dash:before  { content: 'dash'; }
  pre.src-ksh:before  { content: 'ksh'; }
  pre.src-mksh:before  { content: 'mksh'; }
  pre.src-posh:before  { content: 'posh'; }
  /* Additional Emacs modes also supported by the LaTeX listings package */
  pre.src-ada:before { content: 'Ada'; }
  pre.src-asm:before { content: 'Assembler'; }
  pre.src-caml:before { content: 'Caml'; }
  pre.src-delphi:before { content: 'Delphi'; }
  pre.src-html:before { content: 'HTML'; }
  pre.src-idl:before { content: 'IDL'; }
  pre.src-mercury:before { content: 'Mercury'; }
  pre.src-metapost:before { content: 'MetaPost'; }
  pre.src-modula-2:before { content: 'Modula-2'; }
  pre.src-pascal:before { content: 'Pascal'; }
  pre.src-ps:before { content: 'PostScript'; }
  pre.src-prolog:before { content: 'Prolog'; }
  pre.src-simula:before { content: 'Simula'; }
  pre.src-tcl:before { content: 'tcl'; }
  pre.src-tex:before { content: 'TeX'; }
  pre.src-plain-tex:before { content: 'Plain TeX'; }
  pre.src-verilog:before { content: 'Verilog'; }
  pre.src-vhdl:before { content: 'VHDL'; }
  pre.src-xml:before { content: 'XML'; }
  pre.src-nxml:before { content: 'XML'; }
  /* add a generic configuration mode; LaTeX export needs an additional
     (add-to-list 'org-latex-listings-langs '(conf " ")) in .emacs */
  pre.src-conf:before { content: 'Configuration File'; }

  table { border-collapse:collapse; }
  caption.t-above { caption-side: top; }
  caption.t-bottom { caption-side: bottom; }
  td, th { vertical-align:top;  }
  th.org-right  { text-align: center;  }
  th.org-left   { text-align: center;   }
  th.org-center { text-align: center; }
  td.org-right  { text-align: right;  }
  td.org-left   { text-align: left;   }
  td.org-center { text-align: center; }
  dt { font-weight: bold; }
  .footpara { display: inline; }
  .footdef  { margin-bottom: 1em; }
  .figure { padding: 1em; }
  .figure p { text-align: center; }
  .equation-container {
    display: table;
    text-align: center;
    width: 100%;
  }
  .equation {
    vertical-align: middle;
  }
  .equation-label {
    display: table-cell;
    text-align: right;
    vertical-align: middle;
  }
  .inlinetask {
    padding: 10px;
    border: 2px solid gray;
    margin: 10px;
    background: #ffffcc;
  }
  #org-div-home-and-up
   { text-align: right; font-size: 70%; white-space: nowrap; }
  textarea { overflow-x: auto; }
  .linenr {
    font-size: smaller;
    @supports (content: attr(data-linenr)) {
      visibility: hidden;
      &::before { content: attr(data-linenr); visibility: visible; }
    }
  }
  .code-highlighted { background-color: #ffff00; }
  .org-info-js_info-navigation { border-style: none; }
  #org-info-js_console-label
    { font-size: 10px; font-weight: bold; white-space: nowrap; }
  .org-info-js_search-highlight
    { background-color: #ffff00; color: #000000; font-weight: bold; }
  .org-svg { }
</style>
<style type=3D"text/css">#table-of-contents h2 { display: none } .title { d=
isplay: none } .authorname { text-align: right }</style>
<style type=3D"text/css">.outline-2 {border-top: 1px solid black;}</style>
</head>
<body>
<div id=3D"content" class=3D"content">
<h1 class=3D"title">OCaml Weekly News</h1>
<p>
<a href=3D"https://alan.petitepomme.net/cwn/2026.06.09.html">Previous Week<=
/a> <a href=3D"https://alan.petitepomme.net/cwn/index.html">Up</a> <a href=
=3D"https://alan.petitepomme.net/cwn/2026.06.23.html">Next Week</a>
</p>

<p>
Hello
</p>

<p>
Here is the latest OCaml Weekly News, for the week of June 09 to 16, 2026.
</p>

<div id=3D"table-of-contents" role=3D"doc-toc">
<h2>Table of Contents</h2>
<div id=3D"text-table-of-contents" role=3D"doc-toc">
<ul>
<li><a href=3D"#1">A line-by-line translation of the OCaml runtime from C t=
o Rust</a></li>
<li><a href=3D"#2">First release candidate for OCaml 5.5.0</a></li>
<li><a href=3D"#3">OCaml 4.14.3 for Plan 9</a></li>
<li><a href=3D"#4">Miou, a simple scheduler for OCaml 5</a></li>
<li><a href=3D"#5">OCaml 4.14.4 released</a></li>
<li><a href=3D"#org27ba163">Old CWN</a></li>
</ul>
</div>
</div>
<div id=3D"outline-container-1" class=3D"outline-2">
<h2 id=3D"1">A line-by-line translation of the OCaml runtime from C to Rust=
</h2>
<div class=3D"outline-text-2" id=3D"text-1">
<p>
Archive: <a href=3D"https://discuss.ocaml.org/t/a-line-by-line-translation-=
of-the-ocaml-runtime-from-c-to-rust/18247/1">https://discuss.ocaml.org/t/a-=
line-by-line-translation-of-the-ocaml-runtime-from-c-to-rust/18247/1</a>
</p>
</div>
<div id=3D"outline-container-org1247a78" class=3D"outline-3">
<h3 id=3D"org1247a78">Michael Bacarella announced</h3>
<div class=3D"outline-text-3" id=3D"text-org1247a78">
<p>
The Rust community owes the OCaml community a debt of gratitude, the first =
Rust compiler was written in OCaml. In this post we rewrite the OCaml runti=
me in Rust. Consider it our down payment on repaying the debt. :saluting_fa=
ce:
</p>

<p>
No Marks Shinwell were harmed[1]
</p>

<p>
<i>Editor=E2=80=99s note: the post being too long to reproduce in this news=
letter, I encourage you to read it online.</i>
</p>
</div>
</div>
</div>
<div id=3D"outline-container-2" class=3D"outline-2">
<h2 id=3D"2">First release candidate for OCaml 5.5.0</h2>
<div class=3D"outline-text-2" id=3D"text-2">
<p>
Archive: <a href=3D"https://discuss.ocaml.org/t/first-release-candidate-for=
-ocaml-5-5-0/18253/1">https://discuss.ocaml.org/t/first-release-candidate-f=
or-ocaml-5-5-0/18253/1</a>
</p>
</div>
<div id=3D"outline-container-org774cb03" class=3D"outline-3">
<h3 id=3D"org774cb03">octachron announced</h3>
<div class=3D"outline-text-3" id=3D"text-org774cb03">
<p>
The release of OCaml 5.5.0 is imminent.
</p>

<p>
As a final step, we are publishing a release candidate to check that everyt=
hing is in order before the release in the upcoming week.
</p>

<p>
If you find any bugs, please report them on the <a href=3D"https://github.c=
om/ocaml/ocaml/issues">OCaml's issue tracker</a>.
</p>

<p>
Compared to the first beta, this release candidate contains two runtime fix=
es, two standard library fixes, six miscellaneous fixes and one documentati=
on update.
</p>

<p>
The full change log for OCaml 5.5.0 is <a href=3D"https://github.com/ocaml/=
ocaml/blob/5.5/Changes">available on GitHub</a>.
</p>

<p>
Happy hacking,
Florian Angeletti for the OCaml team.
</p>
</div>
<div id=3D"outline-container-org3ed5750" class=3D"outline-4">
<h4 id=3D"org3ed5750">Installation instructions</h4>
<div class=3D"outline-text-4" id=3D"text-org3ed5750">
<p>
The base compiler can be installed as an opam switch with the following com=
mands on opam 2.1 and later:
</p>

<pre class=3D"example" id=3D"org5764f66">
opam update
opam switch create 5.5.0~rc1
</pre>

<p>
The source code for the release candidate is also directly available on:
</p>

<ul class=3D"org-ul">
<li>GitHub: <a href=3D"https://github.com/ocaml/ocaml/archive/5.5.0-rc1.tar=
.gz">https://github.com/ocaml/ocaml/archive/5.5.0-rc1.tar.gz</a></li>
<li>OCaml archives at Inria: <a href=3D"https://caml.inria.fr/pub/distrib/o=
caml-5.5/ocaml-5.5.0~rc1.tar.gz">https://caml.inria.fr/pub/distrib/ocaml-5.=
5/ocaml-5.5.0~rc1.tar.gz</a></li>
</ul>
</div>
</div>
<div id=3D"outline-container-org4bb7534" class=3D"outline-4">
<h4 id=3D"org4bb7534">Fine-tuned compiler configuration</h4>
<div class=3D"outline-text-4" id=3D"text-org4bb7534">
<p>
If you want to tweak the configuration of the compiler, you can switch to t=
he option variant with:
</p>

<pre class=3D"example" id=3D"org00565aa">
opam update
opam switch create &lt;switch_name&gt; ocaml-variants.5.5.0~rc1+options &lt=
;option_list&gt;
</pre>

<p>
where <code>&lt;option_list&gt;</code> is a space-separated list of <code>o=
caml-option-*</code> packages. For instance, for a <code>flambda</code> and=
 <code>no-flat-float-array</code> switch:
</p>

<pre class=3D"example" id=3D"org580fe55">
opam switch create 5.5.0~rc1+flambda+nffa ocaml-variants.5.5.0~rc1+options =
ocaml-option-flambda ocaml-option-no-flat-float-array
</pre>


<p>
All available options can be listed with <code>opam search ocaml-option</co=
de>.
</p>
</div>
</div>
<div id=3D"outline-container-org2024f2f" class=3D"outline-4">
<h4 id=3D"org2024f2f">Changes since the first beta release</h4>
<div class=3D"outline-text-4" id=3D"text-org2024f2f">
</div>
<ul class=3D"org-ul">
<li><a id=3D"org7a77de3"></a>Runtime fixes<br />
<div class=3D"outline-text-5" id=3D"text-org7a77de3">
<ul class=3D"org-ul">
<li><a href=3D"https://github.com/ocaml/ocaml/issues/14820">#14820</a>: cam=
l_ba_alloc must account for memory it allocated itself.
CAML_BA_SUBARRAY (introduced in 5.2) with data=3DNULL would result in the
Gc accounting for the allocation as 0 bytes, which can eventually lead
to OOM. This condition never occurs in the compiler itself, but occurs
in external C bindings that attempt to create a new bigarray in the
shape of an existing one. For backwards compatibility ignore CAML_BA_SUBARR=
AY
when data is NULL.
(Edwin T=C3=B6r=C3=B6k, review by Damien Doligez)</li>

<li>&hellip;, +<a href=3D"https://github.com/ocaml/ocaml/issues/14722">#147=
22</a>: runtime, fix in the orphaning of ephemerons
(Gabriel Scherer, review by Olivier Nicole and Damien Doligez,
 report by Jan Midtgaard)</li>
</ul>
</div>
</li>
<li><a id=3D"org8cd0c2f"></a>Standard library fix<br />
<div class=3D"outline-text-5" id=3D"text-org8cd0c2f">
<ul class=3D"org-ul">
<li><a href=3D"https://github.com/ocaml/ocaml/issues/14853">#14853</a>, CVE=
-2026-41083,
OSEC-2026-05: fix quoting of filenames passed
to <code>Filename.quote_command</code> on Windows.
(David Allsopp, report by Andrew Nesbitt, review by Florian Angeletti)</li>

<li>&hellip;, +<a href=3D"https://github.com/ocaml/ocaml/issues/14715">#147=
15</a>: Use POSIX thread-safe getgrnam_r, getgrgid_r,
getpwnam_r, getpwuid_r, gmtime_r, localtime_r, getlogin_r, and fix mktime
error checking.
(Antonin D=C3=A9cimo, review by Florian Angeletti, David Allsopp, Stefan Mu=
enzel,
 Gabriel Scherer, and Miod Vallat)</li>
</ul>
</div>
</li>
<li><a id=3D"org954eb75"></a>Compiler user-interface fix<br />
<div class=3D"outline-text-5" id=3D"text-org954eb75">
<ul class=3D"org-ul">
<li><a href=3D"https://github.com/ocaml/ocaml/issues/14702">#14702</a>: Fix=
 hidden directory files leaking into the visible load path table.
When a hidden directory contained a file whose basename was already present,
the file could be incorrectly added to the visible table.
(Hugo Heuzard, review by Florian Angeletti)</li>
</ul>
</div>
</li>
<li><a id=3D"orgc31da87"></a>Compilerlibs fix<br />
<div class=3D"outline-text-5" id=3D"text-orgc31da87">
<ul class=3D"org-ul">
<li><a href=3D"https://github.com/ocaml/ocaml/issues/14797">#14797</a>: avo=
id dropping attributes attached to package types when pretty
printing in surface syntax.
(Chet Murthy, review by Nicol=C3=A1s Ojeda B=C3=A4r)</li>
</ul>
</div>
</li>
<li><a id=3D"orgc1b03e3"></a>Configuration fixes<br />
<div class=3D"outline-text-5" id=3D"text-orgc1b03e3">
<ul class=3D"org-ul">
<li><a href=3D"https://github.com/ocaml/ocaml/issues/14484">#14484</a>: Set=
 <code>_WIN32_WINNT</code> to require Windows 8/Server 2012 Windows header =
SDK
support.
(Antonin D=C3=A9cimo, review by David Allsopp)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/14760">#14760</a>, <a =
href=3D"https://github.com/ocaml/ocaml/issues/14802">#14802</a>, <a href=3D=
"https://github.com/ocaml/ocaml/issues/14846">#14846</a>: Correct the detec=
tion of argument defaults in
configure, fixing an incorrect error message when installing OCaml through
opam on OpenSUSE with the site-config package installed.
(David Allsopp, report and review by Edwin T=C3=B6r=C3=B6k)</li>
</ul>
</div>
</li>
<li><a id=3D"orgd17b354"></a>Documentation fix<br />
<div class=3D"outline-text-5" id=3D"text-orgd17b354">
<ul class=3D"org-ul">
<li><a href=3D"https://github.com/ocaml/ocaml/issues/14684">#14684</a>, <a =
href=3D"https://github.com/ocaml/ocaml/issues/14782">#14782</a>, <a href=3D=
"https://github.com/ocaml/ocaml/issues/14838">#14838</a>: Improve ocamlc's =
and ocamlopt's manual pages and fix
small issues in the manual
(Samuel Hym, review by Florian Angeletti, Antonin D=C3=A9cimo, Gabriel Sche=
rer and
Nicol=C3=A1s Ojeda B=C3=A4r)</li>
</ul>
</div>
</li>
<li><a id=3D"org828a459"></a>Internal fix<br />
<div class=3D"outline-text-5" id=3D"text-org828a459">
<ul class=3D"org-ul">
<li>&hellip;, +<a href=3D"https://github.com/ocaml/ocaml/issues/14550">#145=
50</a>: Add the not-root builtin ocamltest action. This
allows to skip tests that fail if the current user is root (superuser).
(Kate Deplaix, review by Gabriel Scherer, Nicol=C3=A1s Ojeda B=C3=A4r, and
 Antonin D=C3=A9cimo)</li>
</ul>
</div>
</li>
</ul>
</div>
</div>
</div>
<div id=3D"outline-container-3" class=3D"outline-2">
<h2 id=3D"3">OCaml 4.14.3 for Plan 9</h2>
<div class=3D"outline-text-2" id=3D"text-3">
<p>
Archive: <a href=3D"https://discuss.ocaml.org/t/ocaml-4-14-3-for-plan-9/182=
23/2">https://discuss.ocaml.org/t/ocaml-4-14-3-for-plan-9/18223/2</a>
</p>
</div>
<div id=3D"outline-container-org31cbceb" class=3D"outline-3">
<h3 id=3D"org31cbceb">Continuing this thread, Eduardo Cavazos announced</h3>
<div class=3D"outline-text-3" id=3D"text-org31cbceb">
<p>
Here's a demo of the ocaml repl in the acme editor in plan9 and some integr=
ation features:
</p>

<p>
<a href=3D"https://youtu.be/0GP_V1sACTw">https://youtu.be/0GP_V1sACTw</a>
</p>

<p>
The acme-repl demonstrated there is here:
</p>

<p>
<a href=3D"https://github.com/dharmatech/acme-repl">https://github.com/dhar=
matech/acme-repl</a>
</p>
</div>
</div>
</div>
<div id=3D"outline-container-4" class=3D"outline-2">
<h2 id=3D"4">Miou, a simple scheduler for OCaml 5</h2>
<div class=3D"outline-text-2" id=3D"text-4">
<p>
Archive: <a href=3D"https://discuss.ocaml.org/t/ann-miou-a-simple-scheduler=
-for-ocaml-5/12963/19">https://discuss.ocaml.org/t/ann-miou-a-simple-schedu=
ler-for-ocaml-5/12963/19</a>
</p>
</div>
<div id=3D"outline-container-orgbaadee6" class=3D"outline-3">
<h3 id=3D"orgbaadee6">Calascibetta Romain announced</h3>
<div class=3D"outline-text-3" id=3D"text-orgbaadee6">
<p>
I am delighted to announce the release of <a href=3D"https://github.com/rob=
ur-coop/miou/releases/tag/v0.7.0">miou.0.7.0</a>. Whilst this release isn=
=E2=80=99t quite as impressive as previous ones, it now provides us with a =
pure OCaml implementation of SSH for our unikernels! This release notably i=
ntroduces <code>Miou.get</code>, which allows you to wait for and retrieve =
a task saved in an orphan: for this, we refer you to our documentation avai=
lable <a href=3D"https://docs.osau.re/local/miou/Miou/index.html#orphans">h=
ere</a>.
</p>

<p>
This release also strengthens our ecosystem in general: following <code>htt=
p</code>, <code>tls</code>, <code>tcp/ip</code>, <code>smtp</code>, <code>d=
ns</code> and <code>ntp</code>, we can now add <code>ssh</code> to the prot=
ocols available for our unikernels (as well as for OCaml applications in ge=
neral). It is largely thanks to @hannes=E2=80=99s <a href=3D"https://github=
.com/mirage/awa-ssh/pull/85">work</a> on migrating from <code>Cstruct.t</co=
de> (which we are now deprecating) to <code>string</code> (a process we beg=
an several years ago following observations of <a href=3D"https://blog.robu=
r.coop/articles/speeding-ec-string.html">performance issues with Cstruct.t<=
/a>) that we have managed to complete <code>mnet-ssh</code>.
</p>

<p>
And so, thanks to our work on <code>notty~/~nottui</code> (and [~lwd~](gith=
ub.com/let-def/lwd)), SSH support for unikernels, and one of our MirageOS r=
etreats, we have revived a project developed by @reynir: <a href=3D"https:/=
/github.com/reynir/banawa-chat/">banawa-chat</a>. It is a unikernel that of=
fers "a chat room for everyone" via SSH; you simply need to connect to it t=
o chat with others (a mini IRC) and it provides a TUI even though the unike=
rnel does not recognise the concept of a terminal! The project is available=
 <a href=3D"https://github.com/reynir/banawa-chat/pull/3">here</a> (and an =
<code>opam pin</code> is all you need to obtain <code>banawa.hvt</code>).
</p>


<div id=3D"org4e1c8f0" class=3D"figure">
<p><img src=3D"https://us1.discourse-cdn.com/flex020/uploads/ocaml/original=
/2X/e/e857f94d3f9f25767e79d2efccd893f2c4e2e044.webp" alt=3D"e857f94d3f9f257=
67e79d2efccd893f2c4e2e044.webp" width=3D"80%" />
</p>
</div>

<p>
This consolidation is now taking shape with the emergence of a few unikerne=
ls and tools, and we=E2=80=99re taking this opportunity to introduce you to=
 a few that are now available:
</p>
<ul class=3D"org-ul">
<li>another older unikernel has just reappeared: <a href=3D"https://github.=
com/dinosaure/pasteur">pasteur</a> and its deployment <a href=3D"https://pa=
ste.osau.re/">https://paste.osau.re/</a>. It brings our efforts to <a href=
=3D"https://github.com/robur-coop/vif"><code>vif</code></a> and demonstrate=
s how to create a simple web application in the form of a unikernel.</li>
<li><a href=3D"https://github.com/robur-coop/aussi"><code>aussi</code></a> =
is a small experimental project that can be used with Docker to deploy Solo=
5 unikernels quite simply (a simple <code>docker run</code> is enough now!)=
. However, we still recommend using <a href=3D"https://github.com/robur-coo=
p/albatross">albatross</a> for production deployment.</li>
<li><a href=3D"https://github.com/robur-coop/chaos"><code>chaos</code></a> =
has finally crossed the Rubicon. Having started this project a year ago to =
experiment with our new workflow, this NTP server ("<a href=3D"https://chro=
ny-project.org/">Chrony</a>-style") is now available at <code>osau.re:123</=
code></li>
</ul>

<p>
We therefore continue to offer unikernels and actively use them in order to=
 improve them. As such, we would like to thank everyone who provides us wit=
h (any kind of) feedback on what we are developing, enabling us to collecti=
vely improve what our cooperative can offer the OCaml community (and, more =
broadly, the users of our unikernels). If you like what we do, you can supp=
ort us via a donation (<a href=3D"https://robur.coop/Donate">directly</a> o=
r via <a href=3D"https://github.com/sponsors/robur-coop">GitHub</a>). Happy=
 hacking!
</p>
</div>
</div>
</div>
<div id=3D"outline-container-5" class=3D"outline-2">
<h2 id=3D"5">OCaml 4.14.4 released</h2>
<div class=3D"outline-text-2" id=3D"text-5">
<p>
Archive: <a href=3D"https://discuss.ocaml.org/t/ocaml-4-14-4-released/18258=
/1">https://discuss.ocaml.org/t/ocaml-4-14-4-released/18258/1</a>
</p>
</div>
<div id=3D"outline-container-orgdd087f8" class=3D"outline-3">
<h3 id=3D"orgdd087f8">octachron announced</h3>
<div class=3D"outline-text-3" id=3D"text-orgdd087f8">
<p>
We have the pleasure of celebrating the anniversary of the first flight of =
Ariane 4 by announcing the release of OCaml version 4.14.4[^1].
</p>

<p>
This release is a collection of safe bug fixes and security fixes for the s=
tandard library, cherry-picked from the OCaml 5 branch.
</p>

<p>
The 4.14 branch is expected to receive episodic updates until at least the =
end of 2026.
</p>

<p>
However, the end of its extended maintenance period is on the horizon.
Consequently, please mention to us any obstacle remaining to your migration=
 to OCaml 5.
</p>

<p>
In the meanwhile, do not hesitate to report any bugs on the <a href=3D"http=
s://github.com/ocaml/ocaml/issues">OCaml issue tracker</a>.
</p>

<p>
See the list of changes below for more details.
</p>

<p>
Happy hacking,
Florian Angeletti for the OCaml team.
</p>

<p>
&mdash;
</p>
</div>
<div id=3D"outline-container-orge23a753" class=3D"outline-4">
<h4 id=3D"orge23a753">Installation Instructions</h4>
<div class=3D"outline-text-4" id=3D"text-orge23a753">
<p>
The base compiler can be installed as an opam switch with the following com=
mands:
</p>
<pre class=3D"example" id=3D"org3f3099a">
opam update
opam switch create 4.14.4
</pre>
<p>
The source code for the release candidate is also directly available on:
</p>
<ul class=3D"org-ul">
<li><a href=3D"https://github.com/ocaml/ocaml/archive/4.14.4.tar.gz">GitHub=
</a></li>
<li><a href=3D"https://caml.inria.fr/pub/distrib/ocaml-4.14/ocaml-4.14.4.ta=
r.gz">Inria archive</a></li>
</ul>

<p>
&mdash;
</p>
</div>
</div>
<div id=3D"outline-container-orgdbad92c" class=3D"outline-4">
<h4 id=3D"orgdbad92c">Changes in OCaml 4.14.4 (15 June 2026)</h4>
<div class=3D"outline-text-4" id=3D"text-orgdbad92c">
</div>
<ul class=3D"org-ul">
<li><a id=3D"org44c9a67"></a>Build system:<br />
<div class=3D"outline-text-5" id=3D"text-org44c9a67">
<ul class=3D"org-ul">
<li><a href=3D"https://github.com/ocaml/ocaml/issues/12372">#12372</a>, <a =
href=3D"https://github.com/ocaml/ocaml/issues/14572">#14572</a>: Pass optio=
n -no-execute-only to the linker for OpenBSD &gt;=3D 7.3
so that code sections remain readable, as needed for closure marshaling.
Originally backported in 4.14.2, but the flag was accidentally not passed w=
hen
linking the .so versions of the OCaml runtime libraries or when linking .cm=
xs
files.
(Xavier Leroy and Anil Madhavapeddy, review by Anil Madhavapeddy and
S=C3=A9bastien Hinderer)</li>
</ul>
</div>
</li>
<li><a id=3D"org8493e15"></a>Bug fixes:<br />
<div class=3D"outline-text-5" id=3D"text-org8493e15">
<ul class=3D"org-ul">
<li><a href=3D"https://github.com/ocaml/ocaml/issues/14599">#14599</a>, <a =
href=3D"https://github.com/ocaml/ocaml/issues/14606">#14606</a>: on ARM64 p=
latforms, ocamlopt was under-estimating
the sizes of some instructions.  This could lead to overflows in
relative branch offsets, reported as errors by the assembler.
(Xavier Leroy, review by Vincent Laviron, report by Rapha=C3=ABl Proust)</l=
i>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/14607">#14607</a>: Fix=
 linking with libasmrun_shared.so on Risc-V (undefined symbol
declared riscv.o)
(David Allsopp, review by Nicol=C3=A1s Ojeda B=C3=A4r)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/14661">#14661</a>: Bui=
ld dllthreads.so with pthreads flags (removed in <a href=3D"https://github.=
com/ocaml/ocaml/issues/13018">#13018</a>). For
normal programs there's no semantic difference, because ocamlrun and
ocamlc.opt are always linked with pthreads, but it was a regression to requ=
ire
programs wishing to dlopen dllthreads.so to have already linked with pthrea=
ds
themselves.
(David Allsopp, review by Gabriel Scherer)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/14655">#14655</a>, <a =
href=3D"https://github.com/ocaml/ocaml/issues/14691">#14691</a>, CVE-2026-3=
4353, OSEC-2026-04: check for size overflow in
caml_ba_reshape
(Stephen Dolan, review by Xavier Leroy)</li>

<li><a href=3D"https://github.com/ocaml/ocaml/issues/14853">#14853</a>, CVE=
-2026-41083, OSEC-2026-05: fix quoting of filenames passed to
Filename.quote_command on Windows.
(David Allsopp, report by Andrew Nesbitt, review by Florian Angeletti)</li>
</ul>

<p>
[^1]: The release of OCaml 5.5.0 is planned later this week.
</p>
</div>
</li>
</ul>
</div>
</div>
</div>
<div id=3D"outline-container-org27ba163" class=3D"outline-2">
<h2 id=3D"org27ba163">Old CWN</h2>
<div class=3D"outline-text-2" id=3D"text-org27ba163">
<p>
If you happen to miss a CWN, you can <a href=3D"mailto:alan.schmitt@polytec=
hnique.org">send me a message</a> and I'll mail it to you, or go take a loo=
k at <a href=3D"https://alan.petitepomme.net/cwn/">the archive</a> or the <=
a href=3D"https://alan.petitepomme.net/cwn/cwn.rss">RSS feed of the archive=
s</a>.
</p>

<p>
If you also wish to receive it every week by mail, you may subscribe to the=
 <a href=3D"https://sympa.inria.fr/sympa/info/caml-list">caml-list</a>.
</p>

<div class=3D"authorname" id=3D"org8f22643">
<p>
<a href=3D"https://alan.petitepomme.net/">Alan Schmitt</a>
</p>

</div>
</div>
</div>
</div>
</body>
</html>


--==-=-=--

--=-=-=--

--===-=-=
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iQFvBAEBCABZFiEE6lXof/BsSVW56ZmGBA0KO07S5ccFAmoxKqYbFIAAAAAABAAO
bWFudTIsMi41KzEuMTIsMCwzHxxhbGFuLnNjaG1pdHRAcG9seXRlY2huaXF1ZS5v
cmcACgkQBA0KO07S5cfrCQgAiBc63j8aCOd4/BY29dyJrhl8SA0xRBJ37+t4YRbO
J245W7kC9SPyGnG7afmHnwloOTR8lHR4uaCL4VFBgkSbxpPbuYZQA0yaQnkdsmQa
zBf1IG4zHJ2m46ubVjv/VRsucfhwCjBtbEEKuEmpk1MmgvIgZJ8itAZwj1xGJeID
CT24oPKNiM/6StaxPv7eRsR/B6k3tD3JjY9VXDpWiWA2rLiSWCSaUfVIOW2j4sOH
366ENpuAs6fegHnbcWbrLWuk59bMeC14GFrvZjfzTQ3stw+zNn/eOEAMq8LCMIVm
XNcU2XHUovpseuTj8qzKxg5F8wfrRRJFwj4fWNjUFuubYQ==
=T2tS
-----END PGP SIGNATURE-----
--===-=-=--