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

Add Perl6 support #2978

Closed
ugexe opened this Issue Nov 21, 2014 · 12 comments

Comments

Projects
None yet
5 participants
@ugexe
Member

ugexe commented Nov 21, 2014

I'd like to volunteer to help with getting Perl6 added as a language supported by travis. Before going any further i'd like to make it clear that Perl6 is a completely different language from Perl5 with a almost completely different community. I bring this up because I don't think reallocating Perl5 resources for this is fair to the Perl5 community (i.e. dropping an older version of Perl5 due to adding Perl6).

I understand the build time may be a concern. For Perl5 you are building 10 images, but Perl6 would only require 3 to 6 (for now): 3x the latest release (usually a monthly release) and 3x the latest build from source (daily/monthly) (The 3x references the 3 backends that Perl6 can currently be built on: MoarVM, JVM, and Parrot).

Build times for Perl6 on travis-ci:

MoarVM: 7 minutes
JVM: 44 minutes
Parrot: 30 minutes

These times were calculated from the following empty (with the Perl6 installation bits highlighted):
https://github.com/ugexe/P6TCI/blob/master/.travis.yml#L18-L22
which uses rakudobrew (like a basic version of the perlbrew you use for Perl5 builds) to build/install the perl6 compiler.

MoarVM is the main VM tested against, is the fastest to build, and is what rakudo (a perl6 compiler) travis tests against:
https://github.com/rakudo/rakudo/blob/nom/.travis.yml
which does not use rakudobrew and installs rakudo directly.

The JVM and Parrot, while super slow to build, would be nice to have in addition to MoarVM for discovering implementation differences/limits between the VMs. This is especially true for module authors who may not have the private resources available to test against all 3 VMs (like the Rakudo developers).

Its worth noting that Perl6/Rakudo requires Perl5 to be installed. A single build of any somewhat modern version should suffice, including a binary.

@BanzaiMan

This comment has been minimized.

Show comment
Hide comment
@BanzaiMan

BanzaiMan Dec 26, 2014

Member

If you can find a few other volunteers for interested in Perl 6, you can try community support for Perl 6. See http://blog.travis-ci.com/2014-12-10-community-driven-language-support-comes-to-travis-ci/ for pointers.

Member

BanzaiMan commented Dec 26, 2014

If you can find a few other volunteers for interested in Perl 6, you can try community support for Perl 6. See http://blog.travis-ci.com/2014-12-10-community-driven-language-support-comes-to-travis-ci/ for pointers.

@szabgab

This comment has been minimized.

Show comment
Hide comment
@szabgab

szabgab Jan 1, 2015

I have created a temporary solution which is described here: http://perl6maven.com/continuous-integration-for-perl6-modules-using-travis-ci
It currently only supports MoarVM.

szabgab commented Jan 1, 2015

I have created a temporary solution which is described here: http://perl6maven.com/continuous-integration-for-perl6-modules-using-travis-ci
It currently only supports MoarVM.

paultcochrane added a commit to paultcochrane/travis-build that referenced this issue Mar 28, 2015

Add Perl6 build support
This attempts to address issue
travis-ci/travis-ci#2978, however the build
process is *very* slow, such that even though it works, it is basically
unusable.  This change is intended generate feedback/discussion about the
build script code so as to improve it before finally closing issue
travis-ci/travis-ci#2978.
@paultcochrane

This comment has been minimized.

Show comment
Hide comment
@paultcochrane

paultcochrane Mar 28, 2015

I've made a Rakudo-MoarVM-based solution as a travis-build script in travis-ci/travis-build#415. It builds basically everything from scratch and thus takes a very long time for a perl6 binary to be available. It is thus intended more for discussion about the build scripts and their structure than the actual building of Rakudo/Perl6. As soon as .debs are available, the perl6 installation step will run much faster and one could use the build scripts to build and test Perl6 programs. Comments about the PR most certainly welcome.

paultcochrane commented Mar 28, 2015

I've made a Rakudo-MoarVM-based solution as a travis-build script in travis-ci/travis-build#415. It builds basically everything from scratch and thus takes a very long time for a perl6 binary to be available. It is thus intended more for discussion about the build scripts and their structure than the actual building of Rakudo/Perl6. As soon as .debs are available, the perl6 installation step will run much faster and one could use the build scripts to build and test Perl6 programs. Comments about the PR most certainly welcome.

@ugexe

This comment has been minimized.

Show comment
Hide comment
@ugexe

ugexe Mar 28, 2015

Member

How slow is it? The process I use in P6TCI takes like 5 minutes to build
moar perl6 and test a module on Travis. The JVM however takes nearly 45
minutes.

On Saturday, March 28, 2015, Paul Cochrane notifications@github.com wrote:

