Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove foreign function wrappers #8535

Conversation

nikomatsakis
Copy link
Contributor

Long-standing branch to remove foreign function wrappers altogether. Calls to C functions are done "in place" with no stack manipulation; the scheme relies entirely on the correct use of #[fixed_stack_segment] to guarantee adequate stack space. A linter is added to detect when #[fixed_stack_segment] annotations are missing. An externfn! macro is added to make it easier to declare foreign fns and wrappers in one go: this macro may need some refinement, though, for example it might be good to be able to declare a group of foreign fns. I leave that for future work (hopefully somebody else's work :) ).

Fixes #3678.

@@ -30,7 +30,7 @@ Rust extras are part of the standard Rust distribution.
#[crate_type = "lib"];

#[deny(non_camel_case_types)];
#[deny(missing_doc)];
#[denyg(missing_doc)];
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

:(

@catamorphism
Copy link
Contributor

@nikomatsakis - bitrotted.

bors added a commit that referenced this pull request Aug 19, 2013
…, r=graydon

Long-standing branch to remove foreign function wrappers altogether. Calls to C functions are done "in place" with no stack manipulation; the scheme relies entirely on the correct use of `#[fixed_stack_segment]` to guarantee adequate stack space. A linter is added to detect when `#[fixed_stack_segment]` annotations are missing. An `externfn!` macro is added to make it easier to declare foreign fns and wrappers in one go: this macro may need some refinement, though, for example it might be good to be able to declare a group of foreign fns. I leave that for future work (hopefully somebody else's work :) ).

Fixes #3678.
@bors bors closed this Aug 19, 2013
@brendanzab
Copy link
Member

My goodness sir. Thank you.

@emberian
Copy link
Member

Woohoo! 💃

@fillest
Copy link

fillest commented Aug 25, 2013

Sorry for question -- I'm completely new to Rust -- does this mean FFI calls have no overhead now (comparing to ordinary functions)?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Extern/native function reform
7 participants