Get richards.js running

I was trying to benchmark porffor and I got this issue when trying to compile the richards.js file:
$ ./porf richards.js -d --no-backtrace
CompileError: WebAssembly.Module(): Compiling function #1167:"#indirect_Benchmark" failed: invalid local index: 20 @+557434

richards.js
// Copyright 2013 the V8 project authors. All rights reserved.
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
//     * Redistributions of source code must retain the above copyright
//       notice, this list of conditions and the following disclaimer.
//     * Redistributions in binary form must reproduce the above
//       copyright notice, this list of conditions and the following
//       disclaimer in the documentation and/or other materials provided
//       with the distribution.
//     * Neither the name of Google Inc. nor the names of its
//       contributors may be used to endorse or promote products derived
//       from this software without specific prior written permission.

// Performance.now is used in latency benchmarks, the fallback is Date.now.
var performance = performance || {};
performance.now = (function () {
  return (
    performance.now || performance.mozNow || performance.msNow || performance.oNow || performance.webkitNow || Date.now
  );
})();

// Simple framework for running the benchmark suites and
// computing a score based on the timing measurements.

// A benchmark has a name (string) and a function that will be run to
// do the performance measurement. The optional setup and tearDown
// arguments are functions that will be invoked before and after
// running the benchmark, but the running time of these functions will
// not be accounted for in the benchmark score.
function Benchmark(
  name,
  doWarmup,
  doDeterministic,
  deterministicIterations,
  run,
  setup,
  tearDown,
  rmsResult,
  minIterations
) {
  this.name = name;
  this.doWarmup = doWarmup;
  this.doDeterministic = doDeterministic;
  this.deterministicIterations = deterministicIterations;
  this.run = run;
  this.Setup = setup ? setup : function () {};
  this.TearDown = tearDown ? tearDown : function () {};
  this.rmsResult = rmsResult ? rmsResult : null;
  this.minIterations = minIterations ? minIterations : 32;
}

// Benchmark results hold the benchmark and the measured time used to
// run the benchmark. The benchmark score is computed later once a
// full benchmark suite has run to completion. If latency is set to 0
// then there is no latency score for this benchmark.
function BenchmarkResult(benchmark, time, latency) {
  this.benchmark = benchmark;
  this.time = time;
  this.latency = latency;
}

// Automatically convert results to numbers. Used by the geometric
// mean computation.
BenchmarkResult.prototype.valueOf = function () {
  return this.time;
};

// Suites of benchmarks consist of a name and the set of benchmarks in
// addition to the reference timing that the final score will be based
// on. This way, all scores are relative to a reference run and higher
// scores implies better performance.
function BenchmarkSuite(name, reference, benchmarks) {
  this.name = name;
  this.reference = reference;
  this.benchmarks = benchmarks;
  BenchmarkSuite.suites.push(this);
}

// Keep track of all declared benchmark suites.
BenchmarkSuite.suites = [];

// Scores are not comparable across versions. Bump the version if
// you're making changes that will affect that scores, e.g. if you add
// a new benchmark or change an existing one.
BenchmarkSuite.version = "9";

// Defines global benchsuite running mode that overrides benchmark suite
// behavior. Intended to be set by the benchmark driver. Undefined
// values here allow a benchmark to define behaviour itself.
BenchmarkSuite.config = {
  doWarmup: undefined,
  doDeterministic: undefined,
};

// To make the benchmark results predictable, we replace Math.random
// with a 100% deterministic alternative.
BenchmarkSuite.ResetRNG = function () {
  Math.random = (function () {
    var seed = 49734321;
    return function () {
      // Robert Jenkins' 32 bit integer hash function.
      seed = (seed + 0x7ed55d16 + (seed << 12)) & 0xffffffff;
      seed = (seed ^ 0xc761c23c ^ (seed >>> 19)) & 0xffffffff;
      seed = (seed + 0x165667b1 + (seed << 5)) & 0xffffffff;
      seed = ((seed + 0xd3a2646c) ^ (seed << 9)) & 0xffffffff;
      seed = (seed + 0xfd7046c5 + (seed << 3)) & 0xffffffff;
      seed = (seed ^ 0xb55a4f09 ^ (seed >>> 16)) & 0xffffffff;
      return (seed & 0xfffffff) / 0x10000000;
    };
  })();
};

// Runs all registered benchmark suites and optionally yields between
// each individual benchmark to avoid running for too long in the
// context of browsers. Once done, the final score is reported to the
// runner.
BenchmarkSuite.RunSuites = function (runner, skipBenchmarks) {
  skipBenchmarks = typeof skipBenchmarks === "undefined" ? [] : skipBenchmarks;
  var continuation = null;
  var suites = BenchmarkSuite.suites;
  var length = suites.length;
  BenchmarkSuite.scores = [];
  var index = 0;
  function RunStep() {
    while (continuation || index < length) {
      if (continuation) {
        continuation = continuation();
      } else {
        var suite = suites[index++];
        if (runner.NotifyStart) runner.NotifyStart(suite.name);
        if (skipBenchmarks.indexOf(suite.name) > -1) {
          suite.NotifySkipped(runner);
        } else {
          continuation = suite.RunStep(runner);
        }
      }
      if (continuation && typeof window != "undefined" && window.setTimeout) {
        window.setTimeout(RunStep, 25);
        return;
      }
    }

    // show final result
    if (runner.NotifyScore) {
      var score = BenchmarkSuite.GeometricMean(BenchmarkSuite.scores);
      var formatted = BenchmarkSuite.FormatScore(100 * score);
      runner.NotifyScore(formatted);
    }
  }
  RunStep();
};

// Counts the total number of registered benchmarks. Useful for
// showing progress as a percentage.
BenchmarkSuite.CountBenchmarks = function () {
  var result = 0;
  var suites = BenchmarkSuite.suites;
  for (var i = 0; i < suites.length; i++) {
    result += suites[i].benchmarks.length;
  }
  return result;
};

// Computes the geometric mean of a set of numbers.
BenchmarkSuite.GeometricMean = function (numbers) {
  var log = 0;
  for (var i = 0; i < numbers.length; i++) {
    log += Math.log(numbers[i]);
  }
  return Math.pow(Math.E, log / numbers.length);
};

// Computes the geometric mean of a set of throughput time measurements.
BenchmarkSuite.GeometricMeanTime = function (measurements) {
  var log = 0;
  for (var i = 0; i < measurements.length; i++) {
    log += Math.log(measurements[i].time);
  }
  return Math.pow(Math.E, log / measurements.length);
};

// Computes the geometric mean of a set of rms measurements.
BenchmarkSuite.GeometricMeanLatency = function (measurements) {
  var log = 0;
  var hasLatencyResult = false;
  for (var i = 0; i < measurements.length; i++) {
    if (measurements[i].latency != 0) {
      log += Math.log(measurements[i].latency);
      hasLatencyResult = true;
    }
  }
  if (hasLatencyResult) {
    return Math.pow(Math.E, log / measurements.length);
  } else {
    return 0;
  }
};

// Converts a score value to a string with at least three significant
// digits.
BenchmarkSuite.FormatScore = function (value) {
  if (value > 100) {
    return value.toFixed(0);
  } else {
    return value.toPrecision(3);
  }
};

// Notifies the runner that we're done running a single benchmark in
// the benchmark suite. This can be useful to report progress.
BenchmarkSuite.prototype.NotifyStep = function (result) {
  this.results.push(result);
  if (this.runner.NotifyStep) this.runner.NotifyStep(result.benchmark.name);
};

// Notifies the runner that we're done with running a suite and that
// we have a result which can be reported to the user if needed.
BenchmarkSuite.prototype.NotifyResult = function () {
  var mean = BenchmarkSuite.GeometricMeanTime(this.results);
  var score = this.reference[0] / mean;
  BenchmarkSuite.scores.push(score);
  if (this.runner.NotifyResult) {
    var formatted = BenchmarkSuite.FormatScore(100 * score);
    this.runner.NotifyResult(this.name, formatted);
  }
  if (this.reference.length == 2) {
    var meanLatency = BenchmarkSuite.GeometricMeanLatency(this.results);
    if (meanLatency != 0) {
      var scoreLatency = this.reference[1] / meanLatency;
      BenchmarkSuite.scores.push(scoreLatency);
      if (this.runner.NotifyResult) {
        var formattedLatency = BenchmarkSuite.FormatScore(100 * scoreLatency);
        this.runner.NotifyResult(this.name + "Latency", formattedLatency);
      }
    }
  }
};

BenchmarkSuite.prototype.NotifySkipped = function (runner) {
  BenchmarkSuite.scores.push(1); // push default reference score.
  if (runner.NotifyResult) {
    runner.NotifyResult(this.name, "Skipped");
  }
};

// Notifies the runner that running a benchmark resulted in an error.
BenchmarkSuite.prototype.NotifyError = function (error) {
  if (this.runner.NotifyError) {
    this.runner.NotifyError(this.name, error);
  }
  if (this.runner.NotifyStep) {
    this.runner.NotifyStep(this.name);
  }
};

// Runs a single benchmark for at least a second and computes the
// average time it takes to run a single iteration.
BenchmarkSuite.prototype.RunSingleBenchmark = function (benchmark, data) {
  var config = BenchmarkSuite.config;
  var doWarmup = config.doWarmup !== undefined ? config.doWarmup : benchmark.doWarmup;
  var doDeterministic = config.doDeterministic !== undefined ? config.doDeterministic : benchmark.doDeterministic;

  function Measure(data) {
    var elapsed = 0;
    var start = new Date();

    // Run either for 1 second or for the number of iterations specified
    // by minIterations, depending on the config flag doDeterministic.
    for (var i = 0; doDeterministic ? i < benchmark.deterministicIterations : elapsed < 1000; i++) {
      benchmark.run();
      elapsed = new Date() - start;
    }
    if (data != null) {
      data.runs += i;
      data.elapsed += elapsed;
    }
  }

  // Sets up data in order to skip or not the warmup phase.
  if (!doWarmup && data == null) {
    data = { runs: 0, elapsed: 0 };
  }

  if (data == null) {
    Measure(null);
    return { runs: 0, elapsed: 0 };
  } else {
    Measure(data);
    // If we've run too few iterations, we continue for another second.
    if (data.runs < benchmark.minIterations) return data;
    var usec = (data.elapsed * 1000) / data.runs;
    var rms = benchmark.rmsResult != null ? benchmark.rmsResult() : 0;
    this.NotifyStep(new BenchmarkResult(benchmark, usec, rms));
    return null;
  }
};

// This function starts running a suite, but stops between each
// individual benchmark in the suite and returns a continuation
// function which can be invoked to run the next benchmark. Once the
// last benchmark has been executed, null is returned.
BenchmarkSuite.prototype.RunStep = function (runner) {
  BenchmarkSuite.ResetRNG();
  this.results = [];
  this.runner = runner;
  var length = this.benchmarks.length;
  var index = 0;
  var suite = this;
  var data;

  // Run the setup, the actual benchmark, and the tear down in three
  // separate steps to allow the framework to yield between any of the
  // steps.

  function RunNextSetup() {
    if (index < length) {
      try {
        suite.benchmarks[index].Setup();
      } catch (e) {
        suite.NotifyError(e);
        return null;
      }
      return RunNextBenchmark;
    }
    suite.NotifyResult();
    return null;
  }

  function RunNextBenchmark() {
    try {
      data = suite.RunSingleBenchmark(suite.benchmarks[index], data);
    } catch (e) {
      suite.NotifyError(e);
      return null;
    }
    // If data is null, we're done with this benchmark.
    return data == null ? RunNextTearDown : RunNextBenchmark();
  }

  function RunNextTearDown() {
    try {
      suite.benchmarks[index++].TearDown();
    } catch (e) {
      suite.NotifyError(e);
      return null;
    }
    return RunNextSetup;
  }

  // Start out running the setup.
  return RunNextSetup();
};
// Copyright 2006-2008 the V8 project authors. All rights reserved.
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
//     * Redistributions of source code must retain the above copyright
//       notice, this list of conditions and the following disclaimer.
//     * Redistributions in binary form must reproduce the above
//       copyright notice, this list of conditions and the following
//       disclaimer in the documentation and/or other materials provided
//       with the distribution.
//     * Neither the name of Google Inc. nor the names of its
//       contributors may be used to endorse or promote products derived
//       from this software without specific prior written permission.

// This is a JavaScript implementation of the Richards
// benchmark from:
//
//    http://www.cl.cam.ac.uk/~mr10/Bench.html
//
// The benchmark was originally implemented in BCPL by
// Martin Richards.

var Richards = new BenchmarkSuite("Richards", [35302], [new Benchmark("Richards", true, false, 8200, runRichards)]);

/**
 * The Richards benchmark simulates the task dispatcher of an
 * operating system.
 **/
function runRichards() {
  var scheduler = new Scheduler();
  scheduler.addIdleTask(ID_IDLE, 0, null, COUNT);

  var queue = new Packet(null, ID_WORKER, KIND_WORK);
  queue = new Packet(queue, ID_WORKER, KIND_WORK);
  scheduler.addWorkerTask(ID_WORKER, 1000, queue);

  queue = new Packet(null, ID_DEVICE_A, KIND_DEVICE);
  queue = new Packet(queue, ID_DEVICE_A, KIND_DEVICE);
  queue = new Packet(queue, ID_DEVICE_A, KIND_DEVICE);
  scheduler.addHandlerTask(ID_HANDLER_A, 2000, queue);

  queue = new Packet(null, ID_DEVICE_B, KIND_DEVICE);
  queue = new Packet(queue, ID_DEVICE_B, KIND_DEVICE);
  queue = new Packet(queue, ID_DEVICE_B, KIND_DEVICE);
  scheduler.addHandlerTask(ID_HANDLER_B, 3000, queue);

  scheduler.addDeviceTask(ID_DEVICE_A, 4000, null);

  scheduler.addDeviceTask(ID_DEVICE_B, 5000, null);

  scheduler.schedule();

  if (scheduler.queueCount != EXPECTED_QUEUE_COUNT || scheduler.holdCount != EXPECTED_HOLD_COUNT) {
    var msg =
      "Error during execution: queueCount = " + scheduler.queueCount + ", holdCount = " + scheduler.holdCount + ".";
    throw new Error(msg);
  }
}

var COUNT = 1000;

/**
 * These two constants specify how many times a packet is queued and
 * how many times a task is put on hold in a correct run of richards.
 * They don't have any meaning a such but are characteristic of a
 * correct run so if the actual queue or hold count is different from
 * the expected there must be a bug in the implementation.
 **/
var EXPECTED_QUEUE_COUNT = 2322;
var EXPECTED_HOLD_COUNT = 928;

/**
 * A scheduler can be used to schedule a set of tasks based on their relative
 * priorities.  Scheduling is done by maintaining a list of task control blocks
 * which holds tasks and the data queue they are processing.
 * @constructor
 */
function Scheduler() {
  this.queueCount = 0;
  this.holdCount = 0;
  this.blocks = new Array(NUMBER_OF_IDS);
  this.list = null;
  this.currentTcb = null;
  this.currentId = null;
}

var ID_IDLE = 0;
var ID_WORKER = 1;
var ID_HANDLER_A = 2;
var ID_HANDLER_B = 3;
var ID_DEVICE_A = 4;
var ID_DEVICE_B = 5;
var NUMBER_OF_IDS = 6;

var KIND_DEVICE = 0;
var KIND_WORK = 1;

/**
 * Add an idle task to this scheduler.
 * @param {int} id the identity of the task
 * @param {int} priority the task's priority
 * @param {Packet} queue the queue of work to be processed by the task
 * @param {int} count the number of times to schedule the task
 */
Scheduler.prototype.addIdleTask = function (id, priority, queue, count) {
  this.addRunningTask(id, priority, queue, new IdleTask(this, 1, count));
};

/**
 * Add a work task to this scheduler.
 * @param {int} id the identity of the task
 * @param {int} priority the task's priority
 * @param {Packet} queue the queue of work to be processed by the task
 */
Scheduler.prototype.addWorkerTask = function (id, priority, queue) {
  this.addTask(id, priority, queue, new WorkerTask(this, ID_HANDLER_A, 0));
};

/**
 * Add a handler task to this scheduler.
 * @param {int} id the identity of the task
 * @param {int} priority the task's priority
 * @param {Packet} queue the queue of work to be processed by the task
 */
Scheduler.prototype.addHandlerTask = function (id, priority, queue) {
  this.addTask(id, priority, queue, new HandlerTask(this));
};

/**
 * Add a handler task to this scheduler.
 * @param {int} id the identity of the task
 * @param {int} priority the task's priority
 * @param {Packet} queue the queue of work to be processed by the task
 */
Scheduler.prototype.addDeviceTask = function (id, priority, queue) {
  this.addTask(id, priority, queue, new DeviceTask(this));
};

/**
 * Add the specified task and mark it as running.
 * @param {int} id the identity of the task
 * @param {int} priority the task's priority
 * @param {Packet} queue the queue of work to be processed by the task
 * @param {Task} task the task to add
 */
Scheduler.prototype.addRunningTask = function (id, priority, queue, task) {
  this.addTask(id, priority, queue, task);
  this.currentTcb.setRunning();
};

/**
 * Add the specified task to this scheduler.
 * @param {int} id the identity of the task
 * @param {int} priority the task's priority
 * @param {Packet} queue the queue of work to be processed by the task
 * @param {Task} task the task to add
 */
Scheduler.prototype.addTask = function (id, priority, queue, task) {
  this.currentTcb = new TaskControlBlock(this.list, id, priority, queue, task);
  this.list = this.currentTcb;
  this.blocks[id] = this.currentTcb;
};

/**
 * Execute the tasks managed by this scheduler.
 */
Scheduler.prototype.schedule = function () {
  this.currentTcb = this.list;
  while (this.currentTcb != null) {
    if (this.currentTcb.isHeldOrSuspended()) {
      this.currentTcb = this.currentTcb.link;
    } else {
      this.currentId = this.currentTcb.id;
      this.currentTcb = this.currentTcb.run();
    }
  }
};

/**
 * Release a task that is currently blocked and return the next block to run.
 * @param {int} id the id of the task to suspend
 */
Scheduler.prototype.release = function (id) {
  var tcb = this.blocks[id];
  if (tcb == null) return tcb;
  tcb.markAsNotHeld();
  if (tcb.priority > this.currentTcb.priority) {
    return tcb;
  } else {
    return this.currentTcb;
  }
};

/**
 * Block the currently executing task and return the next task control block
 * to run.  The blocked task will not be made runnable until it is explicitly
 * released, even if new work is added to it.
 */
Scheduler.prototype.holdCurrent = function () {
  this.holdCount++;
  this.currentTcb.markAsHeld();
  return this.currentTcb.link;
};

/**
 * Suspend the currently executing task and return the next task control block
 * to run.  If new work is added to the suspended task it will be made runnable.
 */
Scheduler.prototype.suspendCurrent = function () {
  this.currentTcb.markAsSuspended();
  return this.currentTcb;
};

/**
 * Add the specified packet to the end of the worklist used by the task
 * associated with the packet and make the task runnable if it is currently
 * suspended.
 * @param {Packet} packet the packet to add
 */
Scheduler.prototype.queue = function (packet) {
  var t = this.blocks[packet.id];
  if (t == null) return t;
  this.queueCount++;
  packet.link = null;
  packet.id = this.currentId;
  return t.checkPriorityAdd(this.currentTcb, packet);
};

/**
 * A task control block manages a task and the queue of work packages associated
 * with it.
 * @param {TaskControlBlock} link the preceding block in the linked block list
 * @param {int} id the id of this block
 * @param {int} priority the priority of this block
 * @param {Packet} queue the queue of packages to be processed by the task
 * @param {Task} task the task
 * @constructor
 */
function TaskControlBlock(link, id, priority, queue, task) {
  this.link = link;
  this.id = id;
  this.priority = priority;
  this.queue = queue;
  this.task = task;
  if (queue == null) {
    this.state = STATE_SUSPENDED;
  } else {
    this.state = STATE_SUSPENDED_RUNNABLE;
  }
}

/**
 * The task is running and is currently scheduled.
 */
var STATE_RUNNING = 0;

/**
 * The task has packets left to process.
 */
var STATE_RUNNABLE = 1;

/**
 * The task is not currently running.  The task is not blocked as such and may
 * be started by the scheduler.
 */
var STATE_SUSPENDED = 2;

/**
 * The task is blocked and cannot be run until it is explicitly released.
 */
var STATE_HELD = 4;

var STATE_SUSPENDED_RUNNABLE = STATE_SUSPENDED | STATE_RUNNABLE;
var STATE_NOT_HELD = ~STATE_HELD;

TaskControlBlock.prototype.setRunning = function () {
  this.state = STATE_RUNNING;
};

TaskControlBlock.prototype.markAsNotHeld = function () {
  this.state = this.state & STATE_NOT_HELD;
};

TaskControlBlock.prototype.markAsHeld = function () {
  this.state = this.state | STATE_HELD;
};

TaskControlBlock.prototype.isHeldOrSuspended = function () {
  return (this.state & STATE_HELD) != 0 || this.state == STATE_SUSPENDED;
};

TaskControlBlock.prototype.markAsSuspended = function () {
  this.state = this.state | STATE_SUSPENDED;
};

TaskControlBlock.prototype.markAsRunnable = function () {
  this.state = this.state | STATE_RUNNABLE;
};

/**
 * Runs this task, if it is ready to be run, and returns the next task to run.
 */
TaskControlBlock.prototype.run = function () {
  var packet;
  if (this.state == STATE_SUSPENDED_RUNNABLE) {
    packet = this.queue;
    this.queue = packet.link;
    if (this.queue == null) {
      this.state = STATE_RUNNING;
    } else {
      this.state = STATE_RUNNABLE;
    }
  } else {
    packet = null;
  }
  return this.task.run(packet);
};

/**
 * Adds a packet to the worklist of this block's task, marks this as runnable if
 * necessary, and returns the next runnable object to run (the one
 * with the highest priority).
 */
TaskControlBlock.prototype.checkPriorityAdd = function (task, packet) {
  if (this.queue == null) {
    this.queue = packet;
    this.markAsRunnable();
    if (this.priority > task.priority) return this;
  } else {
    this.queue = packet.addTo(this.queue);
  }
  return task;
};

TaskControlBlock.prototype.toString = function () {
  return "tcb { " + this.task + "@" + this.state + " }";
};

/**
 * An idle task doesn't do any work itself but cycles control between the two
 * device tasks.
 * @param {Scheduler} scheduler the scheduler that manages this task
 * @param {int} v1 a seed value that controls how the device tasks are scheduled
 * @param {int} count the number of times this task should be scheduled
 * @constructor
 */
function IdleTask(scheduler, v1, count) {
  this.scheduler = scheduler;
  this.v1 = v1;
  this.count = count;
}

IdleTask.prototype.run = function (packet) {
  this.count--;
  if (this.count == 0) return this.scheduler.holdCurrent();
  if ((this.v1 & 1) == 0) {
    this.v1 = this.v1 >> 1;
    return this.scheduler.release(ID_DEVICE_A);
  } else {
    this.v1 = (this.v1 >> 1) ^ 0xd008;
    return this.scheduler.release(ID_DEVICE_B);
  }
};

