Rust for Windows

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
  • windows-rs

    Rust for Windows

  • https://github.com/microsoft/windows-rs/issues/143#issuecomm...

    > we could support this in future, but it is not an immediate goal. If this is something that folks would like to do, feel free to chime in on this issue and let us know.

  • win32ada

    Ada API to the Windows library

  • Link: https://wiki.dlang.org/D_for_Win32

    Ada has something similar: https://github.com/AdaCore/win32ada

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • winapi-rs

    Rust bindings to Windows API

  • The winapi does a lot of work to support that use-case. Importantly, it ships (mingw) import libraries to allow linking against windows libs from linux trivially[0].

    [0]: https://github.com/retep998/winapi-rs/tree/0.3/x86_64/def

  • samples-rs

  • For someone not familliar with Windows API, why does creating a Windows needs unsafe and other pointer passing ect ...? I guess it's the same for the C++/C# version?

    https://github.com/kennykerr/samples-rs/blob/master/create_w...

  • core-foundation-rs

    Rust bindings to Core Foundation and other low level libraries on Mac OS X and iOS

  • For Mac fans, the closest you'll have to this in OS-X is core-foundation-rs[1], by the servo team.

    [1] https://github.com/servo/core-foundation-rs

  • win32metadata

    Tooling to generate metadata for Win32 APIs in the Windows SDK.

  • I was curious how this worked: The previous iteration of this only worked for WinRT API, and this new crate seemed to also work by generating code from WinMD files. But WinMD files only contained definitions for WinRT/COM APIs, so how could this possibly work?

    Well turns out, microsoft started a project to also generate Win32 API information in WinMD file, to generate APIs from them automatically for all native languages! See win32metadata[0]. This could make interfacing with win32 APIs a lot more convenient!

    https://github.com/microsoft/win32metadata

  • QMetaObject crate for Rust

    Integrate Qml and Rust by building the QMetaObject at compile time.

  • https://github.com/woboq/qmetaobject-rs

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • rust-zmq

    Rust zeromq bindings.

  • I think maybe the ZeroMQ rust crate as a case study is something that is non-trivial: https://github.com/erickt/rust-zmq

  • PowerShell

    PowerShell for every system!

  • Good thing Linux users are dragging Windows back to, checks notes, 1978.

    https://en.wikipedia.org/wiki/VT100

    Defeating 37 years of separating content from presentation

    https://en.wikipedia.org/wiki/Separation_of_content_and_pres... (LaTeX)

    So we can embedd garbage in strings again! Causing effects like this:

    https://github.com/PowerShell/PowerShell/issues/13071

    "On Linux, if you use ls --color then different file types use ANSI escape sequences as color indicators. If you pipe this output to less, then you get paging while retaining the color information. If you redirect this output to a file, that file contains the ANSI escape sequences. If you then use the cat command on the file, you see the coloring as the ANSI escape sequences are rendered by the terminal."

    Interpreting commands from log messages! Because we haven't learned from history:

    https://en.wikipedia.org/wiki/SQL_injection

    A glorious future awaits.

  • Cargo

    The Rust package manager

  • I never had an issue with WSL1 until some bizarre bug that cropped up seemingly out of nowhere in which I would blue-screen during some Rust compilation. I didn't have the issue after maybe four or six months of using Rust in WSL1 until suddenly I did. Upgrading to WSL2 fixed the problem.

    Publishing Rust crates does require a workaround[0] in WSL2 if it's from a Windows directory. That's annoying but pretty infrequent (for me) and not a difficult workaround.

    Except for those two issues, I've not had any problems in either WSL version - certainly nothing that would give me pause to using either one.

    [0] https://github.com/rust-lang/cargo/issues/8439#issuecomment-...

  • MSRC-Security-Research

    Security Research from the Microsoft Security Response Center (MSRC)

  • Here is some of the internal advocacy going on at Microsoft.

    - Managed languages if you can afford a GC

    - Rust

    - C++ with Core Guidelines

    https://github.com/microsoft/MSRC-Security-Research/tree/mas...

    Note that there are still some teams like Azure Sphere and Azure RTOS, which are only providing C based SDKs, so no everyone is on the same wave length.

  • Windows Terminal

    The new Windows Terminal and the original Windows console host, all in the same place!

  • Here's the colormap I use, which I've made sure never has too-bright colors on the near-white background: https://pastebin.com/raw/AdR3sBSs

    Microsoft publish a tool in the Windows Terminal GitHub repo, ColorTool.exe[1], which can turn iTerm2 color scheme files into Windows Terminal ones. That might be your best bet because there are huge repositories of good iTerm2 schemes[2] and really slick tools to quickly make your own with live previews.[3]

    [1] https://github.com/Microsoft/Terminal/tree/main/src/tools/Co...

    [2] https://github.com/mbadolato/iTerm2-Color-Schemes

    [3] https://terminal.sexy/

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts