Attn: Development Editor, Latest OCaml Weekly News
Alan Schmitt <[email protected]> Tue, 17 Mar 2026 15:39:05 +0100
| Newsgroups | gmane.comp.lang.caml.inria |
|---|---|
| Message-ID | <[email protected]> |
--=-=-=
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: base64
SGVsbG8NCg0KSGVyZSBpcyB0aGUgbGF0ZXN0IE9DYW1sIFdlZWtseSBOZXdzLCBmb3IgdGhlIHdl
ZWsgb2YgTWFyY2ggMTAgdG8gMTcsDQoyMDI2Lg0KDQpUYWJsZSBvZiBDb250ZW50cw0K4pSA4pSA
4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQoNClB1YmxpYyBz
ZWN1cml5IG1lZXRpbmcNCkdvb2dsZSBPUi1Ub29sczogQ1AtU0FUIFN1YnNldA0KTmVvY2FtbC1t
b2RlIChBIG1vZGVybiBFbWFjcyBtYWpvciBtb2RlIGZvciBPQ2FtbCkgaXMgbG9va2luZyBmb3Ig
dGVzdGVycw0Kb3VpOiBtdWx0aS1wbGF0Zm9ybSBiaW5hcnkgaW5zdGFsbGVycw0KTml4dGFtYWw6
IEZ1bGZpbGxpbmcgSW5wdXQgUGlubmluZyBmb3IgTml4DQpPQ2FtbC1SREYgMS4yLjANClNsaXBz
aG93IQ0KSXMgdGhlcmUgYSBwdWJsaWMgYXJjaGl2ZSBmb3IgdGhlIGNhbWwtbGlzdD8NCk9sZCBD
V04NCg0KDQpQdWJsaWMgc2VjdXJpeSBtZWV0aW5nDQrilZDilZDilZDilZDilZDilZDilZDilZDi
lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZANCg0KICBBcmNoaXZlOiA8
aHR0cHM6Ly9kaXNjdXNzLm9jYW1sLm9yZy90L3B1YmxpYy1zZWN1cml5LW1lZXRpbmcvMTc4ODIv
MT4NCg0KDQpIYW5uZXMgTWVobmVydCBhbm5vdW5jZWQNCuKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU
gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KDQogIERl
YXIgZXZlcnlvbmUsDQoNCiAgYXMgYSByZW1pbmRlciDigJMgbmV4dCB3ZWVrIFRodXJzZGF5IChN
YXJjaCAxOXRoKSAxNDowMCBDRVNULCB0aGVyZSB3aWxsDQogIGJlIGEgcHVibGljIE9DYW1sIHNl
Y3VyaXR5IG1lZXRpbmcgaG9zdGVkIGJ5IHRoZQ0KICA8aHR0cHM6Ly9vY2FtbC5vcmcvc2VjdXJp
dHk+IHRlYW0uIFdlIHdpbGwgbWVldCBhdA0KICA8aHR0cHM6Ly9tZWV0LmJvcm5oYWNrLmRrL09D
YW1sU2VjdXJpdHlQdWJsaWNNZWV0aW5nPg0KDQogIE91ciBhZ2VuZGEgYW5kIG5vdGVzIHdpbGwg
YmUgYXQNCiAgPGh0dHBzOi8vcGFkLmRhdGEuY29vcC9JZTV2b0JlUFNpS3ZqWmRFa282b3RRPiMN
Cg0KICBJZiB5b3UncmUgY3VyaW91cywgdGhlIG5vdGVzIGZyb20gb3VyIGxhc3QgbWVldGluZyBh
cmUgYXQNCiAgPGh0dHBzOi8vcGFkLmRhdGEuY29vcC83LUljNXJHNlRveW5zVzAyaEpzbmRnPg0K
DQogIEhvcGUgdG8gc2VlIHlvdSB0aGVyZSENCg0KDQpHb29nbGUgT1ItVG9vbHM6IENQLVNBVCBT
dWJzZXQNCuKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV
kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkA0KDQogIEFyY2hpdmU6DQog
IDxodHRwczovL2Rpc2N1c3Mub2NhbWwub3JnL3QvZ29vZ2xlLW9yLXRvb2xzLWNwLXNhdC1zdWJz
ZXQvMTc4ODUvMT4NCg0KDQpUaW1vdGh5IEJvdXJrZSBhbm5vdW5jZWQNCuKUgOKUgOKUgOKUgOKU
gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU
gA0KDQogIFRoZSBbR29vZ2xlIE9SLVRvb2xzXSBhcmUgYSBzdWl0ZSBvZiB0b29scyBmb3Igc29s
dmluZyBvcHRpbWl6YXRpb24NCiAgcHJvYmxlbXMuIFRoZXkgaW5jbHVkZSwgaW4gcGFydGljdWxh
ciwgW0NQLVNBVF0sIHdoaWNoIGlzIGEgcG93ZXJmdWwNCiAgY29uc3RyYWludCBzb2x2ZXIgYW5k
IG9wdGltaXplciBmb3IgaW50ZWdlciBsaW5lYXIgcHJvZ3JhbW1pbmcgYW5kDQogIGJvb2xlYW4g
c2F0aXNmaWFiaWxpdHkgcHJvYmxlbXMuDQoNCiAgVGhlIFtvY2FtbC1vcnRvb2xzXSBwYWNrYWdl
IHByb3ZpZGVzIGFuIE9DYW1sIGludGVyZmFjZSB0byBhIHN1YnNldCBvZg0KICBDUC1TQVQgY29u
c3RyYWludHMuIEl0IGNvbXByaXNlcyB0d28gcGFydHMgYG9ydG9vbHNgLCB3aGljaCBhbGxvd3MN
CiAgbW9kZWxsaW5nIGNvbnN0cmFpbnQgcHJvYmxlbXMgaW4gT0NhbWwgYW5kIHRyYW5zbGF0aW5n
IHRoZW0gdG8gYQ0KICBwcm90b2NvbCBidWZmZXIgZm9ybWF0ICh0aGFua3MgdG8gW29jYW1sLXBy
b3RjXSksIGFuZA0KICBgb3J0b29sc19zb2x2ZXJzYCwgd2hpY2ggYWxsb3dzIGFuIGVtYmVkZGVk
IHZlcnNpb24gb2YgQ1AtU0FUIHRvIGJlDQogIGNhbGxlZCBkaXJlY3RseSBmcm9tIE9DYW1sLiBC
b3RoIHBhcnRzIGNhbiBiZSBpbnN0YWxsZWQgdXNpbmcgb3BhbSBvcg0KICBidWlsdCB3aXRoIGR1
bmUuIFRoZSBsYXR0ZXIgaW5jbHVkZXMgdGhlIHNvdXJjZSBvZiBPUi1Ub29scyA5LjE1IHdoaWNo
DQogIGlzIGJ1aWx0IHRvZ2V0aGVyIHdpdGggbW9zdCBvZiBpdHMgbGlicmFyaWVzIGFuZCBpbnN0
YWxsZWQgYXMgcGFydCBvZg0KICB0aGUgb3BhbSBwYWNrYWdlLg0KDQogIFNvbWUgc2ltcGxlIGV4
YW1wbGVzIGNhbiBiZSBmb3VuZCBpbiB0aGUgW29ubGluZSBkb2N1bWVudGF0aW9uXSBhbmQNCiAg
W3NvdXJjZSBjb2RlXS4gVGhleSBjYW4gYmUgYnVpbHQgdXNpbmcgdGhlIGZvbGxvd2luZyBjb21t
YW5kcy4NCg0KICDilIzilIDilIDilIDilIANCiAg4pSCIG9wYW0gaW5zdGFsbCBvcnRvb2xzIG9y
dG9vbHNfc29sdmVycw0KICDilIIgb2NhbWxmaW5kIG9jYW1sb3B0IC1vIHByb2cgLXBhY2thZ2Ug
b3J0b29scyAtcGFja2FnZSBvcnRvb2xzX3NvbHZlcnMgLWxpbmtwa2cgcHJvZy5tbA0KICDilJTi
lIDilIDilIDilIANCg0KICBJIHdvdWxkIGJlIGhhcHB5IHRvIGFjY2VwdCBwdWxsIHJlcXVlc3Rz
IGZvciB0aGUgbWlzc2luZyBDUC1TQVQNCiAgY29uc3RyYWludHMgKEkgdGhpbmsgaXQgYmVzdCB0
byBkZXZlbG9wIHRoZSBpbnRlcmZhY2UgdG9nZXRoZXIgd2l0aA0KICByZWFsIGFwcGxpY2F0aW9u
cywgYW5kIEkgb25seSBuZWVkIHRoZSBJTFAgYW5kIGJvb2xlYW4gcGFydHMgYXQgdGhlDQogIG1v
bWVudCksIHRvIHRyYW5zbGF0ZSBtb3JlIG9mIHRoZSBzdGFuZGFyZCBleGFtcGxlIHByb2dyYW1z
IChhbiBlYXN5DQogIHdheSB0byBjb250cmlidXRlKSwgYW5kIHRvIGluY2x1ZGUgb3RoZXIgc29s
dmVycyBmcm9tIHRoZSBzdWl0ZQ0KICAobGlrZWx5IHRvIGludm9sdmUgc29sdmluZyB0ZWRpb3Vz
IGNvbXBpbGF0aW9uIGFuZCBjb21wYXRpYmlsaXR5DQogIHByb2JsZW1zIGFjcm9zcyBtdWx0aXBs
ZSBwbGF0Zm9ybXMpLg0KDQogIFRoYW5rcyB0byBAbm9qYiwgQFJ1Y2lraXIgLCBhbmQgb3RoZXJz
IGZvciBbdGhlaXIgaGVscF0gd2l0aCBbZHVuZV0sDQogIGFuZCBAeHZ3IGFuZCBAcGFuZ2xlc2Qg
Zm9yIFt0aGVpciBoZWxwXSB3aXRoIG9kb2MuIFRoYW5rcyB0byBAam1pZCAsDQogIEBtc2VyaSAs
IGFuZCBAYXZzbSBmb3IgZGlzY3Vzc2luZyBhbmQgbWVyZ2luZyBteSBbb3BhbS1yZXBvc2l0b3J5
XQ0KICBwdWxsIHJlcXVlc3RzLg0KDQoNCltHb29nbGUgT1ItVG9vbHNdIDxodHRwczovL2RldmVs
b3BlcnMuZ29vZ2xlLmNvbS9vcHRpbWl6YXRpb24+DQoNCltDUC1TQVRdIDxodHRwczovL2Qta3J1
cGtlLmdpdGh1Yi5pby9jcHNhdC1wcmltZXIvPg0KDQpbb2NhbWwtb3J0b29sc10gPGh0dHBzOi8v
Z2l0aHViLmNvbS9JTlJJQS9vY2FtbC1vcnRvb2xzPg0KDQpbb2NhbWwtcHJvdGNdIDxodHRwczov
L2dpdGh1Yi5jb20vbXJhbnNhbi9vY2FtbC1wcm90b2M+DQoNCltvbmxpbmUgZG9jdW1lbnRhdGlv
bl0NCjxodHRwczovL2lucmlhLmdpdGh1Yi5pby9vY2FtbC1vcnRvb2xzL29ydG9vbHMvaW5kZXgu
aHRtbD4NCg0KW3NvdXJjZSBjb2RlXQ0KPGh0dHBzOi8vZ2l0aHViLmNvbS9JTlJJQS9vY2FtbC1v
cnRvb2xzL3RyZWUvbWFzdGVyL3NhbXBsZXMvc2F0Pg0KDQpbdGhlaXIgaGVscF0NCjxodHRwczov
L2Rpc2N1c3Mub2NhbWwub3JnL3QvZm9yZWlnbi1hcmNoaXZlcy1uby1zdGF0aWMtbGlicmFyaWVz
LWR5bGliLW9uLW1hYy8xNzY2OT4NCg0KW2R1bmVdIDxodHRwczovL2Rpc2N1c3Mub2NhbWwub3Jn
L3QvZHVuZS1jbWFrZS1hbmQtai8xNzc2OD4NCg0KW3RoZWlyIGhlbHBdDQo8aHR0cHM6Ly9kaXNj
dXNzLm9jYW1sLm9yZy90L29kb2MtaW5kZXgtZm9yLW11bHRpcGxlLXBhY2thZ2VzLWludGVyLXBh
Y2thZ2UtbGlua3MtYW5kLWxvY2FsLWdsb2JhbC1zaWRlYmFyLzE3NjUyPg0KDQpbb3BhbS1yZXBv
c2l0b3J5XSA8aHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29wYW0tcmVwb3NpdG9yeT4NCg0KDQpO
ZW9jYW1sLW1vZGUgKEEgbW9kZXJuIEVtYWNzIG1ham9yIG1vZGUgZm9yIE9DYW1sKSBpcyBsb29r
aW5nIGZvciB0ZXN0ZXJzDQrilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi
lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi
lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi
lZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDi
lZDilZDilZANCg0KICBBcmNoaXZlOg0KICA8aHR0cHM6Ly9kaXNjdXNzLm9jYW1sLm9yZy90L25l
b2NhbWwtbW9kZS1hLW1vZGVybi1lbWFjcy1tYWpvci1tb2RlLWZvci1vY2FtbC1pcy1sb29raW5n
LWZvci10ZXN0ZXJzLzE3ODA3LzIzPg0KDQoNCkNvbnRpbnVpbmcgdGhpcyB0aHJlYWQsIEJvemhp
ZGFyIEJhdHNvdiBhbm5vdW5jZWQNCuKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU
gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU
gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0K
DQogIEZZSSAtIDxodHRwczovL2dpdGh1Yi5jb20vYmJhdHNvdi9uZW9jYW1sL3JlbGVhc2VzL3Rh
Zy92MC40LjA+DQoNCiAgWW91J2xsIG5lZWQgdG8gdXBkYXRlIHlvdXIgVHJlZS1zaXR0ZXIgZ3Jh
bW1hcnMgZHVlIHRvIHNvbWUgdXBzdHJlYW0NCiAgKGJyZWFraW5nKSBjaGFuZ2VzIGluIHRoZSBU
UyBPQ2FtbCBncmFtbWFyLg0KDQoNCm91aTogbXVsdGktcGxhdGZvcm0gYmluYXJ5IGluc3RhbGxl
cnMNCuKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV
kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV
kA0KDQogIEFyY2hpdmU6DQogIDxodHRwczovL2Rpc2N1c3Mub2NhbWwub3JnL3QvYW5uLW91aS1t
dWx0aS1wbGF0Zm9ybS1iaW5hcnktaW5zdGFsbGVycy8xNzg4Ni8xPg0KDQoNCk5hdGhhbiBSZWJv
dXJzIGFubm91bmNlZA0K4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA
4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQoNCiAgV2UgYXJlIGhhcHB5IHRvIGFubm91
bmNlIHRoZSBmaXJzdCByZWxlYXNlIG9mIGBvdWknIQ0KDQogIGBvdWknIGlzIGEgdG9vbCB0aGF0
IGdlbmVyYXRlcyBtdWx0aS1wbGF0Zm9ybSBiaW5hcnkgaW5zdGFsbGVycyBmb3INCiAgeW91ciBP
Q2FtbCBhcHBsaWNhdGlvbnMuIEl0IGNhbiBnZW5lcmF0ZSBpbnN0YWxsZXJzIGZvciBXaW5kb3dz
LCBMaW51eA0KICBhbmQgTWFjT1MuICBXZSBob3BlIGl0IHdpbGwgaGVscCBhbGwgb2YgeW91IG91
dCB0aGVyZSBkZXZlbG9wcGluZw0KICBhcHBsaWNhdGlvbnMgZm9yIG5vbiBPQ2FtbCBkZXZlbG9w
ZXJzLCBhbGxvd2luZyB5b3VyIHVzZXJzIHRvIGluc3RhbGwNCiAgeW91ciBwcm9ncmFtcyB3aXRo
b3V0IGhhdmluZyB0byBpbnN0YWxsIE9DYW1sIGFuZC9vciBvcGFtLCB0aHVzDQogIGdyZWF0bHkg
c2ltcGxpZnlpbmcgdGhlaXIgdXNlciBleHBlcmllbmNlLg0KDQogIFlvdSBjYW4gaW5zdGFsbCBg
b3VpJyB3aXRoIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoNCiAg4pSM4pSA4pSA4pSA4pSADQogIOKU
giBvcGFtIGluc3RhbGwgb3VpDQogIOKUlOKUgOKUgOKUgOKUgA0KDQogIFdlIG1hZGUgaXQgYXMg
Z2VuZXJpYyBhcyBwb3NzaWJsZSB0byBlbnN1cmUgaXQgd29ya3MgZm9yIGV2ZXJ5b25lLiBZb3UN
CiAgaW52b2tlIGl0IGFzIGZvbGxvd3M6DQogIOKUjOKUgOKUgOKUgOKUgA0KICDilIIgb3VpIGJ1
aWxkIG91aS5qc29uIGluc3RhbGwtYnVuZGxlDQogIOKUlOKUgOKUgOKUgOKUgA0KDQogIHdoZXJl
IGBpbnN0YWxsLWJ1bmRsZScgaXMgYSBmb2xkZXIgY29udGFpbmluZyB5b3VyIHByZWNvbXBpbGVk
DQogIGJpbmFyaWVzIGFuZCBhbnkgZmlsZXMgeW91IHdhbnQgdG8gaW5zdGFsbCBhbG9uZ3NpZGUg
dGhlbSwgYXJyYW5nZWQgaW4NCiAgYW55IHdheSB5b3UnZCBsaWtlLiAgVGhlIGBvdWkuanNvbicg
ZmlsZSBpcyBhIGNvbmZpZ3VyYXRpb24gZmlsZSB0aGF0DQogIGNvbnRhaW5zIG1ldGFkYXRhIGFu
ZCBpbmZvcm1hdGlvbiBvbiB0aGUgaW5zdGFsbGF0aW9uIGJ1bmRsZSdzIGxheW91dA0KICBzdWNo
IGFzIHdoZXJlIHRvIGZpbmQgYmluYXJpZXMgdG8gYWRkIHRvIHRoZSBgUEFUSCcgb3Igd2hlcmUg
dG8gZmluZA0KICBtYW5wYWdlcy4NCg0KICBgb3VpJyBjYW4gYWxzbyBjcmVhdGUgaW5zdGFsbGVy
cyBmb3IgcGx1Z2lucywgYXNzdW1pbmcgdGhlIG1haW4NCiAgYXBwbGljYXRpb24gd2FzIGVpdGhl
ciBpbnN0YWxsZWQgYnkgYSBgb3VpJyBnZW5lcmF0ZWQgaW5zdGFsbGVyLCBvcg0KICB3YXMgaW5z
dGFsbGVkIGZvbGxvd2luZyBzb21lIGJhc2ljIHJ1bGVzLg0KDQogIFRoZSBwcm9qZWN0IGlzIGhv
c3RlZCBvbiBnaXRodWI6DQogIDxodHRwczovL2dpdGh1Yi5jb20vT0NhbWxQcm8vb2NhbWwtdW5p
dmVyc2FsLWluc3RhbGxlcj4gVGhlIGZ1bGwNCiAgZG9jdW1lbnRhdGlvbiBpcyBhdmFpbGFibGUg
W2hlcmVdLiBJbiBwYXJ0aWN1bGFyLCB5b3UgY2FuIGZpbmQNCiAgZ3VpZGVsaW5lcyBvbiBob3cg
dG8gdXNlIGl0IHRvIGNyZWF0ZSBpbnN0YWxsZXJzIGZvciB5b3VyIGR1bmUgYnVpbHQNCiAgcHJv
amVjdCBbaGVyZV0uDQoNCiAgUGxlYXNlIGdvIGFoZWFkIGFuZCBnaXZlIGl0IGEgdHJ5LCB3ZSdk
IGxvdmUgdG8gaGVhciB5b3VyIGZlZWRiYWNrLg0KDQogIFdlIHdlbGNvbWUgZXh0ZXJuYWwgY29u
dHJpYnV0b3JzIHNvIGlmIHlvdSdkIGxpa2UgdG8gdGFrZSBwYXJ0IGluIHRoZQ0KICBwcm9qZWN0
LCBwbGVhc2UgcmVhZCBvdXIgW0NPTlRSSUJVVElORy5tZF0gYW5kIGp1bXAgaW4hDQoNCiAgVGhl
IHByb2plY3QgaXMgc3RpbGwgaW4gYSByZWxhdGl2ZWx5IGVhcmx5IHN0YWdlIGFuZCB0aGVyZSBh
cmUgc29tZQ0KICBrZXkgZmVhdHVyZXMgd2UnZCBsaWtlIHRvIGFkZCwgc3VjaCBhcyBzdHJlYW1s
aW5pbmcgdGhlIHVzZXINCiAgZXhwZXJpZW5jZSBmb3IgZHVuZSBwcm9qZWN0cyAocmVtb3Zpbmcg
dGhlIG5lY2Vzc2l0eSB0byBtYWludGFpbiBhDQogIHNlcGFyYXRlIGNvbmZpZ3VyYXRpb24gZmls
ZSBmb3IgdGhlIG1vc3QgY29tbW9uIHVzZSBjYXNlcykgb3Igc3VwcG9ydA0KICBmb3IgY3Jvc3Mt
Y29tcGlsYXRpb24vY3Jvc3MtcGxhdGZvcm0gaW5zdGFsbGVyIGdlbmVyYXRpb24uIElmIHRob3Nl
DQogIGZlYXR1cmVzIHNvdW5kIGludGVyZXN0aW5nIHRvIHlvdSBhbmQgeW91IHdvdWxkIGxpa2Ug
dG8gZnVuZCB0aGVpcg0KICBkZXZlbG9wbWVudCwgcGxlYXNlIHJlYWNoIG91dCB0byBjb250YWN0
QG9jYW1scHJvLmNvbSAuDQoNCiAgRmluYWxseSwgd2UnZCBsaWtlIHRvIHRoYW5rIG91ciBwYXJ0
bmVyIENFQS1saXN0IHdobyBmdW5kZWQgdGhlDQogIGluaXRpYWwgZGV2ZWxvcG1lbnQgb2YgYG91
aScgZnJvbSBgb3BhbS13aXgnIGFuZCBtYWRlIGl0IGFsbCBwb3NzaWJsZSENCg0KICBIYXBweSBp
bnN0YWxsaW5nIQ0KDQoNCltoZXJlXQ0KPGh0dHBzOi8vZ2l0aHViLmNvbS9PQ2FtbFByby9vY2Ft
bC11bml2ZXJzYWwtaW5zdGFsbGVyL2Jsb2IvbWFzdGVyL2RvYy9SRUFETUUubWQ+DQoNCltoZXJl
XQ0KPGh0dHBzOi8vZ2l0aHViLmNvbS9PQ2FtbFByby9vY2FtbC11bml2ZXJzYWwtaW5zdGFsbGVy
L2Jsb2IvbWFzdGVyL2RvYy9SRUFETUUubWQjZ2VuZXJhdGluZy1hLWJpbmFyeS1pbnN0YWxsZXIt
Zm9yLXlvdXItZHVuZS1wcm9qZWN0Pg0KDQpbQ09OVFJJQlVUSU5HLm1kXQ0KPGh0dHBzOi8vZ2l0
aHViLmNvbS9PQ2FtbFByby9vY2FtbC11bml2ZXJzYWwtaW5zdGFsbGVyL2Jsb2IvbWFzdGVyL0NP
TlRSSUJVVElORy5tZD4NCg0KDQpOaXh0YW1hbDogRnVsZmlsbGluZyBJbnB1dCBQaW5uaW5nIGZv
ciBOaXgNCuKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV
kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV
kOKVkOKVkOKVkOKVkOKVkOKVkA0KDQogIEFyY2hpdmU6DQogIDxodHRwczovL2Rpc2N1c3Mub2Nh
bWwub3JnL3QvYW5uLW5peHRhbWFsLWZ1bGZpbGxpbmctaW5wdXQtcGlubmluZy1mb3Itbml4LzE3
ODg3LzE+DQoNCg0KdG9hc3RhbCBhbm5vdW5jZWQNCuKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU
gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KDQogIFtOaXh0YW1hbF0gaXMgbXkgZmlyc3Qgc2Vy
aW91cyBPQ2FtbCBwcm9qZWN0IHJlbGVhc2UsIG5vdyBhdCB2ZXJpc29uDQogIDEuMS40LiBJdCB3
YXMgY3JlYXRlZCBhcyBhIHJlYWN0aW9uIHRvIHRoZSBsYWNrIG9mIGZlYXR1cmVzIEkgd2FudGVk
DQogIGZyb20gaXRzIOKAnGNvbXBldGl0b3Jz4oCdIGBuaXYnICYgYG5waW5zJyB3aGlsZSBhZGRp
dGlvbmFsbHkgY292ZXJpbmcNCiAgZmVhdHVyZXMgTml4IGZsYWtlcyBuZXZlciBjb3VsZCBzdXBw
b3J0IGdpdmVuIGl04oCZcyByaWdpZCBkZXNpZ24NCiAgcGhpbG9zb3BoeSB3aGljaCBoYXMgbW9y
ZSBkcmF3YmFja3MgdGhhbiBmb2xrcyBpbml0aWFsbHkgcmVhbGl6ZS4gSQ0KICBoYXZlIGJlZW4g
dXNpbmcgaXQgb24gYWxsIHByb2plY3RzIGZvciBhIGNvdXBsZSBtb250aHMgbm93ICYgaGFkIGF0
DQogIGxlYXN0IGEgY291cGxlIGZvbGtzIEkgZGlkbuKAmXQga25vdyBwcmlvciB0cnkgaXQgb3V0
IHByb3ZpZGluZyBmZWVkYmFjaw0KICAmIGJ1ZyByZXBvcnRzLg0KDQogICpLZXkgZmVhdHVyZXM6
Kg0KDQogIOKAoiBBdXRvbWF0ZSB0aGUgbWFudWFsIHdvcmsgb2YgaW5wdXQgcGlubmluZyBmb3Ig
ZGVwZW5kZW5jeSBtYW5hZ2VtZW50DQogIOKAoiBBbGxvdyBlYXN5IHdheXMgdG8gbG9jayAmIHJl
ZnJlc2ggdGhvc2UgaW5wdXRzDQogIOKAoiBEZWNsYXJhdGl2ZSBbS0RMXSBtYW5pZmVzdCBmaWxl
IG92ZXIgaW1wZXJhdGl2ZSA8YWJiciB0aXRsZT0iY29tbWFuZA0KICAgIGxpbmUgaW50ZXJmYWNl
Ij5DTEk8L2FiYnI+IGZsYWdzDQogIOKAoiBIb3N0LCBmb3JnZSwgPGFiYnIgdGl0bGU9InZlcnNp
b24gY29udHJvbA0KICAgIHN5c3RlbSI+VkNTPC9hYmJyPi1hZ25vc3RpYw0KICDigKIgQ2hvb3Nl
IDxhYmJyIHRpdGxlPSJldmFsdWF0aW9uIj5ldmFsPC9hYmJyPiB0aW1lIGZldGNoZXJzIChidWls
dGlucykNCiAgICBvciBidWlsZCB0aW1lIGZldGNoZXJzIChOaXhwa2dzLCBkZWZhdWx0KSDigJQg
d2hpY2ggb3BlbnMgdXAgZmV0Y2hpbmcNCiAgICBub3ctc3VwcG9ydGVkIFtEYXJjc10sIFtQaWp1
bF0sICYgW0Zvc3NpbF0NCiAg4oCiIFN1cHBvcnRzIG1pcnJvcnMgKG9uIGtpbmRzIHRoYXQgc3Vw
cG9ydCBtaXJyb3JzKQ0KICDigKIgT3ZlcnJpZGUgaGFzaCBhbGdvcml0aG0gb24gYSBwZXItcHJv
amVjdCAmIHBlci1pbnB1dCBiYXNpcyDigJQNCiAgICBpbmNsdWRpbmcgQkxBS0UzIHN1cHBvcnQg
KHdoaWNoIF9kb2VzXyByZXF1aXJlIGVuYWJsaW5nDQogICAgYGJsYWtlMy1oYXNoZXNgIHRvIG9w
dCBpbikNCiAg4oCiIEN1c3RvbSBmcmVzaG5lc3MgY29tbWFuZHMgKGF2b2lkIHJlZmV0Y2hpbmcg
bWFzc2l2ZSBpbnB1dHMganVzdCB0bw0KICAgIGNoZWNrIHRoZSBoYXNoIGhhc27igJl0IGNoYW5n
ZWQpDQogIOKAoiBObyBleHBlcmltZW50YWwgTml4IGZlYXR1cmVzIHJlcXVpcmVkIChmbGFrZXMp
DQoNCiAgT3V0c2lkZSB0aGUgaG9tZXBhZ2UsIGl0IHdvdWxkIGJlIHdvcnRoIGNoZWNraW5nIHRo
ZSBbPGFiYnINCiAgdGl0bGU9ImZyZXF1ZW50bHkgYXNrZWQgcXVlc3Rpb25zIj5GQVFzPC9hYmJy
Pl0gaWYgYW55IC93aGF0cy8gb3INCiAgL3doeXMvIGNvbWUgdXAuDQoNCg0KW05peHRhbWFsXSA8
aHR0cHM6Ly9uaXh0YW1hbC50b2FzdC5hbD4NCg0KW0tETF0gPGh0dHBzOi8va2RsLmRldj4NCg0K
W0RhcmNzXSA8aHR0cHM6Ly9kYXJjcy5uZXQ+DQoNCltQaWp1bF0gPGh0dHBzOi8vcGlqdWwub3Jn
Pg0KDQpbRm9zc2lsXSA8aHR0cHM6Ly9mb3NzaWwtc2NtLm9yZz4NCg0KWzxhYmJyIHRpdGxlPSJm
cmVxdWVudGx5IGFza2VkIHF1ZXN0aW9ucyI+RkFRczwvYWJicj5dDQo8aHR0cHM6Ly9uaXh0YW1h
bC50b2FzdC5hbC9mYXFzLz4NCg0KDQpPQ2FtbC1SREYgMS4yLjANCuKVkOKVkOKVkOKVkOKVkOKV
kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkA0KDQogIEFyY2hpdmU6IDxodHRwczovL2Rpc2N1
c3Mub2NhbWwub3JnL3QvYW5uLW9jYW1sLXJkZi0xLTItMC8xNzg5MC8xPg0KDQoNClpvZ2d5IGFu
bm91bmNlZA0K4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQoN
CiAgSGVsbG8sDQoNCiAgQSBuZXcgcmVsZWFzZSBvZiBPQ2FtbC1SREYsIFsxLjIuMF0sIGlzIGF2
YWlsYWJsZS4gVGhlIG1haW4gYWRkaXRpb25zDQogIGFyZToNCg0KICDigKIgYSBuZXcgW0lncmFw
aF0gbW9kdWxlLCBwcm92aWRpbmcgaW1tdXRhYmxlIGdyYXBocyAoZm9yIGZ1bmN0aW9uYWwNCiAg
ICBzdHlsZSkuDQogIOKAoiBhIG5ldyBbcmRmX3JkZmFdIHBhY2thZ2UgaW1wbGVtZW50aW5nIGEg
W1JkZmEgMS4xXSBwcm9jZXNzb3IuDQoNCiAgSXQgaXMgYXZhaWxhYmxlIGZyb20gW215IG93biBv
cGFtIHJlcG9zaXRvcnldLg0KDQoNClsxLjIuMF0gPGh0dHBzOi8vd3d3Lmdvb2QtZXJpcy5uZXQv
b2NhbWwtcmRmL3Bvc3RzL29jYW1sLXJkZi0xLjIuMC5odG1sPg0KDQpbSWdyYXBoXQ0KPGh0dHBz
Oi8vd3d3Lmdvb2QtZXJpcy5uZXQvb2NhbWwtcmRmL3JlZmRvYy9yZGYvUmRmL0lncmFwaC9pbmRl
eC5odG1sPg0KDQpbcmRmX3JkZmFdDQo8aHR0cHM6Ly93d3cuZ29vZC1lcmlzLm5ldC9vY2FtbC1y
ZGYvcmVmZG9jL3JkZl9yZGZhL2luZGV4Lmh0bWw+DQoNCltSZGZhIDEuMV0gPGh0dHBzOi8vd3d3
LnczLm9yZy9UUi9yZGZhLWNvcmU+DQoNCltteSBvd24gb3BhbSByZXBvc2l0b3J5XSA8aHR0cHM6
Ly9mcmFtYWdpdC5vcmcvem9nZ3kvb3BhbS1yZXBvc2l0b3J5Pg0KDQoNClNsaXBzaG93IQ0K4pWQ
4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQDQoNCiAgQXJjaGl2ZTogPGh0dHBzOi8vZGlzY3Vzcy5v
Y2FtbC5vcmcvdC9hbm4tc2xpcHNob3cvMTYzMzcvMjI+DQoNCg0KQ29udGludWluZyB0aGlzIHRo
cmVhZCwgUGF1bC1FbGxpb3QgYW5ub3VuY2VkDQrilIDilIDilIDilIDilIDilIDilIDilIDilIDi
lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi
lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIANCg0KICBJ
dCBpcyB3aXRoIGEgYmxhdGFudCBkZW5pYWwgb2YgdGhlIGN1cnJlbnQgc2l0dWF0aW9uIHRoYXQg
SSBhbm5vdW5jZQ0KICB0aGUgbmV4dCByZWxlYXNlIG9mIFNsaXBzaG93Og0KDQoNClNsaXBzaG93
IDAuMTAuMDogRG9uJ3QgbG9vayBge3VwfScNCuKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKV
jOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKVjOKV
jOKVjOKVjOKVjOKVjOKVjA0KDQogIFRoZSArYXN0ZXJvaWQrIHN0YXIgb2YgdGhlIHJlbGVhc2Ug
aXMgdGhlIG5ldyB3YXJuaW5ncyB0aGF0IHRoZQ0KICBjb21waWxlciBjYW4gcmFpc2UgdG8gaGVs
cCB5b3Ugd3JpdGUgYSBidWctZnJlZSBwcmVzZW50YXRpb24uIFRob3NlDQogIHdhcm5pbmdzIGFy
ZSB2aXNpYmxlIG9uIHRoZSBjb21tYW5kLWxpbmUsIGJ1dCBhbHNvIGluIHRoZQ0KICBob3QtcmVs
b2FkaW5nIHByZXZpZXcgaW4gYHNlcnZlJyBtb2RlIQ0KDQogIDxodHRwczovL2dpdGh1Yi5jb20v
dXNlci1hdHRhY2htZW50cy9hc3NldHMvZjc4NTY4ZTUtZGJiZi00OWUzLTljZDMtOGQyZTVjNGVk
ZmRhPg0KDQogIFdhcm5pbmdzIHdpbGwgaG9wZWZ1bGx5IGhlbHAgZGV0ZWN0IGJ1Z3MgaW4geW91
ciBwcmVzZW50YXRpb25zIGFuZA0KICBpbXByb3ZlIHRoZSBleHBlcmllbmNlLCBlc3BlY2lhbGx5
IG9mIG5ld2NvbWVycyENCg0KICBUaGlzIHRpbWUsIEknZCBsaWtlIHRvIHRoYW5rcyBAQWxpc3Rh
aXIgZm9yIHRoZSBpbmNyZWRpYmxlIFtHcmFjZSDwn5KFXQ0KICBsaWJyYXJ5LiBXaGVuZXZlciBJ
IGxvb2sgc29tZXdoZXJlLCBJIGZpbmQgYSBuZXcgT0NhbWwgcGVhcmwuIFRoYW5rDQogIHlvdSBm
b3IgdGhhdCEgVGhpcyBsaWJyYXJ5LCB0aGUgZWNvc3lzdGVtLCBvcGVuLXNvdXJjZSwgYXJlIGFs
bA0KICBhd2Vzb21lIHRoaW5ncy4NCg0KICBBbmQgdGhhbmtzIGFnYWluIHRvIE5MTmV0IGZvciBb
c3VwcG9ydGluZ10gdGhlIGRldmVsb3BtZW50IG9mDQogIFNsaXBzaG93IQ0KDQogIEhlcmUgaXMg
dGhlIGZ1bGwgY2hhbmdlbG9nOg0KDQoNCltHcmFjZSDwn5KFXSA8aHR0cHM6Ly9naXRodWIuY29t
L2pvaG55b2IvZ3JhY2U+DQoNCltzdXBwb3J0aW5nXSA8aHR0cHM6Ly9ubG5ldC5ubC9wcm9qZWN0
L1NsaXBzaG93Lz4NCg0KDQpBZGRlZA0K4pWM4pWM4pWM4pWM4pWMDQoNCiAg4oCiIEhlbHBmdWwg
d2FybmluZ3MgYXQgY29tcGlsZS10aW1lICgjMjEzKToNCiAgICDigKIgQWN0aW9uIHBhcnNpbmcg
ZmFpbHVyZXMsDQogICAg4oCiIE1pc3NpbmcgSUQgKGFuZCBgZXh0ZXJuYWwtaWRzJyBmcm9udG1h
dHRlciBmaWVsZCB0byBzZWxlY3RpdmVseQ0KICAgICAgZGVhY3RpdmF0ZSksDQogICAg4oCiIER1
cGxpY2F0ZWQgSUQsDQogICAg4oCiIEZyb250bWF0dGVyIHBhcnNpbmcgZXJyb3IsDQogICAg4oCi
IFdyb25nIHRhcmdldCB0eXBlIGZvciBhY3Rpb25zLA0KICAgIOKAoiBNaXNzaW5nIGZpbGUsDQog
ICAg4oCiIFVua25vd24gYXR0cmlidXRlLA0KICAgIOKAoiDigKYNCg0KDQpGaXhlZA0K4pWM4pWM
4pWM4pWM4pWMDQoNCiAg4oCiIEZpeGVkIGRyYXdpbmcgc3RvcHBpbmcgc2xpZ2h0bHkgYWZ0ZXIg
cGF1c2VzICgjMjE2KQ0KICDigKIgRml4ZWQga2V5Ym9hcmQgc2hvcnRjdXRzIG5vdCB3b3JraW5n
IGluIHNlcnZlIG1vZGUgdW50aWwgdGhlIHByZXZpZXcNCiAgICB3YXMgY2xpY2tlZCAoIzIxNSkN
CiAg4oCiIEZpeCBzaG9ydGN1dHMgbm90IHdvcmtpbmcgYWZ0ZXIgc2F2aW5nIGEgZHJhd2luZyAo
IzIxNykNCiAg4oCiIEZpeCB3cm9uZyBleGFtcGxlIGxpbmtzIGluIGRvY3MgKCMyMTgpDQoNCg0K
SXMgdGhlcmUgYSBwdWJsaWMgYXJjaGl2ZSBmb3IgdGhlIGNhbWwtbGlzdD8NCuKVkOKVkOKVkOKV
kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV
kOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKV
kOKVkOKVkA0KDQogIEFyY2hpdmU6DQogIDxodHRwczovL2Rpc2N1c3Mub2NhbWwub3JnL3QvaXMt
dGhlcmUtYS1wdWJsaWMtYXJjaGl2ZS1mb3ItdGhlLWNhbWwtbGlzdC8xNjM3NC82Pg0KDQoNCkNv
bnRpbnVpbmcgdGhpcyB0aHJlYWQsIENhbGFzY2liZXR0YSBSb21haW4gYW5ub3VuY2VkDQrilIDi
lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi
lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi
lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIANCg0KICBIZWxsbywgSSBh
bSBwbGVhc2VkIHRvIGFubm91bmNlIHRoZSBsYXVuY2ggb2YNCiAgPGh0dHBzOi8vY2FtbC1saXN0
LnJvYnVyLmNvb3AvPiwgYSB1bmlrZXJuZWwgdGhhdCBwcm92aWRlcyBhIHNlYXJjaA0KICBlbmdp
bmUgZm9yIHRoZSBjYW1sLWxpc3QuIFdlIG5vdyBoYXZlIHB1YmxpYyBhY2Nlc3MgdG8gdGhpcyBh
cmNoaXZlDQogIDp0YWRhOiENCg0KICBPdXIgY29vcGVyYXRpdmUgaXMgY3VycmVudGx5IHdvcmtp
bmcgb24gc2V2ZXJhbCBmcm9udHMsIGluY2x1ZGluZw0KICBlbWFpbCwgYnkgb2ZmZXJpbmcgYW4g
YXJjaGl2aW5nIHN5c3RlbS4gRm9yIG1vcmUgZGV0YWlscywgcGxlYXNlIHNlZQ0KICBbdGhpcyBh
cnRpY2xlXS4gQW5vdGhlciBhcnRpY2xlIGRlc2NyaWJlcyBbdGhlIHNlYXJjaCBlbmdpbmVdIHdl
IHVzZSwNCiAgYW5kIGEgdGhpcmQgZXhwbGFpbnMgW2hvdyB3ZSBkZXZlbG9wZWQgdGhpcyB1bmlr
ZXJuZWxdIChhbHRob3VnaCB0aGUNCiAgbGF0dGVyIGhhcyBldm9sdmVkIGNvbnNpZGVyYWJseSBz
aW5jZSB0aGVuLCB0aGUgY29yZSByZW1haW5zIHRoZQ0KICBzYW1lKS4NCg0KICBXZSBhcmUgdGhl
cmVmb3JlIGRlbGlnaHRlZCB0byBtYWtlIHRoaXMgc2VydmljZSBhdmFpbGFibGUgdG8gdGhlDQog
IGNvbW11bml0eSwgYW5kIGlmIHlvdSB3b3VsZCBsaWtlIHRvIGhlbHAgdXMgaW1wcm92ZSBpdCwg
dGhlIHByb2plY3QgaXMNCiAgY3VycmVudGx5IGF2YWlsYWJsZSBbaGVyZV0uIFdlIHdvdWxkIGxp
a2UgdG8gdGhhbmsgW05MbmV0XSBmb3IgZnVuZGluZw0KICB0aGlzIHVuaWtlcm5lbCwgYW5kIGlm
IHlvdSBhcHByZWNpYXRlIG91ciB3b3JrLCBwbGVhc2UgZG8gbm90IGhlc2l0YXRlDQogIHRvIG1h
a2UgYSBkb25hdGlvbiB0byBvdXIgY29vcGVyYXRpdmUgKHZpYSBbR2l0SHViXSBvciBbZGlyZWN0
bHkgdG8NCiAgb3VyIGNvb3BlcmF0aXZlXSkNCg0KICBGaW5hbGx5LCB0aGlzIGV4YW1wbGUgYWxz
byBzaG93Y2FzZXMgYWxsIG91ciB3b3JrIG9uIHVuaWtlcm5lbHM6IGZyb20NCiAgd2hhdCBhbiBF
dGhlcm5ldCBmcmFtZSBpcywgdGhyb3VnaCB0aGUgYXJjaGl2ZSBzeXN0ZW0gYW5kIHRoZQ0KICBl
eHRyYWN0aW9uIG9mIGVtYWlscyBmcm9tIGEgdmlydHVhbGlzZWQgaGFyZCBkcml2ZSwgcmlnaHQg
dXAgdG8gdGhlDQogIEhUVFAgcmVxdWVzdCAtICpldmVyeXRoaW5nIGlzIGRvbmUgaW4gT0NhbWwq
IChhbmQgd2Ugd291bGQgb25jZSBhZ2Fpbg0KICByZWNvbW1lbmQgcmVhZGluZyBvdXIgdHV0b3Jp
YWwgb24gW21uZXRdIGlmIHlvdSB3b3VsZCBsaWtlIHRvIGJ1aWxkIHVwDQogIHVuaWtlcm5lbHMp
Lg0KDQogIFNvIGhhdmUgZnVuIGh1bnRpbmcgZm9yIHJlbGljcyBmcm9tIHRoZSBoaXN0b3J5IG9m
IE9DYW1sIQ0KDQoNClt0aGlzIGFydGljbGVdDQo8aHR0cHM6Ly9ibG9nLnJvYnVyLmNvb3AvYXJ0
aWNsZXMvMjAyNS0wMS0wNy1jYXJ0b24tYW5kLWNhY2hldC5odG1sPg0KDQpbdGhlIHNlYXJjaCBl
bmdpbmVdDQo8aHR0cHM6Ly9ibG9nLnJvYnVyLmNvb3AvYXJ0aWNsZXMvcHR0X3N0ZW1fYW5kX3Nl
YXJjaF9lbmdpbmUuaHRtbD4NCg0KW2hvdyB3ZSBkZXZlbG9wZWQgdGhpcyB1bmlrZXJuZWxdDQo8
aHR0cHM6Ly9ibG9nLnJvYnVyLmNvb3AvYXJ0aWNsZXMvMjAyNS0wNC0xMi1wdHQtc2VhcmNoLXdl
YmFwcC5odG1sPg0KDQpbaGVyZV0gPGh0dHBzOi8vZ2l0aHViLmNvbS9yb2J1ci1jb29wL2JsYW1l
Pg0KDQpbTkxuZXRdIDxodHRwczovL25sbmV0Lm5sLz4NCg0KW0dpdEh1Yl0gPGh0dHBzOi8vZ2l0
aHViLmNvbS9zcG9uc29ycy9yb2J1ci1jb29wPg0KDQpbZGlyZWN0bHkgdG8gb3VyIGNvb3BlcmF0
aXZlXSA8aHR0cHM6Ly9yb2J1ci5jb29wL0RvbmF0ZT4NCg0KW21uZXRdIDxodHRwczovL3JvYnVy
LWNvb3AuZ2l0aHViLmlvL21uZXQvPg0KDQoNCk9sZCBDV04NCuKVkOKVkOKVkOKVkOKVkOKVkOKV
kA0KDQogIElmIHlvdSBoYXBwZW4gdG8gbWlzcyBhIENXTiwgeW91IGNhbiBbc2VuZCBtZSBhIG1l
c3NhZ2VdIGFuZCBJJ2xsIG1haWwNCiAgaXQgdG8geW91LCBvciBnbyB0YWtlIGEgbG9vayBhdCBb
dGhlIGFyY2hpdmVdIG9yIHRoZSBbUlNTIGZlZWQgb2YgdGhlDQogIGFyY2hpdmVzXS4NCg0KICBJ
ZiB5b3UgYWxzbyB3aXNoIHRvIHJlY2VpdmUgaXQgZXZlcnkgd2VlayBieSBtYWlsLCB5b3UgbWF5
IHN1YnNjcmliZQ0KICB0byB0aGUgW2NhbWwtbGlzdF0uDQoNCiAgW0FsYW4gU2NobWl0dF0NCg0K
DQpbc2VuZCBtZSBhIG1lc3NhZ2VdIDxtYWlsdG86YWxhbi5zY2htaXR0QHBvbHl0ZWNobmlxdWUu
b3JnPg0KDQpbdGhlIGFyY2hpdmVdIDxodHRwczovL2FsYW4ucGV0aXRlcG9tbWUubmV0L2N3bi8+
DQoNCltSU1MgZmVlZCBvZiB0aGUgYXJjaGl2ZXNdIDxodHRwczovL2FsYW4ucGV0aXRlcG9tbWUu
bmV0L2N3bi9jd24ucnNzPg0KDQpbY2FtbC1saXN0XSA8aHR0cHM6Ly9zeW1wYS5pbnJpYS5mci9z
eW1wYS9pbmZvL2NhbWwtbGlzdD4NCg0KW0FsYW4gU2NobWl0dF0gPGh0dHBzOi8vYWxhbi5wZXRp
dGVwb21tZS5uZXQvPg0KDQo=
--=-=-=
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-03-17 Tue 15:37 -->
<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 }
.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.03.10.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.03.24.html">Next Week</a>
</p>
<p>
Hello
</p>
<p>
Here is the latest OCaml Weekly News, for the week of March 10 to 17, 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">Public securiy meeting</a></li>
<li><a href=3D"#2">Google OR-Tools: CP-SAT Subset</a></li>
<li><a href=3D"#3">Neocaml-mode (A modern Emacs major mode for OCaml) is lo=
oking for testers</a></li>
<li><a href=3D"#4">oui: multi-platform binary installers</a></li>
<li><a href=3D"#5">Nixtamal: Fulfilling Input Pinning for Nix</a></li>
<li><a href=3D"#6">OCaml-RDF 1.2.0</a></li>
<li><a href=3D"#7">Slipshow!</a></li>
<li><a href=3D"#8">Is there a public archive for the caml-list?</a></li>
<li><a href=3D"#orga035da3">Old CWN</a></li>
</ul>
</div>
</div>
<div id=3D"outline-container-1" class=3D"outline-2">
<h2 id=3D"1">Public securiy meeting</h2>
<div class=3D"outline-text-2" id=3D"text-1">
<p>
Archive: <a href=3D"https://discuss.ocaml.org/t/public-securiy-meeting/1788=
2/1">https://discuss.ocaml.org/t/public-securiy-meeting/17882/1</a>
</p>
</div>
<div id=3D"outline-container-org03e8789" class=3D"outline-3">
<h3 id=3D"org03e8789">Hannes Mehnert announced</h3>
<div class=3D"outline-text-3" id=3D"text-org03e8789">
<p>
Dear everyone,
</p>
<p>
as a reminder =E2=80=93 next week Thursday (March 19th) 14:00 CEST, there w=
ill be a public OCaml security meeting hosted by the <a href=3D"https://oca=
ml.org/security">https://ocaml.org/security</a> team. We will meet at <a h=
ref=3D"https://meet.bornhack.dk/OCamlSecurityPublicMeeting">https://meet.bo=
rnhack.dk/OCamlSecurityPublicMeeting</a>
</p>
<p>
Our agenda and notes will be at <a href=3D"https://pad.data.coop/Ie5voBePSi=
KvjZdEko6otQ">https://pad.data.coop/Ie5voBePSiKvjZdEko6otQ</a>#
</p>
<p>
If you're curious, the notes from our last meeting are at <a href=3D"https:=
//pad.data.coop/7-Ic5rG6ToynsW02hJsndg">https://pad.data.coop/7-Ic5rG6Toyns=
W02hJsndg</a>
</p>
<p>
Hope to see you there!
</p>
</div>
</div>
</div>
<div id=3D"outline-container-2" class=3D"outline-2">
<h2 id=3D"2">Google OR-Tools: CP-SAT Subset</h2>
<div class=3D"outline-text-2" id=3D"text-2">
<p>
Archive: <a href=3D"https://discuss.ocaml.org/t/google-or-tools-cp-sat-subs=
et/17885/1">https://discuss.ocaml.org/t/google-or-tools-cp-sat-subset/17885=
/1</a>
</p>
</div>
<div id=3D"outline-container-org19a2720" class=3D"outline-3">
<h3 id=3D"org19a2720">Timothy Bourke announced</h3>
<div class=3D"outline-text-3" id=3D"text-org19a2720">
<p>
The <a href=3D"https://developers.google.com/optimization">Google OR-Tools<=
/a> are a suite of tools for solving optimization problems. They include, i=
n particular, <a href=3D"https://d-krupke.github.io/cpsat-primer/">CP-SAT</=
a>, which is a powerful constraint solver and optimizer for integer linear =
programming and boolean satisfiability problems.
</p>
<p>
The <a href=3D"https://github.com/INRIA/ocaml-ortools">ocaml-ortools</a> pa=
ckage provides an OCaml interface to a subset of CP-SAT constraints. It com=
prises two parts `ortools`, which allows modelling constraint problems in O=
Caml and translating them to a protocol buffer format (thanks to <a href=3D=
"https://github.com/mransan/ocaml-protoc">ocaml-protc</a>), and `ortools_so=
lvers`, which allows an embedded version of CP-SAT to be called directly fr=
om OCaml. Both parts can be installed using opam or built with dune. The la=
tter includes the source of OR-Tools 9.15 which is built together with most=
of its libraries and installed as part of the opam package.
</p>
<p>
Some simple examples can be found in the <a href=3D"https://inria.github.io=
/ocaml-ortools/ortools/index.html">online documentation</a> and <a href=3D"=
https://github.com/INRIA/ocaml-ortools/tree/master/samples/sat">source code=
</a>. They can be built using the following commands.
</p>
<pre class=3D"example" id=3D"org1ef1fd9">
opam install ortools ortools_solvers
ocamlfind ocamlopt -o prog -package ortools -package ortools_solvers -linkp=
kg prog.ml
</pre>
<p>
I would be happy to accept pull requests for the missing CP-SAT constraints=
(I think it best to develop the interface together with real applications,=
and I only need the ILP and boolean parts at the moment), to translate mor=
e of the standard example programs (an easy way to contribute), and to incl=
ude other solvers from the suite (likely to involve solving tedious compila=
tion and compatibility problems across multiple platforms).
</p>
<p>
Thanks to @nojb, @Rucikir , and others for <a href=3D"https://discuss.ocaml=
.org/t/foreign-archives-no-static-libraries-dylib-on-mac/17669">their help<=
/a> with <a href=3D"https://discuss.ocaml.org/t/dune-cmake-and-j/17768">dun=
e</a>, and @xvw and @panglesd for <a href=3D"https://discuss.ocaml.org/t/o=
doc-index-for-multiple-packages-inter-package-links-and-local-global-sideba=
r/17652">their help</a> with odoc. Thanks to @jmid , @mseri , and @avsm for=
discussing and merging my <a href=3D"https://github.com/ocaml/opam-reposit=
ory">opam-repository</a> pull requests.
</p>
</div>
</div>
</div>
<div id=3D"outline-container-3" class=3D"outline-2">
<h2 id=3D"3">Neocaml-mode (A modern Emacs major mode for OCaml) is looking =
for testers</h2>
<div class=3D"outline-text-2" id=3D"text-3">
<p>
Archive: <a href=3D"https://discuss.ocaml.org/t/neocaml-mode-a-modern-emacs=
-major-mode-for-ocaml-is-looking-for-testers/17807/23">https://discuss.ocam=
l.org/t/neocaml-mode-a-modern-emacs-major-mode-for-ocaml-is-looking-for-tes=
ters/17807/23</a>
</p>
</div>
<div id=3D"outline-container-org71636ac" class=3D"outline-3">
<h3 id=3D"org71636ac">Continuing this thread, Bozhidar Batsov announced</h3>
<div class=3D"outline-text-3" id=3D"text-org71636ac">
<p>
FYI - <a href=3D"https://github.com/bbatsov/neocaml/releases/tag/v0.4.0">ht=
tps://github.com/bbatsov/neocaml/releases/tag/v0.4.0</a>
</p>
<p>
You'll need to update your Tree-sitter grammars due to some upstream (break=
ing) changes in the TS OCaml grammar.
</p>
</div>
</div>
</div>
<div id=3D"outline-container-4" class=3D"outline-2">
<h2 id=3D"4">oui: multi-platform binary installers</h2>
<div class=3D"outline-text-2" id=3D"text-4">
<p>
Archive: <a href=3D"https://discuss.ocaml.org/t/ann-oui-multi-platform-bina=
ry-installers/17886/1">https://discuss.ocaml.org/t/ann-oui-multi-platform-b=
inary-installers/17886/1</a>
</p>
</div>
<div id=3D"outline-container-orga44ee97" class=3D"outline-3">
<h3 id=3D"orga44ee97">Nathan Rebours announced</h3>
<div class=3D"outline-text-3" id=3D"text-orga44ee97">
<p>
We are happy to announce the first release of <code>oui</code>!
</p>
<p>
<code>oui</code> is a tool that generates multi-platform binary installers =
for your OCaml applications. It can generate installers for Windows, Linux =
and MacOS.
We hope it will help all of you out there developping applications for non =
OCaml developers, allowing your users to install your programs without havi=
ng to install OCaml and/or opam, thus greatly simplifying their user experi=
ence.
</p>
<p>
You can install <code>oui</code> with the following command:
</p>
<pre class=3D"example" id=3D"org61ceca4">
opam install oui
</pre>
<p>
We made it as generic as possible to ensure it works for everyone. You invo=
ke it as follows:
</p>
<pre class=3D"example" id=3D"org52d5169">
oui build oui.json install-bundle
</pre>
<p>
where <code>install-bundle</code> is a folder containing your precompiled b=
inaries and any files you want to install alongside them, arranged in any w=
ay you'd like.
The <code>oui.json</code> file is a configuration file that contains metada=
ta and information on the installation bundle's layout such as where to fin=
d binaries to add to the <code>PATH</code> or where to find manpages.
</p>
<p>
<code>oui</code> can also create installers for plugins, assuming the main =
application was either installed by a <code>oui</code> generated installer,=
or was installed following some basic rules.
</p>
<p>
The project is hosted on github: <a href=3D"https://github.com/OCamlPro/oca=
ml-universal-installer">https://github.com/OCamlPro/ocaml-universal-install=
er</a>
The full documentation is available <a href=3D"https://github.com/OCamlPro/=
ocaml-universal-installer/blob/master/doc/README.md">here</a>. In particula=
r, you can find guidelines on how to use it to create installers for your d=
une built project <a href=3D"https://github.com/OCamlPro/ocaml-universal-in=
staller/blob/master/doc/README.md#generating-a-binary-installer-for-your-du=
ne-project">here</a>.
</p>
<p>
Please go ahead and give it a try, we'd love to hear your feedback.
</p>
<p>
We welcome external contributors so if you'd like to take part in the proje=
ct, please read our <a href=3D"https://github.com/OCamlPro/ocaml-universal-=
installer/blob/master/CONTRIBUTING.md">CONTRIBUTING.md</a> and jump in!
</p>
<p>
The project is still in a relatively early stage and there are some key fea=
tures we'd like to add, such as streamlining the user experience for dune p=
rojects (removing the necessity to maintain a separate configuration file f=
or the most common use cases) or support for cross-compilation/cross-platfo=
rm installer generation. If those features sound interesting to you and you=
would like to fund their development, please reach out to contact@ocamlpro=
.com .
</p>
<p>
Finally, we'd like to thank our partner CEA-list who funded the initial dev=
elopment of <code>oui</code> from <code>opam-wix</code> and made it all pos=
sible!
</p>
<p>
Happy installing!
</p>
</div>
</div>
</div>
<div id=3D"outline-container-5" class=3D"outline-2">
<h2 id=3D"5">Nixtamal: Fulfilling Input Pinning for Nix</h2>
<div class=3D"outline-text-2" id=3D"text-5">
<p>
Archive: <a href=3D"https://discuss.ocaml.org/t/ann-nixtamal-fulfilling-inp=
ut-pinning-for-nix/17887/1">https://discuss.ocaml.org/t/ann-nixtamal-fulfil=
ling-input-pinning-for-nix/17887/1</a>
</p>
</div>
<div id=3D"outline-container-org8f9b345" class=3D"outline-3">
<h3 id=3D"org8f9b345">toastal announced</h3>
<div class=3D"outline-text-3" id=3D"text-org8f9b345">
<p>
<a href=3D"https://nixtamal.toast.al">Nixtamal</a> is my first serious OCam=
l project release, now at verison 1.1.4. It was created as a reaction to th=
e lack of features I wanted from its =E2=80=9Ccompetitors=E2=80=9D <code>ni=
v</code> & <code>npins</code> while additionally covering features Nix =
flakes never could support given it=E2=80=99s rigid design philosophy which=
has more drawbacks than folks initially realize. I have been using it on a=
ll projects for a couple months now & had at least a couple folks I did=
n=E2=80=99t know prior try it out providing feedback & bug reports.
</p>
<p>
<b>Key features:</b>
</p>
<ul class=3D"org-ul">
<li>Automate the manual work of input pinning for dependency management</li>
<li>Allow easy ways to lock & refresh those inputs</li>
<li>Declarative <a href=3D"https://kdl.dev">KDL</a> manifest file over impe=
rative <abbr title=3D"command line interface">CLI</abbr> flags<=
/li>
<li>Host, forge, <abbr title=3D"version control system">VCS</abbr&=
gt;-agnostic</li>
<li>Choose <abbr title=3D"evaluation">eval</abbr> time fetchers=
(builtins) or build time fetchers (Nixpkgs, default) =E2=80=94 which opens=
up fetching now-supported <a href=3D"https://darcs.net">Darcs</a>, <a href=
=3D"https://pijul.org">Pijul</a>, & <a href=3D"https://fossil-scm.org">=
Fossil</a></li>
<li>Supports mirrors (on kinds that support mirrors)</li>
<li>Override hash algorithm on a per-project & per-input basis =E2=80=
=94 including BLAKE3 support (which <span class=3D"underline">does</span> r=
equire enabling `blake3-hashes` to opt in)</li>
<li>Custom freshness commands (avoid refetching massive inputs just to chec=
k the hash hasn=E2=80=99t changed)</li>
<li>No experimental Nix features required (flakes)</li>
</ul>
<p>
Outside the homepage, it would be worth checking the <a href=3D"https://nix=
tamal.toast.al/faqs/"><abbr title=3D"frequently asked questions">FAQs=
</abbr></a> if any <i>whats</i> or <i>whys</i> come up.
</p>
</div>
</div>
</div>
<div id=3D"outline-container-6" class=3D"outline-2">
<h2 id=3D"6">OCaml-RDF 1.2.0</h2>
<div class=3D"outline-text-2" id=3D"text-6">
<p>
Archive: <a href=3D"https://discuss.ocaml.org/t/ann-ocaml-rdf-1-2-0/17890/1=
">https://discuss.ocaml.org/t/ann-ocaml-rdf-1-2-0/17890/1</a>
</p>
</div>
<div id=3D"outline-container-orge939cac" class=3D"outline-3">
<h3 id=3D"orge939cac">Zoggy announced</h3>
<div class=3D"outline-text-3" id=3D"text-orge939cac">
<p>
Hello,
</p>
<p>
A new release of OCaml-RDF, <a href=3D"https://www.good-eris.net/ocaml-rdf/=
posts/ocaml-rdf-1.2.0.html">1.2.0</a>, is available. The main additions are:
</p>
<ul class=3D"org-ul">
<li>a new <a href=3D"https://www.good-eris.net/ocaml-rdf/refdoc/rdf/Rdf/Igr=
aph/index.html">Igraph</a> module, providing immutable graphs (for function=
al style).</li>
<li>a new <a href=3D"https://www.good-eris.net/ocaml-rdf/refdoc/rdf_rdfa/in=
dex.html">rdf_rdfa</a> package implementing a <a href=3D"https://www.w3.org=
/TR/rdfa-core">Rdfa 1.1</a> processor.</li>
</ul>
<p>
It is available from <a href=3D"https://framagit.org/zoggy/opam-repository"=
>my own opam repository</a>.
</p>
</div>
</div>
</div>
<div id=3D"outline-container-7" class=3D"outline-2">
<h2 id=3D"7">Slipshow!</h2>
<div class=3D"outline-text-2" id=3D"text-7">
<p>
Archive: <a href=3D"https://discuss.ocaml.org/t/ann-slipshow/16337/22">http=
s://discuss.ocaml.org/t/ann-slipshow/16337/22</a>
</p>
</div>
<div id=3D"outline-container-org761320c" class=3D"outline-3">
<h3 id=3D"org761320c">Continuing this thread, Paul-Elliot announced</h3>
<div class=3D"outline-text-3" id=3D"text-org761320c">
<p>
It is with a blatant denial of the current situation that I announce the ne=
xt release of Slipshow:
</p>
</div>
<div id=3D"outline-container-org2da4643" class=3D"outline-4">
<h4 id=3D"org2da4643">Slipshow 0.10.0: Don't look <code>{up}</code></h4>
<div class=3D"outline-text-4" id=3D"text-org2da4643">
<p>
The <del>asteroid</del> star of the release is the new warnings that the co=
mpiler can raise to help you write a bug-free presentation. Those warnings =
are visible on the command-line, but also in the hot-reloading preview in <=
code>serve</code> mode!
</p>
<p>
<a href=3D"https://github.com/user-attachments/assets/f78568e5-dbbf-49e3-9c=
d3-8d2e5c4edfda">https://github.com/user-attachments/assets/f78568e5-dbbf-4=
9e3-9cd3-8d2e5c4edfda</a>
</p>
<p>
Warnings will hopefully help detect bugs in your presentations and improve =
the experience, especially of newcomers!
</p>
<p>
This time, I'd like to thanks @Alistair for the incredible <a href=3D"https=
://github.com/johnyob/grace">Grace =F0=9F=92=85</a> library. Whenever I loo=
k somewhere, I find a new OCaml pearl. Thank you for that! This library, th=
e ecosystem, open-source, are all awesome things.
</p>
<p>
And thanks again to NLNet for <a href=3D"https://nlnet.nl/project/Slipshow/=
">supporting</a> the development of Slipshow!
</p>
<p>
Here is the full changelog:
</p>
</div>
</div>
<div id=3D"outline-container-org174ef4e" class=3D"outline-4">
<h4 id=3D"org174ef4e">Added</h4>
<div class=3D"outline-text-4" id=3D"text-org174ef4e">
<ul class=3D"org-ul">
<li>Helpful warnings at compile-time (#213):
<ul class=3D"org-ul">
<li>Action parsing failures,</li>
<li>Missing ID (and <code>external-ids</code> frontmatter field to selectiv=
ely deactivate),</li>
<li>Duplicated ID,</li>
<li>Frontmatter parsing error,</li>
<li>Wrong target type for actions,</li>
<li>Missing file,</li>
<li>Unknown attribute,</li>
<li>…</li>
</ul></li>
</ul>
</div>
</div>
<div id=3D"outline-container-org135194e" class=3D"outline-4">
<h4 id=3D"org135194e">Fixed</h4>
<div class=3D"outline-text-4" id=3D"text-org135194e">
<ul class=3D"org-ul">
<li>Fixed drawing stopping slightly after pauses (#216)</li>
<li>Fixed keyboard shortcuts not working in serve mode until the preview was
clicked (#215)</li>
<li>Fix shortcuts not working after saving a drawing (#217)</li>
<li>Fix wrong example links in docs (#218)</li>
</ul>
</div>
</div>
</div>
</div>
<div id=3D"outline-container-8" class=3D"outline-2">
<h2 id=3D"8">Is there a public archive for the caml-list?</h2>
<div class=3D"outline-text-2" id=3D"text-8">
<p>
Archive: <a href=3D"https://discuss.ocaml.org/t/is-there-a-public-archive-f=
or-the-caml-list/16374/6">https://discuss.ocaml.org/t/is-there-a-public-arc=
hive-for-the-caml-list/16374/6</a>
</p>
</div>
<div id=3D"outline-container-orgd26d160" class=3D"outline-3">
<h3 id=3D"orgd26d160">Continuing this thread, Calascibetta Romain announced=
</h3>
<div class=3D"outline-text-3" id=3D"text-orgd26d160">
<p>
Hello, I am pleased to announce the launch of <a href=3D"https://caml-list.=
robur.coop/">https://caml-list.robur.coop/</a>, a unikernel that provides a=
search engine for the caml-list. We now have public access to this archive=
:tada:!
</p>
<p>
Our cooperative is currently working on several fronts, including email, by=
offering an archiving system. For more details, please see <a href=3D"http=
s://blog.robur.coop/articles/2025-01-07-carton-and-cachet.html">this articl=
e</a>. Another article describes <a href=3D"https://blog.robur.coop/article=
s/ptt_stem_and_search_engine.html">the search engine</a> we use, and a thir=
d explains <a href=3D"https://blog.robur.coop/articles/2025-04-12-ptt-searc=
h-webapp.html">how we developed this unikernel</a> (although the latter has=
evolved considerably since then, the core remains the same).
</p>
<p>
We are therefore delighted to make this service available to the community,=
and if you would like to help us improve it, the project is currently avai=
lable <a href=3D"https://github.com/robur-coop/blame">here</a>. We would li=
ke to thank <a href=3D"https://nlnet.nl/">NLnet</a> for funding this uniker=
nel, and if you appreciate our work, please do not hesitate to make a donat=
ion to our cooperative (via <a href=3D"https://github.com/sponsors/robur-co=
op">GitHub</a> or <a href=3D"https://robur.coop/Donate">directly to our coo=
perative</a>)
</p>
<p>
Finally, this example also showcases all our work on unikernels: from what =
an Ethernet frame is, through the archive system and the extraction of emai=
ls from a virtualised hard drive, right up to the HTTP request - <b>everyth=
ing is done in OCaml</b> (and we would once again recommend reading our tut=
orial on <a href=3D"https://robur-coop.github.io/mnet/">mnet</a> if you wou=
ld like to build up unikernels).
</p>
<p>
So have fun hunting for relics from the history of OCaml!
</p>
</div>
</div>
</div>
<div id=3D"outline-container-orga035da3" class=3D"outline-2">
<h2 id=3D"orga035da3">Old CWN</h2>
<div class=3D"outline-text-2" id=3D"text-orga035da3">
<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"org7886b4b">
<p>
<a href=3D"https://alan.petitepomme.net/">Alan Schmitt</a>
</p>
</div>
</div>
</div>
</div>
</body>
</html>
--=-=-=--