Git Product home page Git Product logo

Comments (7)

kamalmarhubi avatar kamalmarhubi commented on August 17, 2024

Thinking about #264 (using definitions from libc), we may want our own analog of the sys module pattern. Right now it's hard to track down where items come in because the cfg attrs are all over the place. @arcnmx you have a recently opened RFC on a related topic. Thoughts?

from nix.

arcnmx avatar arcnmx commented on August 17, 2024

Well, I'd say it's an unrelated issue in regards to my proposal toward libstd, which is more about defining an abstraction layer over the OS for libstd to use. libstd has a lot of ifdef/else/elif/etc going on where different implementations are used depending on the platform. nix seems more all-or-nothing; everything is in the right place, just cfg'd out if something doesn't apply to a given platform.

That said, moving all the mod ffi stuff into another layer under nix with the maybe-goal of eventually migrating it all into libc could potentially be a good idea. It would let us make it a public separate nix-sys crate too that only defines the raw C API.

it's hard to track down where items come in because the cfg attrs are all over the place

Not sure I understand what you mean by that, what's hard? Most items are cfg'd out directly at their definition point AFAIR

from nix.

kamalmarhubi avatar kamalmarhubi commented on August 17, 2024

Ah I see. Maybe I actually meant a file layout more like libc's then. A way to have a hierarchy of related systems, so that there's a clear place to put definitions. Then we can use conditional module imports instead of conditional definitions. It seems like less mental effort to me in terms of where to put things.

from nix.

kamalmarhubi avatar kamalmarhubi commented on August 17, 2024

Here's the section describing it in the libc RFC: https://github.com/alexcrichton/rfcs/blob/pomote-libc/text/0000-promote-libc.md#internal-structure

from nix.

fiveop avatar fiveop commented on August 17, 2024

Currently, I am against this change. libc has this structure and it fits with its concept. For us, I do not see the advantage, but am rather afraid it would lead to a lot of code duplication. This is the case in libc, and I do not see a way around that there. However, we can use that libc hides that fact, by using their constants and function declarations. This would leave us with configuring a few functions and certain constants in bitflags and enums in and out depending on platform.

from nix.

kamalmarhubi avatar kamalmarhubi commented on August 17, 2024

This makes sense. We should get fully onto libc definitions (#264) first, then see what it looks like.

from nix.

Susurrus avatar Susurrus commented on August 17, 2024

I think the current consensus is to defer on this. Should I close this issue and it can be revisited if necessary?

from nix.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.