package awso-common
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
On This Page
AWSO common library
Install
dune-project
Dependency
Authors
Maintainers
Sources
awso-0.9.1.tbz
sha256=e0e7510192b7e45871cff5c60e5162a77a9fa103b6924136fb1fea5db2092b26
sha512=51a18cf74c122b021bd84ef5728b7c5b2d5e767f03d5cd2387d886edc34a68cf54a3183e2d6c4939b4c8d3e0c0e406c869d019f2ee9a0903ae4cf7ca725572f0
doc/CHANGES.html
Changelog
0.9.1 (2026-05-28)
New stuff
awso-eio: backend for Eio. Same 400+ services exposed asawso-eio.<svc>. Requires OCaml 5- 13 services re-enabled that the codegen had skipped (apigateway, apigatewayv2, appconfig, appconfigdata, cloudhsm, codeguruprofiler, health, lex-runtime, mediaconnect, medialive, mq, s3control, sagemaker-runtime); 6 others (appsync, dataexchange, iottwinmaker, lexv2-runtime, pinpoint, workmailmessageflow) still excluded with documented codegen bugs to chase later
CREDITS.md
Compatibility & dep hygiene
- minimum OCaml is now 5.3.0 (we'd hoped to widen to 4.14 this release but ran out of time chasing compiler stack overflows on the giant generated tables; the door is open for 0.9.2)
tls >= 2.1.0. Noticed CVE-2026-45388 (TLS 1.3 client missingkeyUsage/extendedKeyUsagevalidation), decided to get ahead of it.mirage-crypto-rng >= 1.2.0forMirage_crypto_rng_unix.use_default(the now-deprecatedinitializeis gone in our usage)async_sslconstrained to the-2opam-repository revisions that re-add-Wno-implicit-function-declaration. The intermediate-1revisions only suppressed-Wno-incompatible-pointer-types, which left the build broken on distros where OpenSSL ships without the deprecatedENGINE_*API (e.g. centos-10). Fixed upstream in ocaml/opam-repository#29939 and the corresponding source-archives PR. Note: this is broken whereasync_sslis attempted on systems that have completely removedopenssl/engine.h. Upstream should probably remove it.core_unix,ppx_jane,asyncfloored atv0.16.0to match what we actually test against
Code generation changes
- Parse the new botocore
enumfield on shape members - Parse the legacy
httpChecksumRequiredoperation trait (currently ignored since we don't auto-compute checksums; users still set?contentMD5themselves withAwso.Client.content_md5_insecureas a helper)
0.9.0 (2026-05-17)
Initial opam release, forked from solvuu/awsm, which was itself never released to opam.
Architectural changes since the fork
- Replaced the lightweight higher kinded polymorphism with a functorized approach. (End users don't need to instantiate the functors, it's already done in the library)
- Restructured
aws/intoaws/<service>/{async,lwt,sync}/, each backend ships only what it needs. - Eliminated the
Transportvariant from API responses; only AWS-side errors stay inResult, transport errors raise, similar to the convention Async follows. - As advised by opam-repository crew, consolidated the per-service opam packages into sub-libraries under each backend.
opam install awso-asyncpulls in every service binding underawso-async.<svc>. Same for-lwtand-sync. - Pre-generate the
aws/tree and commit it. opam install no longer runs the codegen, which means end users require ~25 less packages in their dependency cone.
New stuff
awso-sync: synchronous (blocking) backend implemented over libcurl. For scripts and CLIs where pulling in an async scheduler is overkillawso-cli: for fun, an everything including the kitchen sink binary that exposes every awso-async service as a composable subcommand, similar in spirit to the python aws-cli. Ships as bytecode because linking ~400 native service libraries exceeds ARM64 executable assembly size limitsdogfood/tools used by maintainers to develop awso
Compatibility & dep hygiene
- minimum OCaml is 5.0 (4.14 to be available next release!)
- now on dune 3.6
- removed Jane Street
Corefrom the non-Async runtimes; non-async builds now use a very smallJane_compatshim underlib/common/ - replaced ad-hoc JSON with
Yojson.Safe.teverywhere
Code generation changes
- Freshened to botocore 1.43.9
- Huge precomputed
endpoints.jsonmatch table replaced with a memoised lookup - Output shapes treat
requiredas advisory. AWS itself routinely omits fields it marks required (AccessDeniedExceptionwith noMessage,GeocodeResponsewith noPricingBucket), so deserializers don't blow up when the service lies about its own spec. Input shapes still respectrequired. shim for newer services whose hostname doesn't followendpointPrefixconventions (geo-places, geo-maps, geo-routes, iot-data, sso). snake-case and endpoint name/wire name fixes - Escape odoc special characters in generated doc comments
- 22 retired AWS services that were dropped from botocore
See TODO.md for things known to still be rough
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
On This Page