11 ms·
OCaml: Add support to iOS/Mac ARM64
- nindalf 6y agoI think most programming languages and associated tools will start supporting ARM64 as a first class citizen. The current lack of support isn't due to apathy, just constraints around ARM64 not being popular for desktop development. For example, it's difficult to support a platform that isn't well supported by your CI/CD provider. Linus Torvalds previously said that ARM on the server would never be a thing since developers didn't run ARM on their personal machines. Since this assumption is no longer true, the ecosystem of tools will now support ARM better and we'll see ARM on the server become a major thing in a few year's time.
- EduardoRFS 6y agoI don't think that was the case for a long time on the tooling side, OCaml has a great support for ARM64 for a long time now, but Linux ARM64. But well most developers aren't actually using Linux. But a thing that is going to change is supporting iOS, one of the reasons that this PR was approved(and it adds support to iOS) it's mostly because there is a Mac ARM64
- asveikau 6y agoI don't know much about ocaml specifically, but speaking in the abstract, probably one of the best reasons I can think of for a compiler to target arm64 Linux is to target android phones.
- EduardoRFS 6y agoAndroid isn't even on the official list of OS supported, recently I fixed the build system for Android, OCaml is just not a mobile language(yet)
- enedil 6y agoMost OCaml developers might be actually using Linux though.
- nix23 6y ago>But well most developers aren't actually using Linux. What??
- the_af 6y agoI'm guessing he might have meant OCaml devs? Most development shops I've worked in used Linux servers to host their solution, and mostly Linux/Unix based tools and dev environments (people who preferred Windows as their desktop usually ssh'd to Linux boxes to work).
- non-entity 6y agoI wouldn't think so, from what I've read OCaml has pretty poor windows support.
- EduardoRFS 6y agoMost developers, there is a lot of places to get this information but if you look at the stackoverflow survey, which is a survey large enough to be relevant, you get some data around 25% of developers using Linux. We're talking about as their computer, not servers tho, everyone uses Linux for server
- the_af 6y agoThanks for the answer! I have a followup question: if the server is Linux, that means the app itself (or the "solution") is Linux based, which means that an OCaml solution would have to compile (or cross-compile to) and run on Linux, which means that ARM64 on Linux is relevant :) Unless of course most OCaml devs don't target Linux.
- yawaramin 6y agoSure it's relevant, but again like Eduardo said, most devs don't have Linux ARM64 dev machines, they don't use it on a daily basis, they don't have experience with it.
- 6y ago
- slezyr 6y ago> But well most developers aren't actually using Linux. Then it would be Windows and not Mac OS. Is Mac OS any popular outside USA?
- nicoburns 6y agoIt's certainly popular in the UK. Especially for developers and students. Of course if you're doing mobile (iOS) dev you're pretty much forced to use macs.
- monadic2 6y agoI'm not really sure you can call macs "popular" even here in the US.... they're a professional luxury for the most part. I say this with three macs within reach of me.
- unreal6 6y agoThey seem exceedingly popular in academia, it seems that most university students and professors posses them, even in computer science departments.
- freehunter 6y agoThe subject of the conversation is developers, who are almost by definition luxurious professionals.
- josephg 6y agoIt really depends on the programming culture. Game developers and many enterprise software developers almost universally develop on windows. I’ve had conversations with some people from those areas who have been shocked at the idea software developers use macs - they personally don’t know anyone who does. But web development shops (especially node/react/etc), consulting, and SV startups seem to pretty consistently use macs. It’s hard to intuitively tell how popular any of this stuff is in absolute terms because we’re all individually trapped in filter bubbles based on the kind of programmers we interact with.
- nicoburns 6y ago> The current lack of support I'm not sure that's even true from a tooling perspective. It's true that desktop applications often don't support ARM64, but toolchains usually do because both Android and iOS are primarily ARM64 and are hugely popular platforms.
- heavyset_go 6y agoAs someone who jumped on the ARM train early, and someone who doesn't want to contribute to creating more electronic waste than necessary, it's disheartening to see 32-bit ARM being increasingly ignored as a platform compared to ARM64.
- wczekalski 6y agoARM 32 bit is supported by OCaml. Just not for iOS/MacOS since the 32 bit iOS devices are ancient by now.
- yjftsjthsd-h 6y ago> 32 bit iOS devices are ancient by now The last iPhone with a 32-bit processor appears to be the iPhone 5c, last produced in 2015. As I type this on a laptop from 2015, I have to question your definition of "ancient".
- saagarjha 6y agoiPhone 5c uses technology from 2012; it was already terrible to use as it approached its end-of-life in 2017. Old phones just don’t really have the lifespan that computers do. (In contrast, my iPhone SE–which is using 5-year-old technology as well–is still an excellent phone.)
- josephg 6y agoI think that’s increasingly not the case. I’m writing this message on an iPhone 6s which honestly still feels great. I had the battery replaced a couple years ago but aside from that I haven’t had any problems with it - all the apps I run on it feel smooth and responsive. (And in some cases better than my desktop since they aren’t running through electron.) If not for the camera and iOS support inevitably ending, I don’t see much reason to upgrade.
- nicoburns 6y ago
- mattgreenrocks 6y agoThere's confirmation bias at work here, but I've definitely noticed a slight uptick on ARM-related work to various dev tools (think LLVM and whatnot) in 2019-2020 leading up to the announcement. That and $5 gets you a decent cup of coffee, but hey. OCaml is known for having a small-ish implementation with good performance IIRC (not sure where multicore is these days). Will have to take a look at this.
- superherointj 6y agoOCaml has multicore now and seems to be doing well. Latest report: https://discuss.ocaml.org/t/multicore-ocaml-june-2020/6047/1 https://discuss.ocaml.org/t/multicore-ocaml-june-2020/6047/1
- blargmaster33 6y agoSince Linus cucked to the SJW everything he say is suspect.
- babaganooj 6y agoI have this vague idea, which can be completely false, that porting software that runs on ARM64 Linux (which is what cloud servers use) to Mac ARM64 (which I think is BSD derived?) is not trivial. Or is it?
- saagarjha 6y agoDepends on the kind of software. POSIX compatible C requires few, if any, source changes. Code that makes direct syscalls will need more work.
- DCKing 6y agoIt's worth pointing out that MacPorts still has a lot of modern tools and utilities working for PowerPC Macs. This is despite PowerPC Macs being 'officially' stuck on GCC 4.2 (unless you install newer... through MacPorts), ancient Mac OS X frameworks and barely any developers have a PowerPC machine at hand (because why would they).
- saagarjha 6y agoMacPorts also mostly supports Apple silicon. It's pretty cool!
- lmm 6y agoIn the general case it's not necessarily trivial, just like porting software from x86 linux to x86 mac is not necessarily trivial. For example your software might rely on some system interface that's done differently on those platforms, e.g. if you're using kprobes then it would take an effort to port that to use dtrace. And if we're talking about a GUI application then the framework it uses might not be first-class on mac, e.g. GTK only works in an X11-based way. But there are cases where it's as simple as pushing the compile button and getting out something working.
- monadic2 6y agoHah, and arm servers were already gaining an economic edge before Apple’s consumer product switch.
- alderz 6y agoBy reading the stream of comments on the PR, and from my own experience, I feel that it is extremely cumbersome to do code reviews on Github. Atlassian's Fisheye/Crucible looks like a better solution. Does anyone think otherwise? I think Github has a large room of improvement in this regard; a PR is not the same as an issue.
- ChrisMarshallNY 6y agoI don't feel like GH is really meant to be a code review platform. It does PRs, but I assume that review should be done offline (like in other tools, like Crucible). We have used GH as a review platform for an open-source project, but they tend to be relatively minor PRs. If they got hairier, we'd probably find something else. Personally, I really don't like having a gazillion different tools. If we can use one tool for several purposes, then that's what I prefer. If the tool becomes too cumbersome, then I'll work with something more specialized.
- aspenmayer 6y agoIs there a good self-hosted open source platform for this? I’m new to all this, even though I’ve been computing since I was in grade school. Coding is a new discipline for me, and it’s hard to know the territory without a guide. I’ve seen you around and would trust a recommendation from you.
- emmelaich 6y agoI suggest https://www.gerritcodereview.com/ https://www.gerritcodereview.com/
- aspenmayer 6y agoThank you, I’m going to look into this more.
- skrtskrt 6y agoI have used and enjoyed Upsource (JetBrains code review tool) particularly for trunk development where you often need to be able to cherry-pick randomly-ordered commits into a review. I honestly don't know how much our org paid for it though.
- saagarjha 6y agoIf one was ever curious why the security research device program should have been open to everyone and available without restrictions: part of this work was done on a jailbroken iOS device and QEMU. I doubt anyone would have been able put in that work had they not had access to that.
- EduardoRFS 6y agoThere was a previous PR where I got the overall patches needed, but almost everything was developed on the iOS + QEMU, at first I didn't had spare money to buy an used iPhone. The only feature developed on the real iPhone was the dynamic linking, but because I already got the device. Also I don't have a mac so Hackintosh, a powerful Hackintosh but nonetheless
- vmchale 6y agoTime for OCaml mobile :) This is cool stuff, love to see functional programming growing and developing.
- weitzj 6y agoDoes anybody know what’s the status with bitcode support? Last info from about 1.5 years ago was that the Golang and Rust toolchain did not support it, but also Apple did not make it mandatory. What is the current state? Does ocaml support bitcode?
- UncleOxidant 6y agoThere is an OCaml interpreter that does run a bitcode, is that what you're referring to?
- Gaelan 6y agoThe App Store has an option where, in addition to uploading an ARM binary, you can upload LLVM bitcode (a binary representation of LLVM IR). This allows Apple to optimize the app differently for different devices[0], and is required to build apps for watchOS and maybe tvOS. [0]: Not sure if Apple does this in practice, but I believe the purpose of bitcode is that they could do that if they wanted to.
- wczekalski 6y agoOCaml compiler isn't LLVM based and LLVM bitcode is not supported.
- plorkyeran 6y agoWhen they released the first arm64_32-based watch they rebuilt all existing apps on the app store for that architecture from bitcode.
- EduardoRFS 6y agoThere is no support to bitcode, but there is no major advantage to support it, so it doesn't seems to be worthy
- sanxiyn 6y agotvOS and watchOS require bitcode, but yes I agree that's not major advantage compared to work required to support it.
- scott31 6y ago... to the language which lacks multi-threading
- gmfawcett 6y agoLow effort post? Even though multithreading isn't relevant to the ARM64 work: for the first time in a long time, I think we can see a serious Ocaml multicore in the practical future, not the perennial "some day, maybe." You can already try the pools/futures part of the new multicore implementation, it's the algebraic effects part that is still outstanding -- see: https://github.com/prismlab/parallel-programming-in-multicore-ocaml/tree/draft https://github.com/prismlab/parallel-programming-in-multicor...
- nephanth 6y agoOcaml has multithreading support now though (it was merged recently iirc)
- yawaramin 6y agoNot yet, but it's being prepared to merge.
- smabie 6y agoIt should land pretty soon I imagine.
- cageface 6y agoOf all the niche languages out there I'd like to see break into the mainstream Ocaml is my favorite. It seems to hit a sweet spot between pragmatism and elegance.