From 26adee27e6d8647fd0fd2e095069214e215b0dfd Mon Sep 17 00:00:00 2001 From: Emil Lerch Date: Sun, 27 Aug 2023 12:12:04 -0700 Subject: [PATCH] update README --- README.md | 52 ++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 36 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index dc3ab25..bd69e3e 100644 --- a/README.md +++ b/README.md @@ -3,12 +3,8 @@ AWS SDK for Zig [![Build Status](https://actions-status.lerch.org/lobo/aws-sdk-for-zig/build)](https://git.lerch.org/lobo/aws-sdk-for-zig/actions?workflow=build.yaml&state=closed) -**Now that 0.11 has been released, work will commence to move to the new compiler** - -Current executable size for the demo is 1.7M (90k of which is the AWS PEM file, -and approximately 600K for XML services) after compiling with -Drelease-safe and -[stripping the executable after compilation](https://github.com/ziglang/zig/issues/351). -This is for x86_linux, and will vary based on services used. Tested targets: +Current executable size for the demo is 980k after compiling with -Doptimize=ReleaseSmall +in x86_linux, and will vary based on services used. Tested targets: * x86_64-linux * riscv64-linux @@ -23,14 +19,25 @@ Tested targets are built, but not continuously tested, by CI. Building -------- -`zig build` should work. It will build the code generation project, run -the code generation, then build the main project with the generated code. +`zig build` should work. It will build the code generation project, fetch model +files from upstream AWS Go SDK v2, run the code generation, then build the main +project with the generated code. Testing can be done with `zig test`. -First time build should use `zig build -Dfetch` to fetch dependent packages -(zfetch and friends). +Note that there are some loose ends on this version as compared to the [0.9.0 +branch](https://git.lerch.org/lobo/aws-sdk-for-zig/src/branch/0.9.0). More +details below in Limitations. This branch overall is superior, as is the 0.11 +compiler, but if you need an edge case and don't want to issue a PR, feel free +to use that branch. -Running -------- +Using +----- + +This is designed for use with the Zig 0.11 package manager, and exposes a module +called "aws". Set up `build.zig.zon` and add the dependency/module to your project +as normal and the package manager should do its thing. + +Running the demo +---------------- This library mimics the aws c libraries for it's work, so it operates like most other 'AWS things'. main.zig gives you a handful of examples for working with services. @@ -40,8 +47,10 @@ supersede all other configuration. Note that an alternative endpoint may require passing in a client option to specify an different TLS root certificate (pass null to disable certificate verification). -The [old branch](https://github.com/elerch/aws-sdk-for-zig/tree/aws-crt) exists -for posterity, and supports x86_64 linux. The old branch is deprecated. +An [old branch based on aws-crt](https://github.com/elerch/aws-sdk-for-zig/tree/aws-crt) exists +for posterity, and supports x86_64 linux. The old branch is deprecated, so if +there are issues you see that work correctly in the aws-crt branch, please +file an issue. Limitations ----------- @@ -50,12 +59,23 @@ WebIdentityToken is not yet implemented. TODO List: -* Bump to zig 0.11 and replace zFetch with [std.http.Client](https://github.com/ziglang/zig/blob/master/lib/std/http/Client.zig) +* re-enable all demos. Some are causing compilation errors, and these errors + do not have reference tracing as they exist within monomorphised code +* Implement all demos as tests in src/aws.zig. This has been done for + STS GetCallerIdentity, but needs to be extended for the others +* Json parsing is based on a fork of the 0.9.0 (maybe earlier?) json parser. + Upgrading to 0.11 caused some commenting of things that probably broke some + stuff. JSON parsing in general needs a re-visit. Note also that a json.zig + file is embedded/copied from the codegen project, so that also needs a second + look. +* Take a look to see about compilation speed. With codegen caching this is + reasonable, but still takes longer than needed. +* Upgrade the model files. This is a simple tasks, but I'd like the first + item on this list to be completed first. * Implement sigv4a signing * Implement jitter/exponential backoff * Implement timeouts and other TODO's in the code * Add option to cache signature keys -* Move CI to github actions based on [gittea's implementation](https://blog.gitea.io/2022/12/feature-preview-gitea-actions/) Compiler wishlist/watchlist: