{"id":16760137,"url":"https://github.com/maulingmonkey/thindx","last_synced_at":"2025-09-14T15:10:39.785Z","repository":{"id":44138679,"uuid":"316652823","full_name":"MaulingMonkey/thindx","owner":"MaulingMonkey","description":"Thin DirectX wrappers for Rust.","archived":false,"fork":false,"pushed_at":"2024-02-05T18:40:03.000Z","size":14576,"stargazers_count":9,"open_issues_count":3,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-10-14T04:22:30.557Z","etag":null,"topics":["d3d","direct3d","directx","graphics","hlsl","rust","shader","xinput"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MaulingMonkey.png","metadata":{"files":{"readme":"Readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE-APACHE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2020-11-28T04:01:20.000Z","updated_at":"2024-06-22T00:39:24.000Z","dependencies_parsed_at":"2024-01-19T09:33:48.018Z","dependency_job_id":"9f3c6cca-853d-4e92-9de6-75432225c99c","html_url":"https://github.com/MaulingMonkey/thindx","commit_stats":{"total_commits":824,"total_committers":1,"mean_commits":824.0,"dds":0.0,"last_synced_commit":"cc77aaebb4aed8c76b09d6f4dab3f5b020600bac"},"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaulingMonkey%2Fthindx","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaulingMonkey%2Fthindx/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaulingMonkey%2Fthindx/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaulingMonkey%2Fthindx/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MaulingMonkey","download_url":"https://codeload.github.com/MaulingMonkey/thindx/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":221820522,"owners_count":16886211,"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":["d3d","direct3d","directx","graphics","hlsl","rust","shader","xinput"],"created_at":"2024-10-13T04:22:30.235Z","updated_at":"2024-10-28T11:12:43.779Z","avatar_url":"https://github.com/MaulingMonkey.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ccenter\u003e\n\n# 🦀 **thindx** - **Thin** **D**irect**X** 🦀\n\nSafer DirectX: Types, fns, lifetimes, tests, real docs, intellisense, examples, debug visualizers, ...\n\n| 🦀 | When         | DirectX APIs |\n| --- | ----------- | ------------ |\n| 📦 |              | [examples](https://maulingmonkey.com/thindx/preview/docs/thindx/_examples/) • [rust ⮀ c++](https://maulingmonkey.com/thindx/preview/docs/thindx/_headers/) • [test coverage](https://maulingmonkey.com/thindx/preview/coverage/) • [lib.rs](https://lib.rs/crates/thindx) • [docs.rs](https://docs.rs/thindx)\n| ✔️ | Now          | [thindx](https://maulingmonkey.com/thindx/preview/docs/thindx/)::{[d3d9](https://maulingmonkey.com/thindx/preview/docs/thindx/d3d9/), [d3d::Compiler](https://maulingmonkey.com/thindx/preview/docs/thindx/d3d/struct.Compiler.html), [xaudio2](https://maulingmonkey.com/thindx/preview/docs/thindx/xaudio2/), [xinput](https://maulingmonkey.com/thindx/preview/docs/thindx/xinput/)}\n| ⚠️ | Soon™        | d3d11, d3d12, dxgi, dxcompiler, dinput\n| ⚠️ | Eventually   | d2d, dcompute, dsound, dstorage, dwrite, dxr, xact3, uwp::input?\n| ❌ | Never?       | d3d10, d3dx\\*, ddraw, dplay\n\n\n[![GitHub](https://img.shields.io/github/stars/MaulingMonkey/thindx.svg?label=GitHub\u0026style=social)](https://github.com/MaulingMonkey/thindx)\n[![Build Status](https://github.com/MaulingMonkey/thindx/workflows/Rust/badge.svg)](https://github.com/MaulingMonkey/thindx/actions?query=workflow%3Arust)\n[![crates.io](https://img.shields.io/crates/v/thindx.svg)](https://crates.io/crates/thindx)\n[![docs.rs](https://img.shields.io/docsrs/thindx)](https://docs.rs/thindx)\n[![License](https://img.shields.io/crates/l/thindx.svg)](https://github.com/MaulingMonkey/thindx)\n\n\u003c/center\u003e\n\n\n\n### ❌ This crate is probably unsound! ❌\n\nI'm exposing a huge legacy C++ API to Rust.  Mistakes will happen.\n\nThat said, soundness *is* a **very high priority** goal.  `thindx` will add things like extra bounds checks, parameter\nvalidation, extra init, etc. if need be in order to ensure soundness in safe fns whenever possible.  When it's not\npossible to validate unsoundness away, the fns in question should be marked `unsafe`.  This crate strives to be sounder\nthan whatever manual FFI you'd write yourself would be, and that's a **high** bar.\n\nBut there are some practical limits to this.  If a background driver thread invokes UB if it fails to allocate memory,\nwithout any direct correlation to specific API misuse like a large integer overflowing, that's a bug I can't sanely\nmitigate via safe fns.  I mean, theoretically I could write a pure-software clone of the entire DirectX runtime... but no.\n\nAdditionally, while I'm seeking to validate my APIs via testing, older implementations of the APIs in question may have\nmore bugs / unchecked parameters / ??? that I'll fail to mitigate due to being unable to trigger them myself.  While I'm\nhappy to investigate, accept pull requests, expand test coverage, etc. it's worth assuming this crate is unsound on\nolder versions unless you've tested yourself.\n\n### ⚠️ API major version churn ⚠️\n\n`0.0.0-yyyy-mm-dd` doesn't follow semver.\nIndividual `fn`s are likely to gain/lose `unsafe`, traits, etc. in a neverending attempt to make DirectX access sound.\nAs such, `thindx` itself will likely always suffer from major version churn.\nThis isn't too much of a problem until two crates wish to share / pass `thindx` types between themselves.\nIt might be possible to somewhat stabilize some types by exiling them into subcrates, but this has not yet been done.\nAdditionally, individual extension traits / functions / methods will likely never get the same treatment (no need?)\n\n\n\n\u003ch2 name=\"license\"\u003eLicense\u003c/h2\u003e\n\nLicensed under either of\n\n* Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or \u003chttp://www.apache.org/licenses/LICENSE-2.0\u003e)\n* MIT license ([LICENSE-MIT](LICENSE-MIT) or \u003chttp://opensource.org/licenses/MIT\u003e)\n\nat your option.\n\n\n\n\u003ch2 name=\"contribution\"\u003eContribution\u003c/h2\u003e\n\nUnless you explicitly state otherwise, any contribution intentionally submitted\nfor inclusion in the work by you, as defined in the Apache-2.0 license, shall be\ndual licensed as above, without any additional terms or conditions.\n\n\n\n\u003c!-- references --\u003e\n[winapi]:                   http://docs.rs/winapi/0.3/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaulingmonkey%2Fthindx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaulingmonkey%2Fthindx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaulingmonkey%2Fthindx/lists"}