IdleTask.prototype.toString = function () {
  return "IdleTask";
};

/**
 * A task that suspends itself after each time it has been run to simulate
 * waiting for data from an external device.
 * @param {Scheduler} scheduler the scheduler that manages this task
 * @constructor
 */
function DeviceTask(scheduler) {
  this.scheduler = scheduler;
  this.v1 = null;
}

DeviceTask.prototype.run = function (packet) {
  if (packet == null) {
    if (this.v1 == null) return this.scheduler.suspendCurrent();
    var v = this.v1;
    this.v1 = null;
    return this.scheduler.queue(v);
  } else {
    this.v1 = packet;
    return this.scheduler.holdCurrent();
  }
};

DeviceTask.prototype.toString = function () {
  return "DeviceTask";
};

/**
 * A task that manipulates work packets.
 * @param {Scheduler} scheduler the scheduler that manages this task
 * @param {int} v1 a seed used to specify how work packets are manipulated
 * @param {int} v2 another seed used to specify how work packets are manipulated
 * @constructor
 */
function WorkerTask(scheduler, v1, v2) {
  this.scheduler = scheduler;
  this.v1 = v1;
  this.v2 = v2;
}

WorkerTask.prototype.run = function (packet) {
  if (packet == null) {
    return this.scheduler.suspendCurrent();
  } else {
    if (this.v1 == ID_HANDLER_A) {
      this.v1 = ID_HANDLER_B;
    } else {
      this.v1 = ID_HANDLER_A;
    }
    packet.id = this.v1;
    packet.a1 = 0;
    for (var i = 0; i < DATA_SIZE; i++) {
      this.v2++;
      if (this.v2 > 26) this.v2 = 1;
      packet.a2[i] = this.v2;
    }
    return this.scheduler.queue(packet);
  }
};

WorkerTask.prototype.toString = function () {
  return "WorkerTask";
};

/**
 * A task that manipulates work packets and then suspends itself.
 * @param {Scheduler} scheduler the scheduler that manages this task
 * @constructor
 */
function HandlerTask(scheduler) {
  this.scheduler = scheduler;
  this.v1 = null;
  this.v2 = null;
}

HandlerTask.prototype.run = function (packet) {
  if (packet != null) {
    if (packet.kind == KIND_WORK) {
      this.v1 = packet.addTo(this.v1);
    } else {
      this.v2 = packet.addTo(this.v2);
    }
  }
  if (this.v1 != null) {
    var count = this.v1.a1;
    var v;
    if (count < DATA_SIZE) {
      if (this.v2 != null) {
        v = this.v2;
        this.v2 = this.v2.link;
        v.a1 = this.v1.a2[count];
        this.v1.a1 = count + 1;
        return this.scheduler.queue(v);
      }
    } else {
      v = this.v1;
      this.v1 = this.v1.link;
      return this.scheduler.queue(v);
    }
  }
  return this.scheduler.suspendCurrent();
};

HandlerTask.prototype.toString = function () {
  return "HandlerTask";
};

/* --- *
 * P a c k e t
 * --- */

var DATA_SIZE = 4;

/**
 * A simple package of data that is manipulated by the tasks.  The exact layout
 * of the payload data carried by a packet is not importaint, and neither is the
 * nature of the work performed on packets by the tasks.
 *
 * Besides carrying data, packets form linked lists and are hence used both as
 * data and worklists.
 * @param {Packet} link the tail of the linked list of packets
 * @param {int} id an ID for this packet
 * @param {int} kind the type of this packet
 * @constructor
 */
function Packet(link, id, kind) {
  this.link = link;
  this.id = id;
  this.kind = kind;
  this.a1 = 0;
  this.a2 = new Array(DATA_SIZE);
}

/**
 * Add this packet to the end of a worklist, and return the worklist.
 * @param {Packet} queue the worklist to add this packet to
 */
Packet.prototype.addTo = function (queue) {
  this.link = null;
  if (queue == null) return this;
  var peek,
    next = queue;
  while ((peek = next.link) != null) next = peek;
  next.link = this;
  return queue;
};

Packet.prototype.toString = function () {
  return "Packet";
};
// Copyright 2014 the V8 project authors. All rights reserved.
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
//     * Redistributions of source code must retain the above copyright
//       notice, this list of conditions and the following disclaimer.
//     * Redistributions in binary form must reproduce the above
//       copyright notice, this list of conditions and the following
//       disclaimer in the documentation and/or other materials provided
//       with the distribution.
//     * Neither the name of Google Inc. nor the names of its
//       contributors may be used to endorse or promote products derived
//       from this software without specific prior written permission.
 IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

var base_dir = "";
var success = true;

function PrintResult(name, result) {
  console.log(name + ": " + result);
}

function PrintError(name, error) {
  PrintResult(name, error);
  success = false;
}

function PrintScore(score) {
  if (success) {
    console.log("----");
    console.log("Score (version " + BenchmarkSuite.version + "): " + score);
  }
}

BenchmarkSuite.config.doWarmup = undefined;
BenchmarkSuite.config.doDeterministic = undefined;

function main() {
  BenchmarkSuite.RunSuites({ NotifyResult: PrintResult, NotifyError: PrintError, NotifyScore: PrintScore });
}

main();

Great example ty, will look at fixing soon

Fixed :tada: but there is another error for that file now :sweat_smile: making this a meta issue

Update: it no longer fails to compile 🎉 however, it still errors at runtime. There are a few bugs here, looking to get a minimal version working.

Got the benchmark itself running but the harness still has issues, WIP

Nice, good progress. Let me know once things are ready to try. Excited!

Any updates on running the benchmark @CanadaHonk ?


feat(gatsby-source-strapi): Need a customize headers option pass to gatsby-source-filesystem plugin

Before this v4 plugin published, I use another plugin relate-app/gatsby-source-strapi for replaced. That plugin document has provide options but not passing headers, I don't know why.
But add a additional headers it really useful. Sometimes markdown content has a CDN image with security policy cannot visit directly, we need send customize headers for gatsby node request. Or it will throw an error as:

I can temporary fix it through edit my local node_modules files, but not a good way if I install depencies package next time. So I think it it necessary to be added.
I change my local files temporary:
// gatsby-config.js
const strapiConfig = {
  apiURL: process.env.STRAPI_API_URL,
  accessToken: process.env.STRAPI_TOKEN,
  collectionTypes: [`post`, `category`, `tag`, `page`],
  singleTypes: [],
  headers: {
    Referer: 'https://www.whidy.net/'
  }
};

and node_modules/gatsby-source-strapi/lib/download-media-files.js which is near https://github.com/strapi/gatsby-source-strapi/blob/74e9f5c0e38149e4c3c144449312343c1ae4a565/src/download-media-files.js#L77
      const fileNode = await (0, _gatsbySourceFilesystem.createRemoteFileNode)({
        url: source_url,
        store,
        cache,
        createNode,
        createNodeId,
        httpHeaders: strapiConfig.headers
      });

after that, file will be get and save to .cache/caches/gatsby-source-strapi folder fine.
relate issue: headers Option not working

@whidy If you could make a PR for this, we could have a look at it

Merged in at https://github.com/gatsby-uc/plugins/pull/353 and will be released as 3.0.3


refactor(prettier)!: remove source_text argument from constructor

refactor(prettier)!: remove source_text argument from constructor
refactor(codegen)!: remove CommentOptions API

#6451  👈
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @Boshen and the rest of your teammates on  Graphite

CodSpeed Performance Report
Merging #6451 will degrade performances by 22.96%
Comparing 10-11-refactor_codegen_remove_commentoptions_api (d7d6d64) with main (06ea121)
Summary
❌ 2 regressions ✅ 27 untouched benchmarks

⚠ Please fix the performance issues or acknowledge them on CodSpeed.

Benchmarks breakdown
Benchmark	main 10-11-refactor_codegen_remove_commentoptions_api	Change
❌	codegen[checker.ts]	21 ms	27.3 ms	-22.96%
❌	codegen_sourcemap[checker.ts]	72.7 ms	80.1 ms	-9.19%

Printing comment has been turned on.


Support x and y properly in DataFrame with non-numeric columns with plots

ks.DataFrame({'a': [1, 2, 3], 'b':["a", "b", "c"], 'c': [4, 5, 6]}).plot(kind="hist", x="a", y="c", bins=200)

