Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: jruby/jruby
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 9ad4bf1ffe82^
Choose a base ref
...
head repository: jruby/jruby
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 6f89fe846b63
Choose a head ref

Commits on Mar 3, 2014

  1. Copy the full SHA
    dfdb22a View commit details

Commits on Mar 8, 2014

  1. Copy the full SHA
    199164d View commit details
  2. Copy the full SHA
    5db5223 View commit details
  3. Copy the full SHA
    50efa49 View commit details
  4. Start wiring Converter up to new transcoder.

    * convpath logics implemented properly now.
    * Most other methods still to be converted.
    headius committed Mar 8, 2014
    Copy the full SHA
    d264bb0 View commit details
  5. Copy the full SHA
    0cf9733 View commit details
  6. Copy the full SHA
    99e97bf View commit details
  7. Implement String#scrub (issues remain in jcodings).

    * From my impl (modified) at rubinius/rubinius#2912
    * Fails due to ArrayStoreException in jcodings
    headius committed Mar 8, 2014
    Copy the full SHA
    29d8a05 View commit details

Commits on Mar 10, 2014

  1. Copy the full SHA
    e28711f View commit details
  2. Copy the full SHA
    9f3afe6 View commit details
  3. Copy the full SHA
    95f666d View commit details
  4. Copy the full SHA
    30bf1da View commit details
  5. Copy the full SHA
    16379a1 View commit details

Commits on Mar 11, 2014

  1. Copy the full SHA
    b041a5a View commit details
  2. Copy the full SHA
    b391ed9 View commit details
  3. Copy the full SHA
    3df3bb6 View commit details
  4. Many more fixes and removed excludes for new transcoder.

    * Moved ECONV flags to use those from jcodings
    * Many port fixes and tweaks.
    
    Nearly there!
    headius committed Mar 11, 2014
    Copy the full SHA
    cd23ab1 View commit details
  5. Copy the full SHA
    4ea0f62 View commit details
  6. Copy the full SHA
    4e8430d View commit details
  7. Copy the full SHA
    2962d7b View commit details

Commits on Mar 12, 2014

  1. Copy the full SHA
    a0d619b View commit details
  2. Copy the full SHA
    eaa3e2c View commit details
  3. Copy the full SHA
    8c5933c View commit details
  4. Copy the full SHA
    5819f73 View commit details
  5. Copy the full SHA
    26d91e4 View commit details
  6. Encoding::Converter#equals

    headius committed Mar 12, 2014
    Copy the full SHA
    ee20c41 View commit details

Commits on Mar 13, 2014

  1. Copy the full SHA
    2097ce5 View commit details
  2. Copy the full SHA
    18c9c61 View commit details
  3. Copy the full SHA
    a8f6768 View commit details
  4. Copy the full SHA
    59e300f View commit details
  5. Copy the full SHA
    439bf88 View commit details
  6. Boop.

    headius committed Mar 13, 2014
    Copy the full SHA
    b6df910 View commit details
  7. Copy the full SHA
    6f4f18a View commit details
  8. Updates from jcodings.

    headius committed Mar 13, 2014
    Copy the full SHA
    ef95230 View commit details
  9. Copy the full SHA
    e3db9a8 View commit details
  10. Copy the full SHA
    4339947 View commit details
  11. Copy the full SHA
    98307a2 View commit details
  12. Clean up unused import.

    headius committed Mar 13, 2014
    Copy the full SHA
    4712789 View commit details
  13. Copy the full SHA
    9c9187c View commit details
  14. Copy the full SHA
    fb5d1b0 View commit details

Commits on Mar 17, 2014

  1. [Truffle] - A class definition raises TypeError if any constant quali…

    …fying the class is not a Module.
    lucasallan authored and headius committed Mar 17, 2014
    Copy the full SHA
    025917a View commit details
  2. Too much entropy on my branch for now.

    Revert "Update tests from MRI 2.1 branch."
    
    This reverts commit 9c9187c.
    headius committed Mar 17, 2014
    Copy the full SHA
    460f0ce View commit details
  3. More port-fixing for regsub and other stuff.

    * More exact port of rb_reg_regsub
    * Reverted fix to ASCGET logic that breaks a test; unknown reason
    * Expanded strBufCat and related methods to take byte[].
    headius committed Mar 17, 2014
    Copy the full SHA
    c2336e5 View commit details
  4. Copy the full SHA
    f10be8c View commit details
  5. Copy the full SHA
    14aad20 View commit details
  6. Copy the full SHA
    75887be View commit details

