Skip to content

Add go to rust-inside-other-languages chapter #28915

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

Conversation

PeterSP
Copy link

@PeterSP PeterSP commented Oct 8, 2015

Like ruby, python, and node.js javascript, go is a commonly used modern language on the server. Like them it is garbage-collected. Unlike them, it does not have a GIL (indeed, it is even compiled to native assembly instructions).

A quick conversation in the Rust IRC channel lends me to think this is at least worth considering.

As noted in the HTML comment, this submission has times measured on a different system than the other examples, mine. On mine, the other examples took 50%, 60%, or 88% of the time listed (depending on the example). The example should probably be measured on the same system as the others in any final version of this chapter.

Like ruby, python, and node.js javascript, go is a commonly used modern language on the server. Like them it is garbage-collected. Unlike them, it does not have a GIL (indeed, it is even compiled to native assembly instructions).

A quick conversation in the Rust IRC channel lends me to think this is at least worth considering.
@rust-highfive
Copy link
Contributor

Thanks for the pull request, and welcome! The Rust team is excited to review your changes, and you should hear from @brson (or someone else) soon.

If any changes to this PR are deemed necessary, please add them as extra commits. This ensures that the reviewer can see what has changed since they last reviewed the code. The way Github handles out-of-date commits, this should also make it reasonably obvious what issues have or haven't been addressed. Large or tricky changes may require several passes of review and changes.

Please see the contribution instructions for more information.

@PeterSP
Copy link
Author

PeterSP commented Oct 8, 2015

One further fault this addition may have: it should be possible, by adding the library you create in rust to the system library locations, or by otherwise finding a cgo comment syntax to link against it, to invoke rust from go without needing a third party ffi library wrapper. That I was unable to figure out a way to link against a library in cgo using a relative path does not, after all, mean it is impossible.

I don't know if that is important.

$ go get bitbucket.org/binet/go-ffi/pkg/ffi
```

(You may need to install mercurial first).
Copy link
Member

Choose a reason for hiding this comment

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

Mercurial should be capitalized

Capitalization, spacing, and link neatness.
@PeterSP
Copy link
Author

PeterSP commented Oct 10, 2015

I'm happy to make stylistic improvements but I'm still somewhat concerned about the comparability of the timings.

@bors
Copy link
Collaborator

bors commented Nov 19, 2015

☔ The latest upstream changes (presumably #29932) made this pull request unmergeable. Please resolve the merge conflicts.

@steveklabnik
Copy link
Member

Hey @PeterSP ,

So, I am conflicted here. On one hand, I really like this addition. On the other hand... well let me just spill it out:

  1. this isn't intended to be a full reference to this, just an intro, so keeping it to a few languages makes sense.
  2. If we don't want to include every language. maybe this just shouldn't be here at all?
  3. On the other hand, it's a really popular section.
  4. How are we going to keep up with those other languages? What about when they change? I can't monitor too many other languages for breaking changes, and this section basically can't get tested...

So, I'm not sure what to do. I think I'm leaning towards "this chapter should just be removed", I think.

@brson
Copy link
Contributor

brson commented Dec 28, 2015

I'm convinced just by "this isn't meant to be a full reference". We can't include every language here - that's for another document.

@brson brson closed this Dec 28, 2015
steveklabnik added a commit to steveklabnik/rust that referenced this pull request Dec 28, 2015
Some history:

While getting Rust to 1.0, it was a struggle to keep the book in a
working state. I had always wanted a certain kind of TOC, but couldn't
quite get it there.

At the 11th hour, I wrote up "Rust inside other langauges" and "Dining
Philosophers" in an attempt to get the book in the direction I wanted to
go. They were fine, but not my best work. I wanted to further expand
this section, but it's just never going to end up happening. We're doing
the second draft of the book now, and these sections are basically gone
already.

Here's the issues with these two sections, and removing them just fixes
it all:

// Philosophers

There was always controversy over which ones were chosen, and why. This
is kind of a perpetual bikeshed, but it comes up every once in a while.

The implementation was originally supposed to show off channels, but
never did, due to time constraints. Months later, I still haven't
re-written it to use them.

People get different results and assume that means they're wrong, rather
than the non-determinism inherent in concurrency. Platform differences
aggrivate this, as does the exact amount of sleeping and printing.

// Rust Inside Other Languages

This section is wonderful, and shows off a strength of Rust. However,
it's not clear what qualifies a language to be in this section. And I'm
not sure how tracking a ton of other languages is gonna work, into the
future; we can't test _anything_ in this section, so it's prone to
bitrot.

By removing this section, and making the Guessing Game an initial
tutorial, we will move this version of the book closer to the future
version, and just eliminate all of these questions.

In addition, this also solves the 'split-brained'-ness of having two
paths, which has endlessly confused people in the past.

I'm sad to see these sections go, but I think it's for the best.

Fixes rust-lang#30471
Fixes rust-lang#30163
Fixes rust-lang#30162
Fixes rust-lang#25488
Fixes rust-lang#30345
Fixes rust-lang#29590
Fixes rust-lang#28713
Fixes rust-lang#28915

And probably others. This lengthy list alone is enough to show that
these should have been removed.

RIP.
@steveklabnik
Copy link
Member

/cc #30595

Manishearth added a commit to Manishearth/rust that referenced this pull request Dec 29, 2015
…ankro

Some history:

While getting Rust to 1.0, it was a struggle to keep the book in a
working state. I had always wanted a certain kind of TOC, but couldn't
quite get it there.

At the 11th hour, I wrote up "Rust inside other langauges" and "Dining
Philosophers" in an attempt to get the book in the direction I wanted to
go. They were fine, but not my best work. I wanted to further expand
this section, but it's just never going to end up happening. We're doing
the second draft of the book now, and these sections are basically gone
already.

Here's the issues with these two sections, and removing them just fixes
it all:

// Philosophers

There was always controversy over which ones were chosen, and why. This
is kind of a perpetual bikeshed, but it comes up every once in a while.

The implementation was originally supposed to show off channels, but
never did, due to time constraints. Months later, I still haven't
re-written it to use them.

People get different results and assume that means they're wrong, rather
than the non-determinism inherent in concurrency. Platform differences
aggrivate this, as does the exact amount of sleeping and printing.

// Rust Inside Other Languages

This section is wonderful, and shows off a strength of Rust. However,
it's not clear what qualifies a language to be in this section. And I'm
not sure how tracking a ton of other languages is gonna work, into the
future; we can't test _anything_ in this section, so it's prone to
bitrot.

By removing this section, and making the Guessing Game an initial
tutorial, we will move this version of the book closer to the future
version, and just eliminate all of these questions.

In addition, this also solves the 'split-brained'-ness of having two
paths, which has endlessly confused people in the past.

I'm sad to see these sections go, but I think it's for the best.

Fixes rust-lang#30471
Fixes rust-lang#30163
Fixes rust-lang#30162
Fixes rust-lang#25488
Fixes rust-lang#30345
Fixes rust-lang#29590
Fixes rust-lang#28713
Fixes rust-lang#28915

And probably others. This lengthy list alone is enough to show that
these should have been removed.

RIP.
steveklabnik added a commit to steveklabnik/rust that referenced this pull request Dec 29, 2015
Some history:

While getting Rust to 1.0, it was a struggle to keep the book in a
working state. I had always wanted a certain kind of TOC, but couldn't
quite get it there.

At the 11th hour, I wrote up "Rust inside other langauges" and "Dining
Philosophers" in an attempt to get the book in the direction I wanted to
go. They were fine, but not my best work. I wanted to further expand
this section, but it's just never going to end up happening. We're doing
the second draft of the book now, and these sections are basically gone
already.

Here's the issues with these two sections, and removing them just fixes
it all:

// Philosophers

There was always controversy over which ones were chosen, and why. This
is kind of a perpetual bikeshed, but it comes up every once in a while.

The implementation was originally supposed to show off channels, but
never did, due to time constraints. Months later, I still haven't
re-written it to use them.

People get different results and assume that means they're wrong, rather
than the non-determinism inherent in concurrency. Platform differences
aggrivate this, as does the exact amount of sleeping and printing.

// Rust Inside Other Languages

This section is wonderful, and shows off a strength of Rust. However,
it's not clear what qualifies a language to be in this section. And I'm
not sure how tracking a ton of other languages is gonna work, into the
future; we can't test _anything_ in this section, so it's prone to
bitrot.

By removing this section, and making the Guessing Game an initial
tutorial, we will move this version of the book closer to the future
version, and just eliminate all of these questions.

In addition, this also solves the 'split-brained'-ness of having two
paths, which has endlessly confused people in the past.

I'm sad to see these sections go, but I think it's for the best.

Fixes rust-lang#30471
Fixes rust-lang#30163
Fixes rust-lang#30162
Fixes rust-lang#25488
Fixes rust-lang#30345
Fixes rust-lang#28713
Fixes rust-lang#28915

And probably others. This lengthy list alone is enough to show that
these should have been removed.

RIP.
bors added a commit that referenced this pull request Jan 5, 2016
Some history:

While getting Rust to 1.0, it was a struggle to keep the book in a
working state. I had always wanted a certain kind of TOC, but couldn't
quite get it there.

At the 11th hour, I wrote up "Rust inside other langauges" and "Dining
Philosophers" in an attempt to get the book in the direction I wanted to
go. They were fine, but not my best work. I wanted to further expand
this section, but it's just never going to end up happening. We're doing
the second draft of the book now, and these sections are basically gone
already.

Here's the issues with these two sections, and removing them just fixes
it all:

// Philosophers

There was always controversy over which ones were chosen, and why. This
is kind of a perpetual bikeshed, but it comes up every once in a while.

The implementation was originally supposed to show off channels, but
never did, due to time constraints. Months later, I still haven't
re-written it to use them.

People get different results and assume that means they're wrong, rather
than the non-determinism inherent in concurrency. Platform differences
aggrivate this, as does the exact amount of sleeping and printing.

// Rust Inside Other Languages

This section is wonderful, and shows off a strength of Rust. However,
it's not clear what qualifies a language to be in this section. And I'm
not sure how tracking a ton of other languages is gonna work, into the
future; we can't test _anything_ in this section, so it's prone to
bitrot.

By removing this section, and making the Guessing Game an initial
tutorial, we will move this version of the book closer to the future
version, and just eliminate all of these questions.

In addition, this also solves the 'split-brained'-ness of having two
paths, which has endlessly confused people in the past.

I'm sad to see these sections go, but I think it's for the best.

Fixes #30471
Fixes #30163
Fixes #30162
Fixes #25488
Fixes #30345
Fixes #29590
Fixes #28713
Fixes #28915

And probably others. This lengthy list alone is enough to show that
these should have been removed.

RIP.
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.

5 participants