Before:
pyspark.sql.utils.AnalysisException: cannot resolve 'least(min(a), min(b), min(c))' due to data type mismatch: The expressions should all have the same type, got LEAST(bigint, string, bigint).;
'Aggregate [unresolvedalias(least(min(a#1L), min(b#2), min(c#3L)), Some(org.apache.spark.sql.Column$$Lambda$1556/0x0000000800d94840@42fb0cc1)), unresolvedalias(greatest(max(a#1L), max(b#2), max(c#3L)), Some(org.apache.spark.sql.Column$$Lambda$1556/0x0000000800d94840@42fb0cc1))]
+- Project [a#1L, b#2, c#3L]
   +- Project [__index_level_0__#0L, a#1L, b#2, c#3L, monotonically_increasing_id() AS __natural_order__#8L]
      +- LogicalRDD [__index_level_0__#0L, a#1L, b#2, c#3L], false

After:
Figure({
    'data': [{'hovertemplate': 'variable=a
value=%{text}
count=%{y}',
              'name': 'a',
...

Notebook tests:

Can be tested here: https://mybinder.org/v2/gh/HyukjinKwon/koalas/fix-hist-plot?filepath=docs%2Fsource%2Fgetting_started%2F10min.ipynb

Codecov Report

Merging #2172 (764e05f) into master (eda0bb5) will decrease coverage by 0.03%.
The diff coverage is 71.42%.

:exclamation: Current head 764e05f differs from pull request most recent head 7da53a7. Consider uploading reports for the commit 7da53a7 to get more accurate results

@@            Coverage Diff             @@
##           master    #2172      +/-   ##
==========================================
- Coverage   95.34%   95.30%   -0.04%
==========================================
  Files          60       60
  Lines       13711    13731      +20
==========================================
+ Hits        13073    13087      +14
- Misses        638      644       +6

Impacted Files
Coverage Δ

databricks/koalas/plot/matplotlib.py
91.10% <50.00%> (-0.90%)
:arrow_down:

databricks/koalas/plot/plotly.py
94.05% <50.00%> (-2.79%)
:arrow_down:

databricks/koalas/plot/core.py
93.77% <100.00%> (ø)

...ks/koalas/tests/plot/test_frame_plot_matplotlib.py
100.00% <100.00%> (ø)

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update eda0bb5...7da53a7. Read the comment docs.


New tab opens non-momentum page

I've got the extension Momentum installed and that replaces the new tab page. But whenever I press 'T' to open a new tab, it won't open the momentum page.
Expected page:

Result after pressing 'T':

Now you need to set the"New Tab URL" option of Vimium++, and it should be the other extension's page URL. More details are in https://github.com/gdh1995/vimium-plus/wiki/Use-another-extension-as-the-New-Tab

@gdh1995 Ah right, excuse me I missed that tutorial in the wiki! The issue has been resolved.


[App Service] Add support for Premium V3 pricing tier

Description

Adding support for PremiumV3 pricing tier
Testing Guide

appservice plan create --location westus --resource-group my-resource-group --name -my-new-app-service-plan --sku P1v3
P1V3 => Premium V3 Small
P2V3 => Premium V3 Medium
P3V3 => Premium V3 Large
History Notes

This checklist is used to make sure that common guidelines for a pull request are followed.

[x] The PR title and description has followed the guideline in Submitting Pull Requests.

[x] I adhere to the Command Guidelines.

cc: @panchagnula, @jvano

App Service


DRA: Integrates with DRA and CDI

Thanks for contributing!

What type of PR is this?

release/feature

What this PR does / why we need it:
Now spiderpool integrates dra and cdi, which allows for some complex scheduling and better manipulation of hardware resources based on dra.
Which issue(s) this PR fixes:

Fixes #
Special notes for your reviewer:

need :
E2E test case , and documents

/cc @weizhoublue
The PR is ready to merge.


💡 Documenting String appendingPathComponent

Checklist

[x] I checked the Contributing Guidelines before creating this request.
[ ] New extensions are written in Swift 5.0.
[ ] New extensions support iOS 8.0+ / tvOS 9.0+ / macOS 10.10+ / watchOS 2.0+, or use @available if not.
[ ] I have added tests for new extensions, and they passed.
[x] All extensions have a clear comments explaining their functionality, all parameters and return type in English.
[ ] All extensions are declared as public.
[ ] I have added a changelog entry describing my changes.

          2 Warnings

:warning:
Consider adding tests for new extensions or updating existing tests for a modified SwifterSwift extension

:warning:
The source files have been modified. Please consider adding a CHANGELOG entry if necessary.

          4 Messages

:book:
Thank you for submitting a pull request to SwifterSwift. The team will review your submission as soon as possible.

:book:
iOS: Executed 586 tests, with 0 failures (0 unexpected) in 9.239 (10.120) seconds

:book:
tvOS: Executed 561 tests, with 0 failures (0 unexpected) in 2.512 (3.143) seconds

:book:
macOS: Executed 420 tests, with 0 failures (0 unexpected) in 1.006 (1.349) seconds

  Generated by :no_entry_sign: Danger


reduce should use a persistent store by default

Today the default store is an in-memory store. Data will be lost during pod migrations and restarts. We should use WAL by default and can give the option to override to in-memory store if required (not recommended though).

PVC is mostly immutable, which means once created, it can not be updated. Also, default storage class is not available in some of the GKE cases.
I recommend:

Default to use emptyDir when storage is missing, so that we can alway use wal pbq;
Add a section in the reduce document, explicitly mentioning persistentVolumeClaim is needed to run real workloads, if that's missing, emptyDir is used, and that might cause data loss.
Update our examples to add persistentVolumeClaim.


http 401 unauthorized

Hi,
Just trying out this util because of the lack of group deploy keys in Gitlab.
We have a self hosted Gitlab which is exposed using HTTPS.
I am an admin in the system and I created a personal access token with 'api' privileges.
But whenever I try and use gitlabform it errors.
$ gitlabform --debug --noop Puppet
Reading config from: /Users/cliff/config.yml
URL-encoded url=https://gitlab.company.com/api/v3/version
Starting new HTTPS connection (1): gitlab.company.com
Incremented Retry for (url='/api/v3/version'): Retry(total=2, connect=None, read=None, redirect=None, status=None)
Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProtocolError('Connection aborted.', ConnectionResetError(54, 'Connection reset by peer'))': /api/v3/version
Starting new HTTPS connection (2): gitlab.company.com
Incremented Retry for (url='/api/v3/version'): Retry(total=1, connect=None, read=None, redirect=None, status=None)
Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProtocolError('Connection aborted.', ConnectionResetError(54, 'Connection reset by peer'))': /api/v3/version
Starting new HTTPS connection (3): gitlab.company.com
Incremented Retry for (url='/api/v3/version'): Retry(total=0, connect=None, read=None, redirect=None, status=None)
Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProtocolError('Connection aborted.', ConnectionResetError(54, 'Connection reset by peer'))': /api/v3/version
Starting new HTTPS connection (4): gitlab.company.com
Aborting - GitLab test request failed, details: 'HTTPSConnectionPool(host='gitlab.company.com', port=443): Max retries exceeded with url: /api/v3/version (Caused by ProtocolError('Connection aborted.', ConnectionResetError(54, 'Connection reset by peer')))'

Pretty sure its not passing the token for some reason.
$ curl https://gitlab.company.com/api/v3/version
{"message":"401 Unauthorized"}

We are running GitLab EE 10.5.2

Hi @acurus-puppetmaster ,
Sorry for a late reply. Did you manage to solve this problem in the mean time?
If not then I don't know yet what have happened but I don't think you are having the problem you suggested as then gitlabform would return 401 and the output would look like this:
Aborting - GitLab test request failed, details: 'Request url='https://gitlab.company.com/api/v3/version', method=GET, data='None' failed - expected code(s) 200, got code 401 & body: 'b'{"message":"401 Unauthorized"}'''

Hi @acurus-puppetmaster , I am going to close this ticket now due to lack of activity but feel free to reopen it if you still have this problem and have time to look into this again (or if anyone else reports similar issue).


Update gridfs.server.js

Fix error when options = undefined

Thanks @TeachMeFly

@epotvin You can clone "devel" branch and copy, or make symlink /packages to your project /packages dir.


[Feature][DataSource]Add flink datasource plugin

Purpose of the pull request
fix: https://github.com/apache/dolphinscheduler/issues/15630
[Feature][Datasource] add flink datasource
Brief change log
Currently spark use thrift server for replacement of hiveserver2 to provide Spark SQL capability.
https://nightlies.apache.org/flink/flink-docs-master/docs/dev/table/sql-gateway/overview/
Flink SQL Gateway is also a replacement solution of hiveserver2.
Verify this pull request

This pull request is code cleanup without any test coverage.
(or)
This pull request is already covered by existing tests, such as (please describe tests).
(or)
This change added tests and can be verified as follows:

(or)
If your pull request contain incompatible change, you should also add it to docs/docs/en/guide/upgrede/incompatible.md

Caused by: java.sql.SQLFeatureNotSupportedException: FlinkConnection#prepareStatement is not supported yet.
at org.apache.flink.table.jdbc.BaseConnection.prepareStatement(BaseConnection.java:42)
at org.apache.flink.table.jdbc.FlinkConnection.prepareStatement(FlinkConnection.java:49)
at org.apache.dolphinscheduler.plugin.task.sql.SqlTask.prepareStatementAndBind(SqlTask.java:380)
... 8 common frames omitted
will do some compacity work on sql task

This pull request has been automatically marked as stale because it has not had recent activity for 120 days. It will be closed in 7 days if no further activity occurs.

remove stale


Document and list Event states

Events are somewhat hacked in right now.

Root Node has a fearured metadata

Should be a Link

Knowing how to enable posting isn't explained
Knowing how to enable theme selection, and advance it to next rounds isn't explained
Knowing how to enable ratings isn't explained
Changing headline is partially hardcoded
Countdown clock usage is hardcoded

... Continue this

how to enable voting
how to run magic ( calc coolness)
how to close voting and show results

Knowing what states, and the progression of states that exists
Knowing how to disable posting after event?
Knowing how to open game submission
Knowing how to close compo and jam
Knowing how to extend compo and jam
Knowing how to set notification area message
Knowing how to make news
Knowing how to set end of voting so countdown count down to that after jam submission hour has ended.

My vote on the way forward with this is to automate more of the stuff that's completely manual and start building an admin dashboard. This is something I'm considering taking up shortly after LD39.
Unfortunately due to the magnitude of the work remaining to do this, I don't think it's feasible to complete for LD39 at this point.

Yes, for the rest of the week we should be keeping the list of things that break the website to a minimum (unless needed).


⚠ ClamAV has degraded performance

In 5c1eca5, ClamAV (https://spamassassin.apache.org/) experienced degraded performance:

HTTP code: 200
Response time: 93 ms

Resolved: ClamAV performance has improved in fc2971d.


build: use older means of getting the swiftrt object

This seems to be failing for some reason.  Fallback to the older way to
get the path to the object.  This should repair the build.

Replace this paragraph with a description of your changes and rationale. Provide links to external references/discussions if appropriate.

Resolves SR-NNNN.

@swift-ci please test and merge

Doe we also need this on the swift-4.1-branch?
https://ci.swift.org/view/swift-4.1-branch/job/oss-swift-4.1-package-linux-ubuntu-14_04/256


When terminal.integrated.showTabs===true the new drop down menu options do not include the old terminal options

Issue Type: Bug
If you set "terminal.integrated.showTabs": false then the old drop down shows the following in windows 10 (same as release build 1.55.2):

New PowerShell
New Command Prompt
Javascript Debug Terminal

BUT the showtab new drop down shows the following:

Configure Terminal Settings
Select Default Profile

The new showtab dropdown IMHO should include all of the old options otherwise users will spend like me this morning an hour to find the  terminal.integrated.showTabs setting and set it to false and never enable it, which is not what you want going forward.
VS Code version: Code - Insiders 1.56.0-insider (23a2409675bc1bde94f3532bc7c5826a6e99e4b6, 2021-04-21T05:13:42.491Z)
OS version: Windows_NT x64 10.0.19042

Yep thanks they will be there in tomorrow's Insider's :)


SparkOperator backward compatibility with Spark

Hello,
We have installed spark-operator with version v1beta2-1.3.3-3.1.1, our Spark application is running with version 2.4.6.
When tested the jobs does run, but I would like to know if its officially supported.
As per the readme, we could use --set image.tag to set the image for our base spark image, but unfortunately I couldn't find any container images in the repository with below 3.1.1, so the helm install fails.
Also in the overview of readme it mentions 'supports Spark 2.3 and up' does that mean even if latest operator is installed with 3.1.1 the old spark will be supported.
Thank you in advance.

We are having the same issue with using the --set image.tag to an older spark version.


refactoring, mobile responsive and fixing the galxyfold issue

Hey @Apra487 could you add some extra detail about what you added here!


Develop

First version of mtl training and evaluation (can't adapt the interfaces of David).

OK... it's a huge PR...

For multi target, they use different ColumnConfig.json but same hidden layers. Is that right?

OK... it's a huge PR...


[BEAM-11087] Add default WindowMappingFn from Main to Side Input windows, validation test, unit tests

Implements the default behavior for the SDK harness w.r.t. mapping main input windows into side input window space for requests. Creates an interface and unit tested back-end type to handle mapping for the SideInputAdapter and puts together encoding/decoding for piping the target windowFn through. The same mechanisms could eventually be used to support custom WindowMappingFns from users.

Thank you for your contribution! Follow this checklist to help us incorporate your contribution quickly and easily:

[ ] Choose reviewer(s) and mention them in a comment (R: @username).
[ ] Format the pull request title like [BEAM-XXX] Fixes bug in ApproximateQuantiles, where you replace BEAM-XXX with the appropriate JIRA issue, if applicable. This will automatically link the pull request to the issue.
[ ] Update CHANGES.md with noteworthy changes.
[ ] If this contribution is large, please file an Apache Individual Contributor License Agreement.

See the Contributor Guide for more tips on how to make review process smoother.

GitHub Actions Tests Status (on master branch)

See CI.md for more information about GitHub Actions CI.


Position for phone numbers real / fake written as code displayed dynamic mobile first to a user

Position for phone numbers real / fake written as code displayed dynamic mobile first to a user
As a user of government services online, I want to recognise phone numbers when scanning the screen for a phone number that I want to click to call or want to copy and paste and send to someone in a message or email or want to write down on paper without having to worry that if I dial this number on a land line that I won't be connected.
What do you need
Need to know that the style chosen for showing phone numbers in content make sense now and takes into account future changes in telecommunications that are already known about. The guidance shall reflect best practice in terms of technology, accessibility and also have input from the Subject Matter Expert The ACMA under the Telecommunications Act.
Also, in the entry check that phone numbers isn't underlined in the example so it looks like a click to call hyperlink but is not one.
Which entry/section is this related to?
Phone numbers: http://content-style-guide.apps.staging.digital.gov.au/az-indexes/p.html#phone-numbers
Also relates to the UI Kit Design Guide as phone numbers today are a design pattern in terms of Schema: https://schema.org/docs/gs.html and Microdata: https://developers.google.com/schemas/formats/microdata Have been informed of this by Toby GOV.AU Developer.
Good example
Have you seen style content elsewhere we should look at?
ACMA is the government authority for Australia's phone numbers:
www.acma.gov.au/Industry/Telco/Numbering/Numbering-Plan/all-about-numbers-ipnd-i-acma
www.acma.gov.au/Citizen/Consumer-info/All-about-numbers/Special-numbers/fictitious-numbers

@LausKovu could you elaborate? (:

Need to know that the style chosen for showing phone numbers in content make sense now and takes into account future changes in telecommunications that are already known about.

Is this about the entry specifically (http://content-style-guide.apps.staging.digital.gov.au/az-indexes/p.html#phone-numbers) or about their styling or both?
We have support in the uikit to automatically add an inline icon of our choosing based on various properties of a link, eg if it ends in .pdf we could append a PDF icon*… similarly, we could pick up that the link is a telephone number (because it starts with tel:), and add a phone icon to the link.
* https://gov-au-ui-kit.apps.staging.digital.gov.au/section-link-styles.html

@joolswood to review this task and check is done


Propagate terminal widths to subcommands

This fixes #901

Coverage decreased (-0.009%) to 91.856% when pulling e06689fc26d759c9797a19766d3589d6cab273aa on mitsuhiko:feature/term-meta-propagation into 1b2e7ad4e480f73925e22052e7a99fdfaeeb396f on kbknapp:master.

@homu r+

:pushpin: Commit e06689f has been approved by kbknapp

:zap: Test exempted - status


Transaction support?

I'd like to see support for transactions via some kind of resource-safe api. If it is already there, I'm happy to hear it, but the documentation doesn't make it clear.

Hi @Daenyth , it's not implemented but it should be trivial to do so. I haven't had the need for it tbh. I can imagine something like:
commandsApi.use { cmd =>
  cmd.multi.bracket { _ =>
    cmd.set("a", "1") *>
      cmd.set("b", "2") *>
      cmd.exec
  } (_ => cmd.discard)
}

We just need to add the multi, exec and discard commands to the API and just leverage cats-effect primitives like bracket to get it working nicely :)

Additionally, we might want to add the watch command as well.

The api you mention there is roughly what I anticipate it should look like, thought I'm not sure what the _ => cmd.discard bit is - if that's for resource safety, I'd expect instead something like def transaction: Resource[F, TransactionCommands[F]] on the main api that would hide that detail from me.

@Daenyth I just started working on it. Got a first working version but it might need some polishing. Please take a look at the PR and let me know if you had something else in mind.


Push to maven not working

Hi,
is the push to maven not working? The last available version seems to be is 11139 (30 dec 2015)
Thank you very much.

Did the switch from SVN to git break the Maven build process? I'd much rather get this out of Maven than build it myself. I have been messing the build process for a day now and still can't get it complete without errors. Plus the checkout is so..... slow.
I have discovered the "Ubuntu on Windows" is not good enough yet to build WebRTC. So I am switching back to VirtualBox.

Any progress on this?


Arrow: release GIL when fetching batch

We're observing issues when using turbodbc within dark.distributed and get messages about long holding GILs.
Browsing the code I noticed that we release the GIL in the numpy backend when fetching the batches. I don't know turbodbc well but I'm wondering if we shouldn't do the same for the arrow backend, c.f. https://github.com/blue-yonder/turbodbc/blob/85927590843607406aa9d54c5ae0f1dc3d6b31f5/cpp/turbodbc_numpy/Library/src/numpy_result_set.cpp#L55

I'm wondering, though, why we wouldn't release the GIL for the entire function. We're not interacting with python here, do we? Maybe the very last arrow::Table::Make would need to hold the GIL but otherwise it isn't necessary, is it?

I would rather release the GIL in https://github.com/blue-yonder/turbodbc/blob/85927590843607406aa9d54c5ae0f1dc3d6b31f5/cpp/turbodbc_arrow/Library/src/arrow_result_set.cpp#L360-L381 where we actually have Python calls. There you should be able to release the GIL for the part before arrow::py::import_pyarrow();.

Codecov Report

Merging #222 into master will decrease coverage by 0.3%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master     #222      +/-   ##
==========================================
- Coverage   98.59%   98.29%   -0.31%
==========================================
  Files         136      141       +5
  Lines        2999     2585     -414
==========================================
- Hits         2957     2541     -416
- Misses         42       44       +2

Impacted Files
Coverage Δ

...urbodbc_arrow/Library/src/set_arrow_parameters.cpp

cpp/turbodbc_arrow/Library/src/python_bindings.cpp

...urbodbc_arrow/Test/tests/arrow_result_set_test.cpp

python/turbodbc/constructors.py
100% <0%> (ø)

python/turbodbc/exceptions.py
100% <0%> (ø)

python/turbodbc/__init__.py
100% <0%> (ø)

python/turbodbc/options.py
100% <0%> (ø)

python/turbodbc/cursor.py
88.77% <0%> (ø)

python/turbodbc/connection.py
100% <0%> (ø)

python/turbodbc/connect.py
100% <0%> (ø)

... and 2 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 8592759...f814fd2. Read the comment docs.

I agree that this should be done as close to python as possible. I included the released GIL for the fetch_next_ batch as well. Slight duplication but the increased transparency is probably worth it.


[Enhancement] Add Account Placeholders

Describe the solution you'd like
Add placeholders for:

Number of accounts
Active account number
Class of active account (or numbered account)

Additional context

hi


Update _custom_modules.py

Add cell kw argument to functions so they are available to editor functions.
This change was driven by this conversation:
https://anvil.works/forum/t/tabulator-which-column-am-i-in/16645?u=anthonys
It would be helpful to have the cell object , in some instances, when using a custom editor.

Thanks @lewysigns - the cell property will just get merged into **properties so I guess it's not breaking.
Merged.

That was the intention! Thank you for maintaining


fix: remove strategy DiffSuppressFunc

Description

We start using the strategy setting and we realized that the plan does not contain the setting in most of the cases, after checking what happens the cause is the DiffSuppressFunc, it removes the changes in most of the cases. Due to the setting being a transient setting and probably not extended used (probably us only) removing the DiffSuppressFunc does not have any impact.
Related Issues

https://github.com/elastic/terraform-provider-ec/pull/507
Motivation and Context

How Has This Been Tested?

We create a cluster with the setting and we try to make some Docker image changes with the strategy setting configured to restart all nodes at the same time. Then we verify the plan does not have the proper configuration.
Since then we are using a SNAPSHOT (with this change ) version of the Elastic Terraform provider to update our clusters and work as expected, the plan has the correct strategy configured.

Types of Changes

[X] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Refactoring (improves code quality but has no user-facing effect)
[ ] Breaking change (fix or feature that would cause existing functionality to change)
[ ] Documentation

Readiness Checklist

[X] My code follows the code style of this project
[ ] My change requires a change to the documentation
[ ] I have updated the documentation accordingly
[ ] I have added tests to cover my changes
[X] All new and existing tests passed

@kuisathaverat , can you please check why acceptance failed

This test appears to be failing due to https://github.com/hashicorp/terraform-plugin-sdk/issues/1066 and https://github.com/hashicorp/terraform-plugin-sdk/issues/1073 (seem to be duplicates).
I've https://github.com/elastic/terraform-provider-ec/pull/542 the acceptance tests to run against 1.2.9 in CI until the TF issue is fixed.

@dimuon The acceptance are passing , I did not change,  It looks like was not related to my PR, it have failed at TestAccDeployment_withExtension test


Attempt to bind the result of unwrapping optionals if we're asked to …

…bind subtypes.
When trying to solve for the test case we attempt to simplify a value
member constraint and it fails because we've bound the LHS type
variable to an optional as a result of other constraints involving
other type variables in the equivalence class of this type
variable.
We don't have enough information to directly deduce the non-optional
type directly from other constraints involving this type variable.
This change results in one interesting type checking anomoly. In Swift
3 mode, we now successfully typecheck an expression that we previously
did not. Although the type checking technically makes sense given the
type checking rules we have in place, it can be a bit surprising to
users. Fortunately we emit a warning that calls out the surprising
behavior of considering an expression unused.
Fixes rdar://problem/30271695.

Replace this paragraph with a description of your changes and rationale. Provide links to external references/discussions if appropriate.

Resolves SR-NNNN.

@swift-ci Please smoke test


Tile layer allows setting crossorigin true but doesn't let you set crossorigin property

How to reproduce
Have a tile server that requires credentials

Leaflet version I'm using:1.2.0
Browser (with version) I'm using:Firefox 45 and chrome 50

What behaviour I'm expecting and which behaviour I'm seeing
Need to specify anonymous or use-credentials invalid or empty string is handled as anonymous per https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes
I can fork and make a PR if needed.

Yes, I think a PR would be the best way. That way it's possible to comment and provide some feedback on the approach.
Maybe the easiest way is to let the user use either a boolean or a string for the crossOrigin option.

Yes I was just going to make the option false or string then pass the string in as the crossorigin value


Sp/tuna machine typehint

machine.py - code is made compatible with mypy stds. Varables/functions/input/output/retrun parameters data types are defined.

sorry clicked 'Approved' by mistake, i meant to do 'Request changes' alongside my comments :)


Support drag-and-drop (using Shift) into HTML file, equivalent to Markdown files

Markdown already supports Shift+drag-and-drop for files, with special support for pictures and video (and, potentially, audio).
HTML should support the same functionality: for pictures, insert an img tag, for video a video tag, for audio an audio tag, and for anything else an a tag.

Duplicate of #5772


Accordion: Body Overflow Fix

Accordion: Body Overflow Fix

This update fixes the render issues/inconsistencies with Accordion. The solution was to ensure that Accordion (and the underlying Collapsible) components both used css.js for styles. Also, that overflow: hidden was present for Accordion
Lastly, the blue outline ring was removed from Accordion during the focus state.
Resolves: https://github.com/helpscout/hsds-react/issues/572

Pull Request Test Coverage Report for Build 2112

1 of 1 (100.0%)  changed or added relevant line in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 100.0%

Totals

Change from base Build 2108:
0.0%

Covered Lines:
7814

Relevant Lines:
7814

💛  - Coveralls

@tinkertrain Moved the .css.ts file to the styles/ directory!


Core dump when I use this module

When I try to use this module, it core dump.(nginx version 1.13.11)
hope to receive a reply.
Configure as follows:
http {
resolver <IP_ADDRESS>:53;
upstream tcp_test {
server appa.service.consul:3307 resolve;
}
server {
listen 8888;
#proxy_pass tcp_test;
location / {
proxy_pass http://tcp_test;
}
}
}
Error log as follows:
2018/04/19 17:06:23 [debug] 6880#0: epoll add event: fd:6 op:1 ev:00002001
2018/04/19 17:06:23 [debug] 6880#0: upstream-dynamic-servers: Initial DNS refresh of 'appa.service.consul' in 64ms
2018/04/19 17:06:23 [debug] 6880#0: event timer add: 40429384: 64:3948716
2018/04/19 17:06:23 [notice] 20172#0: signal 17 (SIGCHLD) received from 6880
2018/04/19 17:06:23 [alert] 20172#0: worker process 6880 exited on signal 11 (core dumped)

We switched off of this in favor of jdomain for this same reason. It would core dump and then ips would go stale as DNS resolution was no longer being updated.

By jdomain do you mean this one? https://github.com/wdaike/ngx_upstream_jdomain

Yes, that is the one.

i think i have solve this problem.
would you like try my module or check it out for me?
thanks a lot
https://github.com/zhaofeng0019/nginx-upstream-dynamic-resolve-servers


Rerolled: failOnBuild: false breaks the build process when NoErrorsPlugin is enabled

See #13

Coverage decreased (-2.3%) to 84.211% when pulling 89fe24a983adaa06f4c3ca487683e63469f9b638 on erikahlswede:master into af4b3ae9feb2eed69e8870ce0bd3e9d5183a89be on vieron:master.

So the unfortunate thing with this fix is in the tests,    expect(stats.compilation.errors.length).to.equal(2); will never be set if failOnTrue is true OR false.  If failOnError is true, the runCompilation exits onError.  If failOnError is false, we don't push the errors onto the compilation object.
Not sure what other options there are.

@erikahlswede thanks for taking a stab at this - I tried making a test case for it here: #28 but I'm not seeing the error being thrown. Could we close this in favour of that PR and discuss what may be missing there? :)

Works for me @JaKXz


tuw_geometry: 0.0.7-2 in 'rolling/distribution.yaml' [bloom]

Increasing version of package(s) in repository tuw_geometry to 0.0.7-2:

upstream repository: https://github.com/tuw-robotics/tuw_geometry.git
release repository: https://github.com/tuw-robotics/tuw_geometry-release.git
distro file: rolling/distribution.yaml
bloom version: 0.11.2
previous version for package: null

tuw_geometry
* lint_cmake error fixed
* uncrustify reformated
* minor
* 2D sample class added
* Merge branch 'humble' into ros2
* quaternion support enhanced
* Contributors: Markus Bader

Supercedes https://github.com/ros/rosdistro/pull/36558

@nuclearsandwich Thanks for telling me, I just made the issue report to add tuw_geometry to my team


Add NullField

Reasons for making this change
The JSON Schema type 'null' is currently validated and inferred as a type but shows an error when trying to render. This corrects the issue such that null fields will render nothing, allowing for things like additional help text or use as a temporary placeholder field.
#1232
Checklist

[ ] I'm updating documentation

[ ] I've checked the rendering of the Markdown text I've added

[X] I'm adding or updating code

[X] I've added and/or updated tests
[ ] I've updated docs if needed
[X] I've run npm run cs-format on my branch to conform my code to prettier coding style

[X] I'm adding a new feature

[X] I've updated the playground with an example use of the feature

@faissalMT , thanks for the PR. In #1232, you mention that null fields should render the title only and not the input box -- but this PR makes null fields render nothing entirely. Was this intentional?
Additionally, I'm wondering how this change plays with the changes done in #1213. If this PR makes it such that "null" fields render nothing, then will our current handling of nullable types be unintuitive?
(#1213 makes a field with type ["string", "null"] still render the input box for a string. If "null" fields actually render nothing, could one intuitively expect a field with type ["string", "null"] to actually render a OneOf widget with either an input box or nothing in it?)
Maybe this isn't really a concern though so I'd like to hear your thoughts @faissalMT @warrenseymour

@epicfaace I've not taken the time to clone this locally and experiment, but as far as I can tell, from a code perspective, this shouldn't clash with what I did in #1213, since that does a reasonably extensive check that the field type is [<T>, "null"] or ["null, <T>] and then simply passes the type on as <T>. So I think in the case presented here, type: "null" should be handled as @faissalMT intends.
From a UX perspective, however, I agree that explicitly adding a Null widget may lead to confusion and would inclined to push this sort of decision onto the consumer of RJSF - if they want to explicit enable a Null widget, it should be on them to opt-into by bringing their own Widget, or at least explicitly enabling that option if it is built-in.
Finally, trying to infer/envisage a legitimate use-case for this I looked at a commit that @faissalMT cited in #1232. It looks as if he's just trying to render a piece of inert content in the form. Would a uiSchema entry using a custom widget be a reasonable way of solving that issue?

@epicfaace

but this PR makes null fields render nothing entirely. Was this intentional?

RJSF itself is taking care of handling the rendering of those things (as per the playground example I added), so there was no need for me to implement it explicitly.

I agree that explicitly adding a Null widget may lead to confusion and I would be inclined to push this sort of decision onto the consumer of RJSF

I would expect any native JSON schema type to be renderable by RJSF, if the user doesn't like the handling they can always override it. I think this makes the most sense and is significantly better than an error.

Would a uiSchema entry using a custom widget be a reasonable way of solving that issue?

In that project we have a certain level of preprocessing that generates a uiSchema, however we must provide it with a non-null type at the moment or RJSF will refuse to render our custom widget. This also works well for creating placeholder fields.

@faissalMT thanks, I didn't realize that it was rendering the title/description as well.
It makes sense how rjsf should have some kind of default widget for null types. However, my primary concern is this: when you make a field such as helpText with type: null, then you would expect helpText: null to be in the formData. However, in this case, there is no key for helpText in the formData.

What if we make helpText required? Then we get stuck with an "is a required property" error, which is only resolved when you actually manually set helpText: null in the formData.

Perhaps the solution for this is to make sure that a NullWidget calls the onChange handler with null, so that helpText: null is actually set in the formData. I'd be ready to merge this PR if we decide it makes sense to do that.
I don't know if, as @warrenseymour noted, this entirely fits the use case to "render a piece of inert content in the form". Do we want to clutter our formData by adding in extra null keys when we just want to add in additional content in the form? Perhaps the real solution fo this is in the uiSchema though.

@epicfaace

Perhaps the solution for this is to make sure that a NullWidget calls the onChange handler with null

I like this solution and have committed it. An alternative could also simply be to use a default value, but that seems more tacky to me.

Do we want to clutter our formData by adding in extra null keys when we just want to add in additional content in the form? Perhaps the real solution fo this is in the uiSchema.

I feel like modifying uiSchema to work with non-existent fields as if they are existing fields could quickly get ugly. The uiSchema may serve to further expand on the details of this content (such as use of a custom widget etc), but items in the uiSchema should always correspond to a real field or I believe some fundamental assumptions this project has made are broken.

Bump?

@faissalMT there's just one thing, thanks for the reminder. I was hesitant to merge this because unlike other widgets, this is the only widget that automatically mutates the formData without any user input (by calling onChange on load). I'm not sure if that could potentially cause problems, or if it is okay -- what do you think?

@epicfaace The system doesn't really have anything that would distinguish between actors and this is a really simple manipulation so I don't think there'll be any issues.

Okay, thanks. What do you mean by "the system doesn't really have anything that would distinguish between actors"?

@epicfaace I mean that nothing outside the widgets themselves in RJSF has implemented any assumptions about what kind of actor is entering the data (although they may have been programmed with that assumption), there would be nothing preventing a widget being set by fetched data for example. Our project currently implements a number of automatically filled out fields and it really isn't an issue for individual widgets acting on their own data. RJSF only cares about which widget is entering the data for which form field, and we're not breaking the assumption that a widget will only change the data of its field.

Sounds good, thanks for the explanation.

Should NullField have proptypes of the other fields, such as in:
https://github.com/mozilla-services/react-jsonschema-form/blob/ab0be5ec42939fc699a60a3779d743ea595ad496/src/components/fields/StringField.js#L60

@epicfaace I didn't realise we had a central proptypes object for fields, I've changed it now.

Thanks! Looks good.

When will this changes be released?

@epicfaace   Will this PR eventually be merged or will the issue with null as default value be resolved in an entirely different way?

@rmdevos this PR has already been merged -- however, it only addresses fields with type: null, not necessarily fields with default: null.


[RFR] Improved -mui-keyframe-pct function to correctly handle units and types

Fix #12 and #13.

Awesome, that looks a lot cleaner.


Read/Write indents in a cell with text

I have some text value cells that are using the indent feature to imply parenting for nodes.  Is there a way to read and write the indentations?  This is an absolute must for being able to use this library.  If this isn't a current feature, could someone point me to the code so that I might add this feature.  I tried adding the 'cellStyles' option for the read, but that didn't change the cell's 's' value.
Thanks,
Scott

I found the function that is dropping the indent values.  It's in parse_cellXfs under the alignment tag.  If I add this feature then will you guys accept a PR?  I'm still not sure about the writing out of the xlsx files, but at least I could fix the reading.

If you have a sample file we can take a look and figure out the best approach.

Any update on this? I too have to read a sheet using indenting to show parents.

Any update on this?  We are also running into this.

Cell indents and other cell styling features are covered in our Pro builds.  We cannot say when they will be merged here, but it will be after v1.0.0


Compatibility with Hspec 2.10

Hello,
I just started getting build errors with tasty-hspec, as soon as hspec/hspec-core 2.10 was released this morning. Would you be able to update the  bounds on Hackage to hspec/hspec-core < 2.10?
Thanks!

@LaurentRDC Which versions did you get build errors with? I can't actually find any build plans with hspec-2.10, except with tasty-hspec-<IP_ADDRESS>, and those look OK.

I am so sorry, I forgot I set allow-newer: all in my project file...
I apologize for the confusion.

Thanks; I've uploaded a new version with hspec-2.10.0 compatibility: https://hackage.haskell.org/package/tasty-hspec-<IP_ADDRESS>


Wrong endianness on native messaging response?

General information

Operating system + version: n/a
Browser + version: n/a
If installed an official release, put a release version: n/a
If built from sources, put a commit id ($ git describe --always): b9b9173
Browserpass extension version as reported by your browser: n/a

I played around with the native messaging protocol for a little bit and noticed something rather odd about the way browserpass sends its responses back to the browser.
Normally, the first 4 bytes of the message are supposed to be the length of the message, represented in Little Endian. That means a message could look like this:
$ xxd -g 1 request.hex
00000000: 00 00 00 2d 7b 22 61 63 74 69 6f 6e 22 3a 20 22  ...-{"action": "
00000010: 73 65 61 72 63 68 22 2c 22 64 6f 6d 61 69 6e 22  search","domain"
00000020: 3a 22 77 77 77 2e 67 69 74 68 75 62 2e 63 6f 6d  :"www.github.com
00000030: 22 7d                                            "}

Notice the first four bytes, 00 00 00 2d. Since the length of this message payload is 45 (=0x2D) bytes, we put the length in the first 4 bytes of the request.
Now look at the response from browserpass:
$ ./browserpass < request.hex > response.hex
$ xxd -g 1 response.hex
00000000: 17 00 00 00 5b 22 67 69 74 68 75 62 2e 63 6f 6d  ....["github.com
00000010: 5c 5c 63 68 72 62 6f 65 22 5d 0a                 \\chrboe"].

The first bytes are 17 00 00 00. Isn't that the wrong way around? I'm pretty sure it should be 00 00 00 17. Chrome doesn't complain about it in any way, so it can't be that wrong I guess. Is this a bug that Chrome just doesn't care about or am I missing something else here?

Isn't 00 00 00 2d actually Big Endian? I belive 2d 00 00 00 is Little Endian representation of 45 🙂
So I'd rather ask, why browserpass accepts Big Endian and responds with Little Endian? :thinking:
...is preceded with 32-bit message length in native byte order - on Intel CPU the native order is Little Endian, so.. the response is correct, but the input seems wrong. How come it even works? :smile:

Put fmt.Println(n) in browserpass.go:49 to print the parsed number, and you will see that when you pass 00 00 00 2d, the parsed value is 754974720 - because the parser expects Little Endian, and 00 00 00 2d is Big Endian format. The n of 754974720 is big and covers your JSON entirely, that's why it is accepted by browserpass.
However, in order to correctly compose a message for browserpass, you need to make two adjustments.

Use Little Endian format, i.e. 2d 00 00 00.
Add \n (0a) to the end of the message, which also increases the size from 2d to 2e (try without this step, see what happens)

In other words, this is the correct message:
❯  xxd -g 1 request.hex.bin
00000000: 2e 00 00 00 7b 22 61 63 74 69 6f 6e 22 3a 22 73  ....{"action":"s
00000010: 65 61 72 63 68 22 2c 22 64 6f 6d 61 69 6e 22 3a  earch","domain":
00000020: 22 77 77 77 2e 67 69 74 68 75 62 2e 63 6f 6d 22  "www.github.com"
00000030: 7d 0a                                            }.

❯  ./browserpass < request.hex.bin
46
j["personal/github.com/maximbaz"]

46 is a proof that 2e 00 00 00 was correctly parsed, and you see the correct output.
Does that answer the question @chrboe? 🙂
Thanks for the question, it was interesting to investigate 🙂

Isn't 00 00 00 2d actually Big Endian?

Right, I got that mixed up :) The question still remains the same though.

The n of 754974720 is large and covers your JSON entirely, that's why it is accepted by browserpass.

Well it all seems logical now :D Thanks for investigating/explaining.

Just wanted to say, chrboe/native.pl is an awesome tool, helps a lot at debugging the host application 🙂


Compression Utility - Table name started by a number

Hi guys,
I'm sorry but i can't run the compression utility on tables that the name starts with a number, for example '8ball...'.
I'm getting this error:
(u'ERROR', u'42601', u'syntax error at or near ".8"', u'27', u'/home/ec2-user/padb/src/pg/src/backend/parser/parser_scan.l', u'699', u'yyerror', u'', u'')
Is there any way this can be quick fixed?
Thanks a lot

This should work fine if for each table that starts with a number, you issue a command which includes "—analyze-table ". Can you please verify this? In the meantime I'll be looking to see if there's a reason we specifically exclude tables such as this. Generally speaking this is a bad idea in that there will be databases that fully don't support number leading chars, and also will require that all SQL double quote the table name, which isn't very user friendly.
Thx,
Ian
From: GitHub Notifications<EMAIL_ADDRESS>Reply-To: awslabs/amazon-redshift-utils<EMAIL_ADDRESS>Date: Friday, 20 January 2017 at 10:21
To: awslabs/amazon-redshift-utils<EMAIL_ADDRESS>Cc: Subscribed<EMAIL_ADDRESS>Subject: [awslabs/amazon-redshift-utils] Compression Utility - Table name started by a number (#142)
Hi guys,
I'm sorry but i can't run the compression utility on tables that the name starts with a number, for example '8ball...'.
Is there any way this can be quick fixed?
Thanks alot
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHubhttps://github.com/awslabs/amazon-redshift-utils/issues/142, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AGC8cGj00BiLEboDGsdSxkLGh-v9zQ3eks5rUIqygaJpZM4LpJgz.
Amazon Web Services UK Limited. Registered in England and Wales with registration number 08650665 and which has its registered office at 60 Holborn Viaduct, London EC1A 2FD, United Kingdom.

Hey Ian,
Thank you for your time and help.
I'm sorry but if i run: "—analyze-table 8ball..." It also fails.
I understand your point but renaming these tables at the moment is not possible for us.

Any news regarding this @IanMeyers ?

As far as I can tell, this is fixed in version .9.2.5. There were a few outstanding issues with table double quoting which are fixed now.
meyersi$ python analyze-schema-compression.py --db master --db-user master --db-host localhost --db-port 5439 --analyze-table 8ball --output-file /Users/meyersi/Temp/8ball.sql --force true
Password <master>:
-- [17348] Connected to localhost:5439:master as master
-- [17348] Analyzing Table '8ball' for Columnar Encoding Optimisations with 1 Threads...
-- [17348] Analyzing 1 table(s) which contain allocated data blocks
-- [17348] Table 8ball contains 1 unoptimised columns
-- [17348] Using Force Override Option
-- [17348] Analyzing Table '8ball'
-- [17348] Column Encoding will be modified for public.8ball
-- [17348] No encoding modifications required for public.8ball
begin;
lock table public."8ball";
create table public."8ball_$mig"(
"columna" varchar(100)   encode raw
)
;
insert into public."8ball_$mig"  select * from public."8ball";
analyze public."8ball_$mig";
alter table public."8ball" rename to "8ball_20170208_BAeD9mq6ro_$old";
alter table public."8ball_$mig" rename to "8ball";
commit;
-- [17348] Performed modification of 0 tables
-- [17348] Processing Complete

Hi @IanMeyers i confirm that is working.
Thanks alot for the help!


[tracking] [OTBN.H.SEC_WIPE_*] State wiping

This is a tracking issue covering all aspects of specification and implementation for the feature. Please link to/comment in separate issues for subtasks.
This issue tracks collective progress on the features OTBN.H.SEC_WIPE_FULL, OTBN.H.SEC_WIPE_DMEM, OTBN.H.SEC_WIPE_IMEM, and OTBN.H.SEC_WIPE_INTERNAL.

[x] Document/specify feature in OTBN documentation: https://github.com/lowRISC/opentitan/issues/6955
[x] Implementation: #7469 (internal wipe)
[ ] Design Verification
[ ] DIF/host SW

Note that the PR that introduces scrambling already contains the RTL for requesting new scrambling key/nonce though it's untested (otbn_scrambled_ctrl.sv in https://github.com/lowRISC/opentitan/pull/7020). So for the secure wipe of IMEM/DMEM all that is left to do is create the register interface and hook it up to otbn_scramble_ctrl plus check it works!

DV is underway for this, any remaining work there will be captured by tracking for V2


Question: Can syntax highlighting be invoked on dynamic content?

It seems that Slate uses rouge to highlight syntax that is defined in markdown at build time.
If I add code in response to an Ajax call, it does not get highlighted by default. While I could go the route of including highlight.js and invoking highlight code in a script, I was wondering if this functionality already exists in Slate. If not, would there be any demand for it? It seems useful for the "Try-It-Out" feature that appears in Swagger-UI, for example.

Ah, yea, it doesn't exist unfortunately! Since most Slate users don't have dynamically updating text, it probably isn't the kind of feature we'd support, but it's definitely the kind of thing that would be great to have a Wiki article about, if you've managed to figure out a solution.

That's fine (I figured that was the case) and thank you. I did go the route of using highlight.js for the Try-It-Out feature, which is a pretty standard approach for applications of this nature, and probably not too worthy of a wiki article, though a good thing for Slate users to know just in case the lack of  built-in highlighting support for dynamic text keeps them from implementing a Try-It-Out feature or dissuades them from using Slate in the first place.


Translate new strings into Greek version 1.6.0

Check if this PR fulfills these requirements:

[x] My changes respect the Kodi add-on development rules
[x] I have read the CONTRIBUTING document.
[x] I made sure there wasn't another one Pull Requests opened for the same update/change
[ ] I have successfully tested my changes locally

Types of changes

[ ] New feature (non-breaking change which adds functionality)
[ ] Feature change (non-breaking change which change behaviour of an existing functionality)
[x] Improvement (non-breaking change which improve functionality)
[ ] Bug fix (non-breaking change which fixes an issue)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Description

In case of Feature change / Breaking change:
Describe the current behavior

Describe the new behavior

Screenshots (if appropriate):

Hi,
are missing:
30006, 30049
30050, 30051
30086, 30128
can you add it?

Hi,
are missing:
30006, 30049
30050, 30051
30086, 30128
can you add it?

Will do for the next version.


vagrant: Remove reference of libvirt to avoid confusion

As confirmed, dev vagrant box doesn't work with libvirt, hence it's
better to remove related reference to avoid confusion
Signed-off-by: Tam Mach<EMAIL_ADDRESS>Testing
By default, vagrant will use virtualbox as mentioned here

By default, VirtualBox is the default provider for Vagrant.

runtime
vagrant@runtime1:~/go/src/github.com/cilium/cilium$ cilium status
KVStore:                 Ok         Consul: <IP_ADDRESS>:8300
Kubernetes:              Disabled
Cilium:                  Ok         OK
NodeMonitor:             Listening for events on 2 CPUs with 64x4096 of shared memory
Cilium health daemon:    Ok
IPAM:                    IPv4: 2/65535 allocated from <IP_ADDRESS>/16, IPv6: 2/4294967295 allocated from f00d::a0f:0:0:0/96
BandwidthManager:        Disabled
Host Routing:            Legacy
Masquerading:            IPTables
Controller Status:       18/18 healthy
Proxy Status:            OK, ip <IP_ADDRESS>, 0 redirects active on ports 10000-20000
Hubble:                  Ok              Current/Max Flows: 547/4096 (13.35%), Flows/s: 36.67   Metrics: Disabled
Cluster health:          0/1 reachable   (2020-10-27T23:57:15Z)
  Name                   IP              Node        Endpoints
  runtime1 (localhost)   <IP_ADDRESS>       reachable   unreachable

docs/vagrant: Remove reference of libvirt to avoid confusion

vagrant cluster
vagrant@k8s1:~/go/src/github.com/cilium/cilium$ cilium status
KVStore:                Ok   etcd: 1/1 connected, lease-ID=29c6756c811d5b52, lock lease-ID=29c6756c811d5b54, has-quorum=true: https://<IP_ADDRESS>:2379 - 3.4.13 (Leader)
Kubernetes:             Ok   1.19 (v1.19.2) [linux/amd64]
Kubernetes APIs:        ["cilium/v2::CiliumClusterwideNetworkPolicy", "cilium/v2::CiliumLocalRedirectPolicy", "cilium/v2::CiliumNetworkPolicy", "core/v1::Namespace", "core/v1::Node", "core/v1::Pods", "core/v1::Service", "discovery/v1beta1::EndpointSlice", "networking.k8s.io/v1::NetworkPolicy"]
KubeProxyReplacement:   Partial
Cilium:                 Ok        OK
NodeMonitor:            Listening for events on 2 CPUs with 64x4096 of shared memory
Cilium health daemon:   Ok
IPAM:                   IPv4: 11/255 allocated from <IP_ADDRESS>/24, IPv6: 11/65535 allocated from fd00::/112
BandwidthManager:       Disabled
Host Routing:           Legacy
Masquerading:           IPTables
Controller Status:      82/82 healthy
Proxy Status:           OK, ip <IP_ADDRESS>, 3 redirects active on ports 10000-20000
Hubble:                 Ok              Current/Max Flows: 4096/4096 (100.00%), Flows/s: 52.97   Metrics: Disabled
Cluster health:         2/2 reachable   (2020-10-28T00:11:32Z)
vagrant@k8s1:~/go/src/github.com/cilium/cilium$

Should we remove the other references to VAGRANT_DEFAULT_PROVIDER from the source code?

Good point, thanks for highlighting this. I should keep in mind that easy change normally leads to easy miss :sweat:

test-me-please

1.12 failed due to below reason, I think it's unrelated to changes as similar failur for other run as well.
Expected command: kubectl exec -n kube-system log-gatherer-c5vrp -- curl --path-as-is -s -D /dev/stderr --fail --connect-timeout 5 --max-time 20 tftp://<IP_ADDRESS>:32613/hello -w "time-> DNS: '%{time_namelookup}(%{remote_ip})', Connect: '%{time_connect}',Transfer '%{time_starttransfer}', total '%{time_total}'"
To succeed, but it failed:
Exitcode: 1
Err: exit status 1
Stdout:

Stderr:
 	 error: unable to upgrade connection: Authorization error (user=kube-apiserver-kubelet-client, verb=create, resource=nodes, subresource=proxy)

retest-net-next

There's no need to backport this to older branches since it only affects developers.


Limit Traefik dashboard to a single (sub-)domain

Hi,
@emilevauge asked me, whether I could open another issue (feature request) to handle my questions separatly (Link).
I have the issue that i can reach Traefik via each domain (1. - 3.) with url http://<domain>:8080/, can I limit it to a single domain? It would be nice for security reasons.
My Workbench:

Docker version 1.12.3
Docker-Compose version 1.9.0, build 2585387
Traefik v1.1.0 / camembert (Docker image: containous/traefik:latest)

I have three domains:

one for a personal blog
one for a shop
one for Traefik

traefik.toml:
logLevel="DEBUG"
defaultEntryPoints = ["http", "https"]

[entryPoints]
  [entryPoints.http]
    address = ":80"
    [entryPoints.http.redirect]
      entryPoint = "https"
  [entryPoints.https]
    address = ":443"
    [entryPoints.https.tls]

[acme]
email =<EMAIL_ADDRESS>storageFile = "/etc/traefik/acme.json"
entryPoint = "https"
onDemand = true
onHostRule = true
## Comment out for production environment!
caServer = "https://acme-staging.api.letsencrypt.org/directory"

[docker]
domain = "admin.example.com"
endpoint = "unix:///var/run/docker.sock"
watch = true

[web]
  address = ":9443"
  [web.auth.basic]
  users = ["admin:$apr1$bFhdoJ2K$rM8Oxwy8fYfIJZfuL4iSp0"]

docker-compose.yml:
version: "2"
services:
  traefik:
    command: --web --docker
    container_name: traefik
    image: containous/traefik:latest
    labels:
      - "traefik.frontend.rule=Host:admin.example.com"
    ports:
      - "80:80"
      - "443:443"
      - "8080:8080"
    restart: always
    volumes:
      - "/opt/traefik/ssl/acme.json:/etc/traefik/acme.json"
      - "/opt/traefik/traefik.toml:/etc/traefik/traefik.toml"
      - "/var/run/docker.sock:/var/run/docker.sock"

  container1:
    image: richarvey/nginx-php-fpm:php7
    labels:
      - "traefik.backend=oneExample"
      - "traefik.enable=true"
      - "traefik.frontend.entryPoints=http,https"
      - "traefik.frontend.rule=Host:one.example.com"
      - "traefik.port=80"
      - "traefix.port=443"
      - "traefik.weight=1"
    volumes:
      - "/opt/repositories/oneexample/www-root/:/var/www/html"

  container2:
    image: richarvey/nginx-php-fpm:php7
    labels:
      - "traefik.backend=twoExample"
      - "traefik.enable=true"
      - "traefik.frontend.entryPoints=http,https"
      - "traefik.frontend.rule=Host:two.example.com"
      - "traefik.port=80"
      - "traefix.port=443"
      - "traefik.weight=1"
    volumes:
      - "/opt/repositories/twoexample/www-root/:/var/www/html"

Thank you in advance.

Might be useful, but how I handle this is:

Create a separate endpoint on e.g. 9001

--entryPoints='Name:https-admin Address::9001 TLS:/etc/traefik/customssl/pfssc.crt,/etc/traefik/customssl/pfssc.key'
or in TOML
[entryPoints.https-admin]
address = ":9001"
[entryPoints.https-admin.tls]

Change port bindings on your compose for the web admin port to be internal, and add another port for the new endpoint.
Add label to use the new entrypoint

traefik:
    command: --web --docker
    container_name: traefik
    image: containous/traefik:latest
    labels:
      - "traefik.frontend.rule=Host:admin.example.com"
	  - "traefik.frontend.entryPoints=https-admin"
    ports:
      - "80:80"
      - "443:443"
      - "8080"
      - "9001:9001"
    restart: always
    volumes:
      - "/opt/traefik/ssl/acme.json:/etc/traefik/acme.json"
      - "/opt/traefik/traefik.toml:/etc/traefik/traefik.toml"
      - "/var/run/docker.sock:/var/run/docker.sock"

Not sure if this is a supported scenario, but it works for me 😄
Is this the same thing you're trying to do?  I do it this way so I can also add auth / other services which shouldn't be "public" but still using same infra.

Solution works, but ajax cal to refresh dashboard are counted in dashboard

Why not be able to do something like this in TOML...
[web]
address = "sub.domain.tld:8080"

I want to limit dashboard access also, so I start with adding to my traefik.toml
[entryPoints.traefik]
address = ":8080"
rule = "Host:admin.example.com"
[entryPoints.traefik.tls]
[entryPoints.traefik.auth.basic]
users = ["admin:XXXXXXXXXXXXXXXXXXXX"]

But I encounter two issues:

rule to limit host seems to be ignored
it's not possible to get a valid certificat using let's encrypt (cause Traefik crash if I add 'entryPoint = ["https","traefik"]' on ACME config)

So I solve my problem by using a reverse proxy to access dashboard and stopping to publish 8080 port.
Traefik entrypoints in my traefik.toml now look like
[entryPoints.traefik]
address = ":8080"
[entryPoints.traefik.auth.basic]
users = ["admin:XXXXXXXXXXXXXXXXXXXX"]

And traefik service into my compose file is something like that
services:
  proxy:
    image: traefik
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock:ro"
      - "/path_to/traefik.toml:/traefik.toml"
    ports:
      - "80:80"
      - "443:443"
    networks:
      - webgateway
    labels:
      traefik.enable: "true"
      traefik.port: "8080"
      traefik.frontend.rule: "Host:admin.example.com"

Hope it's help.

@cypx rule is not a option for entrypoint: http://docs.traefik.io/configuration/entrypoints/
In theory, this works:
[entrypoints]
  # ...

  [entrypoints.dashboard]
    address=":8080"

  [entrypoints.api]
    address=":8081"

  # Activate API and Dashboard
  [api]
    entrypoint="api"

[file]
  [backends]
    [backends.backend1]
      [backends.backend1.servers.server1]
        url = "http://<IP_ADDRESS>:8081"

  [frontends]
    [frontends.frontend1]
      entrypoints = ["dashboard"]
      backend = "backend1"
        [frontends.frontend1.routes.route01]
        rule = "Host:admin.example.com"

@ldez
Good to know, thanks!

@ldez thanks for the example it works perfectly together with basic auth as well.
I think this solution could be further improved as it has few issues:

additional entrypoint is defined (i do not really like that on any of my front end urls going to this port shows the dashboard)
even if we set up basic auth there is no TLS so basic auth goes in clear text

So I tried to improve it and moved the entrypoint port 8443 and enabled tls on that entrypoint. This works but as I do not have a valid cert (it gives the default traefik cert) it is still not perfect.
As I have let's encrypt set up for the https entrypoint I tried to use the [api] with the normal https entry point but unfortunately it screwed up the routing somehow as all the request ended up with the api dashboard.
My config and the two docker-compose file looked like this:
defaultEntryPoints = ["https","http"]

[entryPoints]
  [entryPoints.http]
  address = ":80"
    [entryPoints.http.redirect]
    entryPoint = "https"
  [entryPoints.https]
  address = ":443"
    [entryPoints.https.tls]

[api]
entrypoint = "https"

[retry]

[docker]
endpoint = "unix:///var/run/docker.sock"
domain = "mydomain.org"
watch = true
exposedbydefault = false

[acme]
email =<EMAIL_ADDRESS>storage = "acme.json"
entryPoint = "https"
onHostRule = true
onDemand = false
  [acme.httpChallenge]
  entryPoint = "http"

The docker compose file to start the traefik container was:
version: '2'

services:
  traefik:
    image: traefik
    restart: always
    ports:
      - 80:80
      - 443:443
    networks:
      - traefikext
    labels:
      - traefik.frontend.rule=Host:traefik.mydomain.org
      - traefik.enable=true
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - /opt/traefik/traefik.toml:/traefik.toml
      - /opt/traefik/acme.json:/acme.json
    container_name: traefik

networks:
  traefikext:
    external: true

A test container docker compose file to create a second frontend for testing was:
version: '2'

services:
  whoami:
    image: emilevauge/whoami
    networks:
      - traefikext
    labels:
      - traefik.backend=whoami
      - traefik.frontend.rule=Host:whoami.mydomain.org
      - traefik.enable=true

networks:
  traefikext:
    external:
      name: traefikext

With this config even if I went to whoami.mydomain.org I ended up with the api dashboard.
So, is there a way to use the https entrypoint (with let's encrypt support) with the api?

@Cajga: I tried your configuration and also ran into the routing issues you described (all whoami.mydomain.org ending up with the api dashboard).
However, if I set the api entryPoint to the default (traefik), it worked:
[api]
  entryPoint = "traefik"
  dashboard = true

traefik.mydomain.org now routes to the Dashboard (with LetsEncrypt https) and whoami.mydomain.org to the whoami container.
(Maybe also add the traefik.port=8080 label to the traefik container for explicit port configuration)

https://docs.traefik.io/configuration/backends/web/#deprecation-compatibility

Just in case anybody comes across this issue and simply wants to run the Traefik dashboard under a subdomain without having to use a port and securing it with basic authentication, the probably easiest way is to just hide it behind a nginx proxy.
A simple docker compose snippet in a docker environment could look like this:
traefik_dashboard:
    image: dhswt/nginx-basic-auth:1.3
    environment:
      - LISTEN_PORT=8080
      - HTPASSWD=foo:$$apr1$$Ox/eFVn5$$HHIeCQecIRD1yjP7RC2891
      - FORWARD_HOST=traefik
      - FORWARD_PORT=8080
    deploy:
      labels:
        - 'traefik.port=8080'
        - 'traefik.frontend.rule=Host:traefik.example.net'

Make sure to escape the dollar signs by an additional dollar sign. The image dhswt/nginx-basic-auth:1.3 already comes with a preconfigured nginx server. It is possible to customize a stock nginx docker image as well, of course.
The environment variable FORWARD_HOST is pointing to the Traefik docker service. In this case it's reachable by the hostname traefik and needs to be adapted accordingly. It might be necessary to set the hostname key in the configuration of the Traefik docker service.

The additional Nginx Proxy is not necessary.
Here my working example:
version: "3"

services:
  traefik:
    image: traefik
    #command: --consul --consul.endpoint=consul:8500
    #command: storeconfig --consul --consul.endpoint=consul:8500
    networks:
      proxy:
        aliases:
            - traefik
    ports:
      - 80:80
      - 443:443
      #- 8080:8080
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - traefikdata:/etc/traefik/
    deploy:
      labels:
        - "traefik.port=8080"
        - "traefik.docker.network=proxy"
        - "traefik.frontend.rule=Host:proxy.mydomain.at"
        - "traefik.backend=traefik"
        - "traefik.frontend.entryPoints=http,https"
        - "traefik.frontend.auth.basic=foo:bar"
      replicas: 3
      #replicas: 1
      placement:
        constraints: [node.role == manager]
      update_config:
        parallelism: 1
        delay: 45s
        monitor: 15s
      restart_policy:
        condition: on-failure
        delay: 5s
        max_attempts: 10
        window: 60s

volumes:
  traefikdata:
    driver: local-persist
    driver_opts:
      mountpoint: /data/docker/proxy

networks:
  proxy:
    external: true

I figured out using the following configuration:
traefik.toml:
[entryPoints]
  [entryPoints.http]
    address = ":80"

    [entryPoints.http.redirect]
      entryPoint = "https"
      permanent = true

  [entryPoints.https]
    address = ":443"
    compress = true
    [entryPoints.https.tls]

  [entryPoints.traefik]
    address = ":9987"
    compress = true

    [entryPoints.traefik.auth.basic]
      users = ["123:456"]

[api]
  entryPoint = "traefik"
  dashboard = true

docker-compose.yml:
version: '3'

services:
  traefik:
    ......
    expose:
      - 9987
    labels:
      - "traefik.docker.network=traefik"
      - "traefik.enable=true"
      - "traefik.basic.frontend.rule=Host:traefik.birkhoff.me"
      - "traefik.basic.port=9987"
      - "traefik.basic.protocol=http"
    ......

With all suggested fixes and toml configurations, i'm still being redirected from http://proxymanager.domain.tld to https.
If i disable the http -> https redirect, it does work. But i do want a redirect from http to https..