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

Crystal #206

Closed
jhass opened this issue Jun 9, 2020 · 5 comments
Closed

Crystal #206

jhass opened this issue Jun 9, 2020 · 5 comments
Labels

Comments

@jhass
Copy link

jhass commented Jun 9, 2020

Jonne Haß, me@jhass.eu, Crystal project, Core member

Supporting applicants:

Stephanie Wilde-Hobbs, steph@rx14.co.uk, Crystal project, Core member
Brian J. Cardiff, bcardiff@manas.tech, Crystal project/Manas Tech, Core member/Principal Engineer, Product Manager & Researcher

The Crystal programming language0, 1

A language for humans and computers.

Crystal has Ruby inspired syntax, is statically typed with automatic union types and a powerful macro language for a dynamic feel, compiles to native code using LLVM as a backend and has coroutines at the heat of its concurrency model.

It's nearing its 1.0 release, has an active community and is used in production at several companies besides many personal projects.

Which members of the community would benefit from your work?

Crystal does not focus on a niche but wants to be a general purpose programming language. As such its community is as broad. Supporting ARM builds of Crystal programs will enable a wide variety of usecases for many current and future members of our community.

Crystal was previously ported to AArch64, among other ARM targets. Unfortunately since then we did not have a CI solution for testing these targets. Thus the support degraded a bit over the time. I've recently invested time to brush it up again2, 3, 4 and would love for history not to repeat itself. Therefore I'm pursing resources for a CI pipeline on ARM.

I hope this will enable us to provide Tier 1 support for AArch64 and other ARM architectures5 soon.

Is the code that you’re going to run 100% open source? If so, what is the URL or URLs where it is located?

Yes. I'm planning to make any infrastructure automation developed for this system fully open source as well.

What infrastructure (computing resources and network access) do you need?

Before coming here I have evalutated various alternatives for an AArch64 CI, namely QEMU emulation on Github Actions6, Drone's Cloud ARM offering7 and Travis' ARM offering8. Unfortunately none of these make it remotely possible to ensure continued AArch64 compatibility by running on pull request builds at our community's contributions rate.

To keep our build below the acceptable limit of 90 minutes (with a preferred runtime of below 60 minutes), we'll need a decent CPU and about 8GB of RAM. Ideally I would love to have two pipelines, one for musl libc and one for GNU libc. Finally I would love to expand this beyond AArch64 and support older Armv7 and maybe Armv6 based targets as well in the near future.

So a bigger Arm64 machine that we can also emulate older architectures on seems necessary.

Describe the continuous integration (CI) system in use or desired for this project.

I'm planning on hosting a self-hosted runner for Github Actions on the provided hardware.

Please state your contributions to the open source community and any other relevant initiatives

I'm active as a core member of the Crystal project for many years now and consistently active in discussions and community support channels throughout, along the occassional code contributions and code reviews to the compiler project itself, I maintain and run the online code evaluation service9, 10 and bindings for GObject based libraries11 among other smaller efforts.

@RX14
Copy link

RX14 commented Jun 9, 2020

To clarify the technical details: we need about 8GB of ram per pipeline worker. One would be great, but being able to run 2 or more parallel jobs on one machine would be wonderful. Singlethread performance is quite important.

@vielmetti
Copy link
Collaborator

We should be good to go with this one - got the 👍 from the relevant folks today.

I'm marking this as "approved", and will follow through in the next couple of days with access info.

@jhass
Copy link
Author

jhass commented Jun 16, 2020

Great news, thank you! :)

@jhass
Copy link
Author

jhass commented Jun 18, 2020

First CI builds on the provided hardware passed 🎉 crystal-lang/crystal#9508

@jacobsmith928
Copy link
Collaborator

jacobsmith928 commented Jun 18, 2020 via email

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

No branches or pull requests

4 participants