Commits on May 1, 2014

  1. Optimize key-based Hash access for empty hashes

    This avoids performing the potentially expensive hash computation in
    the event that the Hash is empty, as there cannot possibly be a match.
    grddev committed May 1, 2014
    Copy the full SHA
    ad4521e View commit details
  2. Conform to MRI behaviour for empty hashes

    In the event that the `#hash` method has side effects, any optimisation
    with respect to empty hashes will affect the results of the operations.
    
    For MRI, the empty-hash optimisation seems to be applied everywhere in
    2.0.0 and beyond. In 1.9.3 the #hash method is not called for #[] and
    #key?, but strangely enough the performance is not improved for empty
    hashes. In 1.8.7, the #hash method is always called even if empty.
    
    This does not match the semantics of MRI exactly, as this avoids calling
    the #hash method from #values_at in 1.9.3, but that would be slightly
    more involved to implement.
    grddev committed May 1, 2014
    Copy the full SHA
    68d4185 View commit details

Commits on May 8, 2014

  1. Merge branch 'master' into new_transcoder

    Conflicts:
    	core/pom.xml
    	core/src/main/java/org/jruby/RubyFile.java
    	core/src/main/java/org/jruby/util/TypeConverter.java
    headius committed May 8, 2014
    Copy the full SHA
    706b453 View commit details

Commits on May 9, 2014

  1. Implement IO#gets all the way down to actual IO operations.

    This logic forced me to implement all the MRI functions for doing
    buffered, possibly-transcoded reads from a stream. I also had to
    implement some of the write logic.
    
    As other IO methods all out, we should start to move away from our
    flawed ChannelStream abstraction and toward the MRI way. Later,
    we can look at doing a better abstraction of the MRI way.
    
    What's wrong with ChannelStream, you ask? Nothing, provided all
    you want to do is POSIX-like FILE* IO. MRI stopped using FILE*'s
    style buffering at some point -- probably when adding character
    transcoding -- and as a result we started mixing encoding logic
    into ChannelStream. This caused the code to become rather confused
    and no longer useful as a bare FILE* mechanism...while also
    preventing us from implementing IO+transcoding as efficiently as
    MRI (which does unbuffered reads into its own buffers and
    transcodes in place).
    headius committed May 9, 2014
    Copy the full SHA
    238a5e1 View commit details
