Live data from Hacker News

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

jobs.apple.com

151–160 of 240 posts

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

#151

D now has an Ownership/Borrowing system implemented (though it is in its early stages). It will work with existing code, including DasBetterC code. You're able to incrementally adapt a program to O/B rather than rewrite it.

Thank you for responding. There's always a room for an awesome programming language. I've never used D but as a professional c++ programmer, I admire what you set out to do. (Assuming you are the creator....) Please ignore the naysayers. HN is diverse in degree and area of knowledge and some people even think electron is the only cross platform gui framework.

Oh, I've always had plenty naysayers. If I ever paid any attention to them, I'd be a total failure.

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

#152

Why wouldn't they use Swift? Seems odd.

Why would they use Swift? It doesn't seem like the most fitting replacement for C level infrastructure.

I don't see any obvious arguments why. It integrates very well with existing C code, a lot can be done with structs and static dispatch, there are pointers, etc.

Not Rust level capabilities, but pretty good.

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

#153

Earlier quoted context omitted.

Just throwing some info out there since I graduated from this exact program. We may graduate with an engineering degree, but we technically cannot use the word engineer in our title (in Canada) until we get our accreditations, which require a couple years working in Canada under a somebody else with their P.Eng license. The vast majority of us (definitely > 90% of my class) have moved to the US after graduation where…

Question for you then: Can you work under someone who's a P.Eng mechanical or civil engineer, and then get your own P.Eng license that way (as a software engineer)?

IIRC there's no limitations on who you work under provided they are licensed; P.Eng license is a not tied to any specific discipline. If I complete my engineer-in-training (4 years professional industry experience under the supervision of one (or more P.Engs)) and pass the exam component, then I will also be licensed as a P.Eng. I may choose to work as a software engineer, or any other role, but being a P.Eng means that I uphold the standards, ethics, and discipline of the engineer title.

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

#154

Earlier quoted context omitted.

Just throwing some info out there since I graduated from this exact program. We may graduate with an engineering degree, but we technically cannot use the word engineer in our title (in Canada) until we get our accreditations, which require a couple years working in Canada under a somebody else with their P.Eng license. The vast majority of us (definitely > 90% of my class) have moved to the US after graduation where…

> we technically cannot use the word engineer in our title Just for completeness: it’s OK to use the title “B. Eng.”, which means you have a Bachelor’s in engineering, without implying anything about being a professional engineer.

Is that so; it's been a while since I've taken my engineering ethics courses so I'm a little fuzzy on the details. Thanks for letting me know.

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

#155

Why wouldn't they use Swift? Seems odd.

Swift is not yet a zero-abstraction-cost language like C or Rust which might be one of their concerns.

C is far from zero-abstraction-cost. For example you can't do a generic qsort supporting user defined types with zero overhead, other than with preprocessor macros (ugly, unsafe, unmaintainable).

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

#156
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.

Rust doesn't have classes. It has structures (struct) and interfaces (trait).

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

#157
post #49

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.

Would this mean an engineer in the US who moves to Canada would not be able to practice without getting work accreditation and a license?

The exact policy depends on the province but an American engineer that passed the FE exam can easily become an Engineer in Training (EIT) and an American engineer that has more than 4 years work experience (reporting to an engineer) can easily become a Professional Engineer (P.Eng) in Canada.

In other cases, they look at your academic and work history, and may ask you to take FE and/or PE exams and/or an ethics exam and may ask you to complete specific engineering courses. It's actually possible to obtain accreditation through work experience alone (10 years IIRC).

You can even take the FE and PE exams in Canada for this purpose (and for Canadian grads that want to work in the US). Note that if you get an engineering degree in Canada, you don't have to take the FE exam or equivalent to start as an engineer in training, because the engineering schools themselves are accredited with very similar curriculum.

Personal anecdote: I have a Canadian engineering degree but I personally had no problem using work experience abroad as part of my four years experience towards my P. Eng.

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

#158
post #152

Earlier quoted context omitted.

Why would they use Swift? It doesn't seem like the most fitting replacement for C level infrastructure.

I don't see any obvious arguments why. It integrates very well with existing C code, a lot can be done with structs and static dispatch, there are pointers, etc. Not Rust level capabilities, but pretty good.

> Not Rust level capabilities

And you answered your own question.

If you aim for performance, "pretty good" doesn't cut it.

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

#160

doesn't Apple prevent engineers from having related engineering hobbies when they sign the contract ?

From my friends that work there - the answer is "it's complicated". Some of them do get away with it, obviously such as those that work on open-source software at Apple (like Safari, Darwin, etc) - or those with non-computer-related side-projects like photography or artisanal furniture making...

Apple seems to have inherited Microsoft's previous institutional paranoia about open-source software: the legal dept is concerned that if an employee casually browses GitHub and is inspired by some GPLv3 code that they could rewrite themselves for use in a proprietary Apple product then the lawyers consider that Apple product now possibly tainted (as rewriting code or being "inspired" by other code still legally counts as a derivative work, even if absolutely nothing was copy and pasted).

Microsoft lost that attitude around the same time Satya became CEO - I was at Microsoft when the transition happened and it was a refreshing change of policy that really came top-down. Of course we still had annual SBC training to remind us to always verify the licenses of any third-party or open-source components we use (and GPL is generally a big no-no, of course, without special dispensation from LCA) but the idea that a product's legal status could be tainted by casual browsing went by the wayside. I think a lot of the change came from a wave of sanity at the C-level when they realised the company was not actually being actively destroyed by meritorious - and meritless - open-source copyright violation lawsuits, and the few incidents that did occur (like the Windows ISO-to-USB tool debacle) were overblown with minimal impact to the company.

But Apple's paranoia isn't just about legal matters, but also out of concern that if Apple-watchers know who works for Apple and monitor their GitHub accounts then they'd be able to see which areas of technology interest those people, which may in-turn drop-hints about what Apple is working on (e.g. if we suddenly see a bunch of Apple folks Starring and forking LiDAR libraries for private use then that hints Apple is working on a LiDAR product... which they announced this week that they are: https://www.theverge.com/2020/3/18/21185959/ipad-pro-lidar-s...

Now, as someone who believes they'd otherwise make a great contribution to Apple as a valuable SE asset (yes, I'm being self-aggrandizing) this policy of theirs is a huge deal-killer for me. Not just because I own some popular GitHub repos with GPL licenses, but because I also have popular (and profitable) side-projects that only use a few hours of my time each month - and Apple is just as paranoid about those things as open-source projects are as vectors for leaking company movements, even unintentionally.

Heh - I remember shortly after I did NEO at MSFT and filled-out the "prior inventions" paperwork for my side-projects, my team lead admonished me for wasting his time looking at my dumb Google AdWords-supported websites - though he did agree the definition of "prior invention" was too vague.

(Footnote: if you're a recruiter or hiring-manager at Apple and you're reading this, and you agree that my side activities won't be a problem, please reply to this comment - I'd love to work on WebKit or Darwin at Apple :D!)

Post reply on HN