Skip to content
Snippets Groups Projects
  1. Jul 27, 2020
  2. Jul 19, 2020
  3. May 07, 2020
  4. May 29, 2019
  5. Feb 07, 2019
    • gnzlbg's avatar
      Fix build on all platforms · a17a91cd
      gnzlbg authored
      This PR fixes the build on all platforms and all Rust version down to the
      minimum Rust version supported by libc: Rust 1.13.0.
      
      The `build.rs` is extended with logic to detect the newer Rust features used by
      `libc` since Rust 1.13.0:
      
      * Rust 1.19.0: `untagged_unions`. APIs using untagged unions are gated on
        `cfg(libc_unions)` and not available on older Rust versions.
      
      * Rust 1.25.0: `repr(align)`. Because `repr(align)` cannot be parsed by older
        Rust versions, all uses of `repr(align)` are split into `align.rs` and
        `no_align.rs` modules, which are gated on the `cfg(libc_align)` at the top
        level. These modules sometimes contain macros that are expanded at the top
        level to avoid privacy issues (`pub(crate)` is not available in older Rust
        versions). Closes #1242 .
      
      * Rust : `const` `mem::size_of`. These uses are worked around with hardcoded
        constants on older Rust versions.
      
      Also, `repr(packed)` structs cannot automatically `derive()` some traits like
      `Debug`. These have been moved into `s_no_extra_traits!` and the lint of missing
      `Debug` implementations on public items is silenced for these. We can manually
      implement the `extra_traits` for these in a follow up PR. This is tracked
      in #1243. Also, `extra_traits` does not enable `align` manually anymore.
      
      Since `f64::to_bits` is not available in older Rust versions, its usage
      has been replaced with a `transmute` to an `u64` which is what that method
      does under the hood.
      
      Closes #1232 .
      a17a91cd
  6. Feb 03, 2019
  7. Nov 21, 2018
  8. Nov 20, 2018
  9. Dec 27, 2017
    • Ed Schouten's avatar
      Add support for CloudABI. · 510cb2f7
      Ed Schouten authored
      CloudABI is a sandboxed UNIX-like runtime environment, based on the
      principle of capability-based security. As CloudABI is intended to be
      cross-platform, the system call layer is specified here:
      
          https://github.com/NuxiNL/cloudabi/blob/master/cloudabi.txt
      
      From these definitions, we automatically generate C and Rust bindings.
      The latter is published on crates.io:
      
          https://crates.io/crates/cloudabi
      
      My goal is to implement libstd for CloudABI in such a way that it uses
      the C library as little as possible; only in places where it would ease
      interfacing with C code (e.g., thread creation). In places where
      constants in the C library are directly based on the CloudABI
      specification (e.g., errnos), use the constants provided by the cloudabi
      crate.
      510cb2f7
  10. Dec 13, 2017
  11. Nov 28, 2016
  12. Sep 29, 2016
Loading