Showing 8,316 changed files with 72,949 additions and 342,974 deletions.
The diff you're trying to view is too large. We only load the first 3000 changed files.
13 changes: 12 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -14,11 +14,17 @@ build.eclipse
build.properties
target
dist
ext/*/pom-*.gemspec.xml
lib/jruby*.jar
lib/native
lib/jni
lib/ruby/gems
lib/ruby/shared/rubygems/defaults/jruby_native.rb
lib/ruby/shared/krypt*
lib/ruby/shared/jopenssl*
lib/ruby/shared/org/
lib/ruby/shared/openssl
lib/ruby/shared/jar*
nbproject/private
share
latest_source_cache
@@ -61,7 +67,7 @@ lib/ruby/shared/bcpkix-jdk15on-*.jar
lib/ruby/shared/bcprov-jdk15on-*.jar
lib/ruby/shared/*jopenssl*.jar
lib/ruby/shared/readline/*readline*.jar
lib/ruby/shared/readline/jline*.jar
lib/ruby/shared/jline
lib/ruby/shared/ripper.jar
core/src/main/java/org/jruby/runtime/Constants.java
dependency-reduced-pom.xml
@@ -72,6 +78,11 @@ dependency-reduced-pom.xml
!lib/ruby/gems/shared/gems/rdoc-4.0.1/bin/ri
install/updates.xml

# generated ITs
maven/jruby/src/it/osgi_*
maven/jruby/src/it/j2ee_wlp
maven/jruby-complete/src/it/osgi*

# IntelliJ project files
.idea
*.iml
35 changes: 24 additions & 11 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,39 +1,54 @@
language: java
before_script:
- unset GEM_PATH GEM_HOME IRBRC
- unset GEM_PATH GEM_HOME IRBRC JRUBY_OPTS
- "export PATH=`pwd`/bin:$PATH"
- "export JAVA_OPTS='-XX:+TieredCompilation -XX:TieredStopAtLevel=1'"

jdk:
- oraclejdk7
- openjdk7
- oraclejdk8

os:
- linux
- osx

env:
# disable cext
global:
- JAVA_OPTS="-XX:+TieredCompilation -XX:TieredStopAtLevel=1 -Djruby.cext.enabled=false"
matrix:
- TARGET='-Ptest'
- TARGET='-Prake -Dtask=test:extended'
- TARGET='-Prake -Dtask=test:rubicon'
- TARGET='-Prake -Dtask=test:jruby'
- TARGET='-Prake -Dtask=test:mri'
- TARGET='-Prake -Dtask=test:slow_suites'
- TARGET='-Prake -Dtask=test:tracing'
- TARGET='-Prake -Dtask=spec:ji'
- TARGET='-Prake -Dtask=spec:compiler'
- TARGET='-Prake -Dtask=spec:ffi'
- TARGET='-Prake -Dtask=spec:regression'
- TARGET='-Prake -Dtask=spec:ci_interpreted_travis'
- TARGET='-Prake -Dtask=spec:ci_interpreted_ir_travis'
- TARGET='-Prake -Dtask=spec:ir'
- TARGET='-Ptruffle'
- TARGET='-Ptruffle-specs-language'
- TARGET='-Ptruffle-specs-core'

matrix:
include:
# these profile do no need to run for all JDKs
- env: TARGET='-Pdist'
jdk: oraclejdk8
- env: TARGET='-Pjruby-jars'
jdk: oraclejdk7
jdk: openjdk7
- env: TARGET='-Pmain'
jdk: oraclejdk7
- env: TARGET='-Pcomplete'
jdk: oraclejdk8
- env: TARGET='-Posgi'
jdk: openjdk7
- env: TARGET='-Pj2ee'
jdk: oraclejdk7
fast_finish: true
allow_failures:
- env: TARGET='-Prake -Dtask=spec:ci_interpreted_ir_travis'
- env: TARGET='-Prake -Dtask=spec:compiler'

branches:
only:
@@ -44,9 +59,7 @@ branches:
before_install:
- if [[ $TRAVIS_JDK_VERSION = 'oraclejdk8' ]]; then sudo apt-get update; sudo apt-get install oracle-java8-installer; else true; fi

# the install stores the artifact in the localrepo for
# the second maven run with $TARGET
script: ( mvn install -Pbootstrap | grep -v Down ) && mvn -Dinvoker.skip=false $TARGET
script: travis_retry mvn install $TARGET -Dinvoker.skip=false | egrep -v 'Download|\\[exec\\] [[:digit:]]+/[[:digit:]]+|^[[:space:]]*\\[exec\\][[:space:]]*$' ; [ ${PIPESTATUS[0]} == 0 ]
install: /bin/true
notifications:
irc:
109 changes: 96 additions & 13 deletions BUILDING.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
Building JRuby from Source
==========================

NOTE: needs maven-3.x
Prerequisites:

* A Java 7-compatible (or higher) Java development kit (JDK)
* Maven 3+

JRuby uses Maven for building and bootstrapping itself, along with Rake,
RSpec, and MSpec for running integration tests.
@@ -110,17 +113,37 @@ After changing Java code, you can recompile quickly by running:
mvn
```

If you only want to build JRuby core (everything that goes in jruby.jar), you can use
the following command:

```
mvn -pl core
```

This is generally the quickest way to build when you are just modifying JRuby core
classes.

### Day to Day Testing

For normal day-to-day testing, we recommend running the Ruby (MRI) tests
via the following rake command:

```
rake test:mri
bin/jruby -S rake test:mri
```

This is a reasonably good suite that does not take too long to run. For
more complete assurance, you can also run 1.9 RubySpecs via the
This suite takes a while to complete, so if you want to run an individual file
from MRI's tests (under test/mri), use one of the following commands:

```
# Run a specific test method in a specific file
jruby <test file> -n <specific test method>
# Run a test file with known-failing tests excluded
EXCLUDE_DIR=test/mri/excludes jruby -r minitest/excludes <test file>
```

For more complete assurance, you can also run 1.9 RubySpecs via the
following command:

```
@@ -134,6 +157,15 @@ or embedding APIs, you should run JRuby's Java-based unit tests via
mvn -Ptest
```

On travis the following tests will run

```
mvn -Ptest
mvn -Prake -Dtask=test:extended
mvn -Prake -Dtask=spec:ci\_interpreted\_travis
mvn -Ptruffle
```

There are some maven integration tests (i.e. consistency test if all gems are included, osgi test, etc) for the various distributions of JRuby which can be invoked with

```
@@ -156,6 +188,35 @@ The complete CI test suite will take anywhere from 20 to 45 minutes to
complete, but provides the most accurate indication of the stability of
your local JRuby source.

### maven integration tests - -Pjruby-complete or -Pmain

maven integration test will use the packed maven artifact to run the tests in a forked maven instance. these maven projects are locatated in

```
maven/jruby/src/it
maven/jruby-complete/src/it
maven/jruby-jars/src/it
maven/jruby-dist/src/it
```

to trigger the tests with the build:

```
mvn -Pmain -Dinvoker.skip=false
mvn -Pcomplete -Dinvoker.skip=false
mvn -Pdist -Dinvoker.skip=false
mvn -Pjruby-jars -Dinvoker.skip=false
```

to pick a particular test add the name of the directory inside the respective *src/it* folder, like (wildcards are possible):


```
mvn -Pmain -Dinvoker.skip=false -Dinvoker.test=integrity
mvn -Pmain -Dinvoker.skip=false -Dinvoker.test=j2ee*
mvn -Pmain -Dinvoker.skip=false -Dinvoker.test=osgi*
```

Clean Build
-----------

@@ -173,6 +234,12 @@ that everything is rebuilt properly.

NOTE: ```mvn clean``` just cleans the **jruby-core** artifact and the **./lib/jruby.jar** !

clean everything:

```
mvn -Pclean
```

Distribution Packages
---------------------

@@ -206,7 +273,7 @@ and those files will be installed in you maven local-repository ready to use wit
mvn -Pjruby-jars
```

the gem will be in ./maven/jruby-jars/target
the gem will be in ./maven/jruby-jars/pkg

### building ALL packages ###

@@ -219,15 +286,19 @@ mvn -Pall
this will also clean the **ext** directories, i.e. a new build will then use the latest code from there for **lib/ruby**

```
mvn -Pclean
jruby -S rmvn -Pclean
```

## release ##

first set the new version (on jruby-1_7 branch):
first set the new version in the file *VERSION* inside the root directory and then

```
mvn versions:set -DnewVersion=1.7.5 -Pall
rake maven:dump_poms
```
or
```
rmvn validate -Pall
```

on master you need to run
@@ -236,7 +307,7 @@ rake maven:set_version
```

manually rollback the poms in ./ext/ if their main versions have been changed
and then commit and tag averything respectively. Now deploy the maven
and then commit and tag everything respectively. Now deploy the maven
artifact to sonatype oss.

```
@@ -245,21 +316,33 @@ mvn clean deploy -Psonatype-oss-release -Prelease

go to oss.sonatype.org and close the deployment which will check if all 'required' files are in place and then finally push the release to maven central and . . .

# hacking the build system #
hacking the build system
------------------------

the build system uses the **ruby-maven** gem and with this the build files are **pom.rb** and **Mavenfile**. the **Mavenfile** are used whenever the module produces a gem and uses the gemspec file for the gem for setting up the POM. otherwise **pom.rb** are used. so any change in the build-system is done in those files !!!!

instead of ```mvn``` the ```rmvn``` command is used. this command will also geneate **pom.xml** files which can be used by regular maven.
instead of ```mvn``` the ```rmvn``` command is used. this command will also generate **pom.xml** files which can be used by regular maven.

to (re)generate all pom.xml use
```
rake maven:dump_poms
```
(which is basically ```rmvn validate -Pall```)

about the ruby DSL for those poms just look in the existing pom.rb/Mavenfile files - there are plenty of examples for all kind of situations. (more documention to come).
about the ruby DSL for those poms just look in the existing pom.rb/Mavenfile files - there are plenty of examples for all kind of situations. (more documentation to come).

regular maven uses the the jruby from the installion, i.e. 9000.dev. this also means that a regular maven run does not depend under the hood on any other jruby versions from maven central.
regular maven uses the the jruby from the installation, i.e. 9000.dev. this also means that a regular maven run does not depend under the hood on any other jruby versions from maven central.

at some parts there are **inline** plugins in **pom.rb** or **Mavenfile** which will work directly with regular maven where there is a special plugin running those ruby parts. see **./lib/pom.rb**.

### Start a new version

After the release set the new development version in *VERSION* and generate the pom.xml files

```
rake maven:dump_poms
```
or
```
rmvn validate -Pall
```
8 changes: 8 additions & 0 deletions COPYING
Original file line number Diff line number Diff line change
@@ -105,6 +105,14 @@ lib/ruby/1.9, and lib/ruby/site_ruby/1.8/rubygems*.
The "yecht" library is Copyright (c) 2009-2011 Ola Bini, and released
under the MIT license.

The Rubinius API implementation in core/src/main/ruby/jruby/truffle/core/rubinius/api
and core/src/main/java/org/jruby/truffle/runtime/rubinius is copyright (c) 2011,
Evan Phoenix, and released under the 3-clause BSD license.

The Rubinius core library implementation in core/src/main/ruby/jruby/truffle/core/rubinius/kernel
is copyright (c) 2007-2014, Evan Phoenix and contributors, and released under
the 3-clause BSD license.

The complete text of the Eclipse Public License is as follows:

Eclipse Public License - v 1.0
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -46,7 +46,7 @@ See [BUILDING](BUILDING.md) for more information.

## Testing

See [README.test](docs/README.test.md) for more information.
See [BUILDING: Developing and Testing](BUILDING.md#developing-and-testing) for more information.

## More Information

1 change: 0 additions & 1 deletion bench/truffle/.gitignore

This file was deleted.

Loading