On Tue, Dec 25 2018, Jeremy Evans <jer...@openbsd.org> wrote:
> Ruby 2.6.0 was released today.  Release announcement is at
> https://www.ruby-lang.org/en/news/2018/12/25/ruby-2-6-0-released/
>
> Some highlights:
>
> * Significant performance improvements
> * JIT Compiler

A bit scary at first, but it looks like the approach is reasonably
portable: dump C code to disk, compile it, and load the resulting
object.

> * Endless Ranges
> * Function Composition Operators for Procs
> * One-shot coverage
> * Bundler now included
>
> Tested on amd64, for about 9 months starting with the first preview
> release. OK to import?

You could import it but, as is, it's not ready to be hooked up.  It
doesn't build using base-gcc (on sparc64, but you can test on amd64).
You need to either force C99 support, or use the diff below.

make test on sparc64:

  Finished tests in 7349.921578s, 2.7481 tests/s, 310.4749 assertions/s.
  20198 tests, 2281966 assertions, 65 failures, 18 errors, 113 skips

Lots of errors due to missing symbol '__guard_local' in the JIT tests.
Thoughts?

Attachment: ruby26-test-sparc64.log.gz
Description: Binary data

patches/patch-addr2line_c
--8<--
$OpenBSD$

Index: addr2line.c
--- addr2line.c.orig
+++ addr2line.c
@@ -1207,7 +1207,8 @@ di_find_abbrev(DebugInfoReader *reader, uint64_t abbre
         uint64_t form = uleb128(&p);
         if (!at && !form) break;
     }
-    for (uint64_t n = uleb128(&p); abbrev_number != n; n = uleb128(&p)) {
+    uint64_t n;
+    for (n = uleb128(&p); abbrev_number != n; n = uleb128(&p)) {
         if (n == 0) {
             fprintf(stderr,"%d: Abbrev Number %"PRId64" not found\n",__LINE__, 
abbrev_number);
             exit(1);
@@ -1555,7 +1556,8 @@ debug_info_read(DebugInfoReader *reader, int num_trace
         }
         /* ranges_inspect(reader, &ranges); */
         /* fprintf(stderr,"%d:%tx: %x ",__LINE__,diepos,die.tag); */
-        for (int i=offset; i < num_traces; i++) {
+       int i;
+        for (i=offset; i < num_traces; i++) {
             uintptr_t addr = (uintptr_t)traces[i];
             uintptr_t offset = addr - reader->obj->base_addr + 
reader->obj->vmaddr;
             uintptr_t saddr = ranges_include(reader, &ranges, offset);
-->8--


-- 
jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF  DDCC 0DFA 74AE 1524 E7EE

Reply via email to