I've made a Rakudo-MoarVM-based solution as a travis-build script in
travis-ci/travis-build#415
travis-ci/travis-build#415. It builds basically
everything from scratch and thus takes a very long time for a perl6
binary to be available. It is thus intended more for discussion about the
build scripts and their structure than the actual building of Rakudo/Perl6.
As soon as .debs are available, the perl6 installation step will run much
faster and one could use the build scripts to build and test Perl6
programs. Comments about the PR most certainly welcome.


Reply to this email directly or view it on GitHub
#2978 (comment)
.

Member

ugexe commented Mar 28, 2015

How slow is it? The process I use in P6TCI takes like 5 minutes to build
moar perl6 and test a module on Travis. The JVM however takes nearly 45
minutes.

On Saturday, March 28, 2015, Paul Cochrane notifications@github.com wrote:

I've made a Rakudo-MoarVM-based solution as a travis-build script in
travis-ci/travis-build#415
travis-ci/travis-build#415. It builds basically
everything from scratch and thus takes a very long time for a perl6
binary to be available. It is thus intended more for discussion about the
build scripts and their structure than the actual building of Rakudo/Perl6.
As soon as .debs are available, the perl6 installation step will run much
faster and one could use the build scripts to build and test Perl6
programs. Comments about the PR most certainly welcome.


Reply to this email directly or view it on GitHub
#2978 (comment)
.

@ugexe

This comment has been minimized.

Show comment
Hide comment
@ugexe

ugexe Mar 28, 2015

Member

You may also want to add Perl5 as a parent class, as its required by Perl6. See: https://github.com/ugexe/Perl6-on-Travis/blob/master/perl6.rb

Member

ugexe commented Mar 28, 2015

You may also want to add Perl5 as a parent class, as its required by Perl6. See: https://github.com/ugexe/Perl6-on-Travis/blob/master/perl6.rb

@paultcochrane

This comment has been minimized.

Show comment
Hide comment
@paultcochrane

paultcochrane Mar 28, 2015

I've been building and testing things on my box using the instructions from travis-build. The config looks like this:

Host system: 4 Core Intel(R) Core(TM) i5-3360M CPU @ 2.80GHz, Debian Jessie
Guest system: Vagrant virtual machine, Ubuntu 12.04 LTS
Perl6: Rakudo and NQP on MoarVM

Runtime to build Rakudo and test a very small Perl6 module: 90 minutes. :-/

What takes most of the time are the parse steps when optimising Rakudo. This seems to do a lot of IO and thus chews up most of the time. My guess is that this won't be such a big problem on the TCI infrastructure, but I haven't timed things there yet.

Thanks for the tip about using Perl5 as a parent class. I hadn't seen your Perl-on-Travis stuff as it wasn't mentioned in the initial comment in this issue. It's probably much better to use rakudobrew to run the build process. My plan would be to have Debian packages built (possibly as an addendum to a Rakudo release) and then one can simply install the .debs and then perl6 is available much quicker. Also, one could make multiple Rakudo versions available, which could come in handy, not only for devs of Perl6 modules but also maintainers of the Perl6 module ecosystem.

paultcochrane commented Mar 28, 2015

I've been building and testing things on my box using the instructions from travis-build. The config looks like this:

Host system: 4 Core Intel(R) Core(TM) i5-3360M CPU @ 2.80GHz, Debian Jessie
Guest system: Vagrant virtual machine, Ubuntu 12.04 LTS
Perl6: Rakudo and NQP on MoarVM

Runtime to build Rakudo and test a very small Perl6 module: 90 minutes. :-/

What takes most of the time are the parse steps when optimising Rakudo. This seems to do a lot of IO and thus chews up most of the time. My guess is that this won't be such a big problem on the TCI infrastructure, but I haven't timed things there yet.

Thanks for the tip about using Perl5 as a parent class. I hadn't seen your Perl-on-Travis stuff as it wasn't mentioned in the initial comment in this issue. It's probably much better to use rakudobrew to run the build process. My plan would be to have Debian packages built (possibly as an addendum to a Rakudo release) and then one can simply install the .debs and then perl6 is available much quicker. Also, one could make multiple Rakudo versions available, which could come in handy, not only for devs of Perl6 modules but also maintainers of the Perl6 module ecosystem.

@Tux

This comment has been minimized.

Show comment
Hide comment
@Tux

Tux Apr 16, 2015

Tux/CSV also runs on perl6
The "problem" is that we all need to rebuild perl6 from scratch.
If enough people test their new modules with perl6, that is a huge waste of resources.
What I'd like to see is a perl6 we perl6-developers can agree on to be present, or better even: two versions

  1. Rakudo-star (the most recent star release)
  2. The daily build (less than 24 hours old on any point in time: build once a day on a time that suits Travis)

