The Rubinius bytecode virtual machine is written in C++, incorporating
LLVM to compile bytecode to machine code at runtime. The bytecode
compiler and vast majority of the core classes are written in pure Ruby.
To interact with the rest of the system, the VM provides primitives
which can be attached to methods and invoked. Additionally, FFI provides
a direct call path to most C functions.
Rubinius uses a precise, compacting, generational garbage collector. It
includes a compatible C-API for C extensions written for the standard
Ruby interpreter (often referred to as MRI.Matz's Ruby Implementation).
OK landry@, sthen@
* No longer remove ruby-* from PKGNAME when building FULLPKGNAME for
the gem and extconf ports
* Correctly remove ruby18 FLAVOR
* Use extract/build/install cookies
* Fix installing of certain gems as root without systrace, by working
around a bug in devel/ruby-gems
* Remove MODRUBY_REV from SUBST_VARS
OK landry@
ruby 1.8, ruby 1.9, and jruby.
One major change for all ports is that RDoc documentation is no longer
going to be installed by default for gem ports. For ruby 1.8, it used
a separate documentation file per method, and the file names created
weren't consistent across ruby versions (1.8.6 differed from 1.8.7,
and 1.8.7 differs from 1.9.2 and jruby). It made reviewing diffs very
painful, and since most ruby developers do not use the documentation
(preferring web documentation), it doesn't make sense to include them.
For most gem ports, a ruby 1.9 version can be built by using
the ruby19 FLAVOR, and a jruby version can be build using the jruby
FLAVOR. These flavors modify the FULLPKGNAME to use either the
ruby19- or jruby- package stem, so you don't need to worry about
the ruby 1.8 package conflicting.
In most cases, you no longer need the PKGNAME set in the port
Makefile, as the FULLPKGNAME handling will take care of that for you.
Also, for pure ruby gems (without C extensions), PKG_ARCH = * is added
automatically.
Changes to all dependent ports will be committed shortly. For new
ruby ports, you need to make sure that gem dependencies are specified
like this (assuming they depend on the hoe gem):
:${MODRUBY_PKG_PREFIX}-hoe-*:devel/ruby-hoe,${FLAVOR}
MODRUBY_PKG_PREFIX will be ruby for ruby 1.8 ports, ruby19 for ruby
1.9 ports, and jruby for jruby ports. The ,${FLAVOR} part at the end
makes sure that dependencies use the same version of ruby that
the current port uses.
PLISTs are going to become a lot smaller with this. However, any
binaries installed by the gem need to have a special string added.
For example, the minitar binary installed by
archivers/ruby-archive-tar-minitar looks like this in the PLIST:
${GEM_BIN}/minitar${GEM_BIN_SUFFIX}
The ${GEM_BIN_SUFFIX} needs to be added manually so the package
works on ruby 1.9, which installs the binaries with a 19 suffix.
GEM_SKIPDEPENDS has been removed and related support will be removed
from devel/ruby-gems. To modify dependencies inside the gem, the gem
metadata is placed under WRKDIST and can be modified with the standard
patching procedure.
OK landry@
hs-glib (and probably other stuff that uses the Cabal library).
Bump both -main and -doc (yes, really, -doc, too).
I hereby nominate myself for the HSMAUS (Homer Simpson Memorial
Award of Unlimited Stupidity).
libraries not coming together with ghc. This allows for looking up
a library's PKGPATH by running
ghc-pkg field $pkgname pkgpath
where $pkgname is the GHC library name without the `hs-' prefix,
for example `ghc-paths'.
looks good to jasper@
cabal and without nort), to avoid collisions with other (non-Haskell)
ports;
- Documentation is installed as ${PREFIX}/share/doc/hs-$foo instead of
${PREFIX}/share/doc/$foo.
- The library itself (and its interface files) is installed as
${PREFIX}/lib/ghc/$foo instead of ${PREFIX}/lib/$foo.
- Additional files will be installed in ${PREFIX}/share/hs-$foo instead
of ${PREFIX}/share/foo.
from kili@
depending port's plists will be adjusted in a few
performance increases and ruby 1.8.7 support. ffi support now works in
simple cases. It now works on amd64 as well. I'm taking over
maintenance from bernd@.
ok landry
Also, if CONFIGURE_STYLE includes ext or extconf, update WANTLIB
and LIB_DEPENDS, and set SHARED_ONLY=Yes. That configure style
is only used for ruby C extensions, which need those settings.
This cleans up a lot of ruby C extension ports, which will be
committed shortly.
ok landry, phessler, sthen