{"id":19674742,"url":"https://github.com/cloudwego/dynamicgo","last_synced_at":"2025-04-06T09:10:01.716Z","repository":{"id":88825033,"uuid":"584980129","full_name":"cloudwego/dynamicgo","owner":"cloudwego","description":"Dynamically and efficiently operate RPC data for Go","archived":false,"fork":false,"pushed_at":"2024-08-26T09:20:06.000Z","size":6446,"stargazers_count":145,"open_issues_count":4,"forks_count":26,"subscribers_count":13,"default_branch":"main","last_synced_at":"2024-08-26T11:41:43.387Z","etag":null,"topics":["dynamic-programming","reflection","serdes","thrift"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cloudwego.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-01-04T02:22:58.000Z","updated_at":"2024-08-26T09:20:10.000Z","dependencies_parsed_at":"2023-07-10T07:31:48.700Z","dependency_job_id":"9d8df878-9aea-438d-94a8-6d30d1cdefa2","html_url":"https://github.com/cloudwego/dynamicgo","commit_stats":{"total_commits":37,"total_committers":5,"mean_commits":7.4,"dds":0.1351351351351351,"last_synced_commit":"8e8185338dcc3b43a71940ffbeaadc42f55fd36d"},"previous_names":[],"tags_count":29,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudwego%2Fdynamicgo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudwego%2Fdynamicgo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudwego%2Fdynamicgo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudwego%2Fdynamicgo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cloudwego","download_url":"https://codeload.github.com/cloudwego/dynamicgo/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247457803,"owners_count":20941906,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dynamic-programming","reflection","serdes","thrift"],"created_at":"2024-11-11T17:19:37.507Z","updated_at":"2025-04-06T09:10:01.675Z","avatar_url":"https://github.com/cloudwego.png","language":"Go","funding_links":[],"categories":["Go"],"sub_categories":[],"readme":"# Dynamic-Go\nDynamically operating data for Go. Aiming at reducing serialization/deserializtion process thus it can be fast as much as possible.\n\n## Introduction\nDynamic-Go for Thrift protocol: [introduction.md](introduction.md).\n\nDynamic-Go for Protobuf protocol: [introduction.md](./proto/INTRODUCTION.md)\n\n## Usage\n\n[![GoDoc](https://godoc.org/github.com/cloudwego/dynamicgo?status.svg)](https://pkg.go.dev/github.com/cloudwego/dynamicgo?tab=doc)\n\n### thrift\nThrift IDL parser and message operators. It can parse thrift IDL in runtime and handle thrift data in generic way.\n\n#### thrift/generic\nReflection APIs to search, modify, deserialize, serialize thrift value **with or without** runtime type descriptor.\n\n#### thrift/base \nThe meta data about message transportation, including caller, address, log-id, etc. It is mainly used for `conv` (protocol convertion) modules.\n\n#### thrift/annotation \nBuilt-in implementation of thrid-party annotations, see [thrift_idl_annotation_standards](https://www.cloudwego.io/docs/kitex/tutorials/advanced-feature/generic-call/thrift_idl_annotation_standards/). They are mainly used for `conv` (protocol convertion) modules. \n\n### proto\nProtobuf IDL parser and message operators. It can parse protobuf IDL in runtime and handle protobuf data in generic way.\n\n#### proto/generic\nReflection APIs to search, modify, deserialize, serialize protobuf value **with or without** runtime descriptor.\n\n#### proto/protowire\nProtobuf data encode and decode APIs. It parses and formats the low-level raw wire encoding. It is modified from Protobuf official code [`encoding/protowire`](https://pkg.go.dev/google.golang.org/protobuf/encoding/protowire).\n\n#### proto/binary\nBinaryProtocol tool for Protobuf Protocol. It can read, wirte and skip fields directly on binary data of protobuf message.\n\n### http\nHttp request/response wrapper interfaces. They are mainly used to pass http values on `http\u003c\u003ethrift` conversion. \n\n### conv\nProtocol convertors. Based on reflecting ability of `thrift`, `json` and `protobuf` modules, it can convert message from one protocol into another. \n\n#### conv/j2t\nConvert JSON value or JSON-body HTTP request into thrift message.\n\n#### conv/t2j\nConvert thrift message to JSON value or JSON-body HTTP response.\n\n#### conv/j2p\nConvert JSON value into protobuf message.\n\n#### conv/p2j\nConvert protobuf message into JSON value.\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudwego%2Fdynamicgo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcloudwego%2Fdynamicgo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudwego%2Fdynamicgo/lists"}