My .travis.yml works fine, but I hate to see the resource for this valuable service wasted

Tux commented Apr 16, 2015

Tux/CSV also runs on perl6
The "problem" is that we all need to rebuild perl6 from scratch.
If enough people test their new modules with perl6, that is a huge waste of resources.
What I'd like to see is a perl6 we perl6-developers can agree on to be present, or better even: two versions

  1. Rakudo-star (the most recent star release)
  2. The daily build (less than 24 hours old on any point in time: build once a day on a time that suits Travis)

My .travis.yml works fine, but I hate to see the resource for this valuable service wasted

@ugexe

This comment has been minimized.

Show comment
Hide comment
@ugexe

ugexe Apr 16, 2015

Member

I agree a 24 hour build would be good. Or even caching the latest build from whomever ends up building it the first time. But I wouldn't call it wasting resources.

Perl 5 already has travis-perl/helpers for building all the various perl versions etc that aren't available by default, and while they aren't technically new version builds multiple times per day, they do get built from source each time. Personally I would want the ability to build custom versions with whatever flags and build options I want, just like with the perl5 travis helpers (which travis-ci doesn't appear to have a problem with)

Member

ugexe commented Apr 16, 2015

I agree a 24 hour build would be good. Or even caching the latest build from whomever ends up building it the first time. But I wouldn't call it wasting resources.

Perl 5 already has travis-perl/helpers for building all the various perl versions etc that aren't available by default, and while they aren't technically new version builds multiple times per day, they do get built from source each time. Personally I would want the ability to build custom versions with whatever flags and build options I want, just like with the perl5 travis helpers (which travis-ci doesn't appear to have a problem with)

@paultcochrane

This comment has been minimized.

Show comment
Hide comment
@paultcochrane

paultcochrane Apr 16, 2015

One idea could be to have Rakudo* releases built (e.g. based on MoarVM/nqp/Rakudo for starters, JVM/nqp/Rakudo can come later), such as perl6-2015.03, perl6-2015.04 etc. as well as a "latest" build, for those who want to live on the edge, say perl6-latest. Exactly how this would be specified in the .travis.yml is not yet known. Nevertheless, this could be a good starting point. Opinions?

paultcochrane commented Apr 16, 2015

One idea could be to have Rakudo* releases built (e.g. based on MoarVM/nqp/Rakudo for starters, JVM/nqp/Rakudo can come later), such as perl6-2015.03, perl6-2015.04 etc. as well as a "latest" build, for those who want to live on the edge, say perl6-latest. Exactly how this would be specified in the .travis.yml is not yet known. Nevertheless, this could be a good starting point. Opinions?

@Tux

This comment has been minimized.

Show comment
Hide comment
@Tux

Tux Apr 16, 2015

Sounds like a fine start

Tux commented Apr 16, 2015

Sounds like a fine start

@paultcochrane

This comment has been minimized.

Show comment
Hide comment
@paultcochrane

paultcochrane Apr 16, 2015

A possible .travis.yml

language: perl6

perl6:
    - "rakudo*-m-2015.03"   # Rakudo* built on MoarVM version 2015.03
    - "rakudo*-m-2015.04"   # Rakudo* built on MoarVM version 2015.04
    - "rakudo*-j-2015.03"   # Rakudo* built on JVM version 2015.03
    - "rakduo-m-latest"     # vanilla Rakudo built on MoarVM with latest commit(?)
                            # or maybe just the version as at 00:00 UTC?
    - "rakudo-j-latest"     # the same, but on top of the JVM

install:
    - panda install Text::CSV

script:
    - make test             # default option

paultcochrane commented Apr 16, 2015

A possible .travis.yml

language: perl6

perl6:
    - "rakudo*-m-2015.03"   # Rakudo* built on MoarVM version 2015.03
    - "rakudo*-m-2015.04"   # Rakudo* built on MoarVM version 2015.04
    - "rakudo*-j-2015.03"   # Rakudo* built on JVM version 2015.03
    - "rakduo-m-latest"     # vanilla Rakudo built on MoarVM with latest commit(?)
                            # or maybe just the version as at 00:00 UTC?
    - "rakudo-j-latest"     # the same, but on top of the JVM

install:
    - panda install Text::CSV

script:
    - make test             # default option
@BanzaiMan

This comment has been minimized.

Show comment
Hide comment
@BanzaiMan

BanzaiMan Jul 2, 2015

Member

Perl 6 is live as a community-supported language.

Thanks, everyone!

Member

BanzaiMan commented Jul 2, 2015

Perl 6 is live as a community-supported language.

Thanks, everyone!

@BanzaiMan BanzaiMan closed this Jul 2, 2015

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment