Live data from Hacker News

Apple is looking for engineers to convert its code from C to Rust

jobs.apple.com

131–140 of 240 posts

Re: Apple is looking for engineers to convert its code from C to Rust

#131
post #118

Earlier quoted context omitted.

This is a 'mindshare' game. D had its chance, now Rust has its chance. Would have been cool though if D had caught on more back in the day. Re-invention seems to be impossible to avoid in the software world.

> D had its chance What is stopping people to download a D compiler and write software in it right now?

For me, a mild addiction to learning nim/wren and porting code to them. D and Rust can wait a little longer.

People forget that there's a big world out there. We're all doing our thing.

Re: Apple is looking for engineers to convert its code from C to Rust

#132
post #87

Earlier quoted context omitted.

I don't know the details for Canada specifically, but I doubt not having a degree precludes you from registration - generally having one just expedites it. I'd encourage you not to discount professional bodies as irrelevant, or incapable of becoming more relevant, our industry could benefit from it in many ways - perhaps most frequently on-topic on HN is the ethical and whistle-blowing aspect. Also plenty of professi…

Not having a degree precludes registration... in fact, the degree must be from an engineering society accredited program, to ensure you get enough hours in front of a P.Eng prof or lecturer, among other things, I think. One Canadian university's Comp Sci dept. started offering Software Engineering program one time and it ended up in a lawsuit the outcome of which is... complicated. Canada is, I feel, very... lot of r…

The new word is "computer programmer".

Re: Apple is looking for engineers to convert its code from C to Rust

#133

Earlier quoted context omitted.

This is a 'mindshare' game. D had its chance, now Rust has its chance. Would have been cool though if D had caught on more back in the day. Re-invention seems to be impossible to avoid in the software world.

D missed the train because the creator(s) didn't open source it, instead they wanted to monetize it right away

A quick google search shows D is written with the boost license? Looks to be pretty free to me and wikipedia says the boost license co stitutes as free and open source, just not copyleft.

Considering copyleft is arguably more restrictive than not, it seems incredibly unfair, and untrue, to say it's monetized.

Whether it was previously seems irrelevant now.

Re: Apple is looking for engineers to convert its code from C to Rust

#134
post #27

I am like many others here surprised that this is in Camrose, Alberta. I didn't think big American companies would open an office here outside of the typical tech hubs (Vancouver, Toronto, Waterloo, and Montreal).

Population (2016) 18,742. Wow, Camrose is a really surprising location

Re: Apple is looking for engineers to convert its code from C to Rust

#136
post #97
post #46

Earlier quoted context omitted.

It said Rust and/or C though, and I imagine learning Rust is pretty easy compared to C from what I've seen.

Arguably not. Rust has a lot of things that C doesn't, like classes, lifetimes, and the borrow checker, which can be jarring to deal with for programmers used to other languages. And, unlike most other languages I've seen, you can't just sit down and write a "bad" Rust program and then refine your abilities; the compiler won't let you do the "bad" things, so you have to get everything write from the word go.

I've just been recently learning some Rust coming from a heavy C background. The dynamic trait objects mimic what I do in C with vtable pointers and glue functions, and then sometimes I look at it over and over to make sure the casts are right and I haven't forgotten a free or anything. The borrow checker and lifetimes mimic what I do in C with pointer constness and function documentation, and then often I get very nervous and look something up again and maybe add extra intermediary comments on the data flow within a function if I'm not absolutely sure I remembered what the lifetime behavior contract was for a caller or particular callee, and of course I have to do this with all the structs too. The Drop trait mimics what I do in C with either straight-line fallthrough-chained exit labels as interior-exit goto targets or carefully included cleanups before a lesser amount of interior returns, and then I sometimes have to convert between the two for readability, and in the former case I have to carefully use a temporary variable if I also needed to return a non-constant at the end of all that. Compound-value ownership movement mimics what I do in C with either structure assignment or memcpy, and if the latter, hope that I got the pointer types and type size right because memcpy won't check, and in either case hope that I was able to prove that the original structure wasn't going to be incorrectly reused and maybe memset it to zero just in case that makes something crash rather than cause memory corruption.

I expect I'll run into more friction once I get to any point where I want to make more dynamically interlinked data structures, though that might also push my designs into directions that use fewer pointers and more indexes or other indirect references to start with (I'm not sure of that yet)—and I really like the idea that if I can pare some of it down to a working “core” data structure semantic that involves pointer juggling, I can put carefully constructed hard-packed blocks of the pointer juggling in their own unsafe zone and then not be able to accidentally break the invariants outside of that.

Which, again, is almost exactly the same thing I'd tend to do in C with inline wrapper functions and visibility stuff, and making sure I compute all the intermediary results in one phase and putting all the hard mutations in a second, unfailable (except possibly for hard crashes due to null pointers or such) phase so that if something goes wrong the data doesn't wind up crashing down to a persistent broken state from mid-flight!

Heck, I've even done the newtype pattern (single-element structs for safe reinterpretation/bounding of an underlying type) in C before!

I've described the way I write C as “as though I were hand-cranking the front end of a strict, low-level Haskell or Caml compiler in my head”. Rust is the closest I've seen thus far to moving a big chunk of that part of me into the digital part of the compiler. So I'm guessing my taste wasn't exactly uncommon.

Re: Apple is looking for engineers to convert its code from C to Rust

#137
post #46

Earlier quoted context omitted.

Because C programmers are 1000x more common than Rust programmers. Edit: "only" 50x according to TIOBE.

It said Rust and/or C though, and I imagine learning Rust is pretty easy compared to C from what I've seen.

Rust syntax is strange but understandable to my C/C++/nim/python/elixir experience. I successfully managed to port a few test projects to it several months ago.

Didn't mind the experience at all except for a few niggles which actually are nothing to do with the language itself and more just some of the community attitudes. Some of the evangelists are... less optimal.

Re: Apple is looking for engineers to convert its code from C to Rust

#138
post #126

Earlier quoted context omitted.

Need a degree from an accredited school in engineering + pass the engineering licensing requirements. In Ontario, where I live, that means passing an ethics exam + some years of work that is overseen by someone with a P.Eng. The challenge in software is usually the last part.

Oddly, this doesn’t apply for the railroad. [0] [0] - https://www.canadianbusiness.com/lists-and-rankings/best-job...

It does apply to the railroad in general but there are a few job titles grandfathered in that don't require a P. Eng. such as locomotive engineer (the other common one is power engineer) because those job titles were used before the engineering regulations existed and the job descriptions don't match the modern definition of engineering in Canada.

For engineering disciplines in the railroad industry such as structural, mechanical and electrical, a P. Eng. is indeed required.

Re: Apple is looking for engineers to convert its code from C to Rust

#140
post #86

In Canada you cannot call a software developer engineer unless he/she is an actual engineer

This argument again? Every damn time...

Well, fair is fair. You don't want your local acupuncturist calling himself m.d. right?
Post reply on HN