fix: updates for PHP8 compatibility

Hi Robin
I've made some adjustments for PHP8 compatibility, and fixed some deprecations that arise from upgrading phpunit.
Some things, particularly what I've done with versions in the composer.json might not be the way you want to do it, so I suggest you have a look and see what you think.
Also, my changes aren't compatible with 7.1 and 7.2 - I haven't removed them from the version constraint - it depends whether you want to carry on supporting them or not...
A.

PHPUnit 8.5.13 supports PHP 8.0 now, I think it does not require to upgrade PHPUnit to 9.x version.
After testing in local, I think it only needs to change php and phpbench/phpbench requirements.
     "require": {
-        "php": "^7.1"
+        "php": "^7.1|^8.0"
     },
     "require-dev": {
         "phpunit/phpunit": "^8.5",
-        "phpbench/phpbench": "^0.17",
+        "phpbench/phpbench": "^1.0.0-alpha3",
         "symfony/phpunit-bridge": "^5.1"
     }

Thank you @andycowan for this pull request! And thanks @bepsvpt for doing an initial review by running it locally, this saves me a lot of time!
@andycowan there are some minor changes though. If you could apply them, this PR is good to merge.

Superseded by #28


Small issues

Should all references to "arrays" really be to "header stacks"?

The discussion of direction conventions in the Justification section seems too early: constructor parameters and action data haven't been defined yet. I think @jafingerhut added this recently. But maybe it should be moved elsewhere.

Do we want to say that there is no user-facing string type?

I cannot think of anything other than "header stacks" in the current P4-16 language that "arrays" can refer to, so "header stacks" is more clear.
No strong opinion on the others, but they both seem fine to me.  I'm not trying to avoid blame if it is due, but I haven't done anything nearly so useful for p4.org as write entire sections of the spec yet :-)

The rest of these are trivial. Closing this.


[Android] Update the comment about shared mode

Make it clear that the developer can use XWalkView with the old way. But
to take the advantage of shared mode, the XWalkActivity is necessary.

@axinging @fujunwei


WebStorm becomes entirely unresponsible if there are a lot of analyzer errors

I just copied a few dozen smallish java files into my project and renamed them to *.dart, now WebStorm is entirely unresponsible since > 5 minutes.
I think the analyzer should analyzing files if there are too many errors and only try to analyze them again after they are modified.
After about 10min WebStorm died with an out-of-memory error.

Hung WebStorm is more likely a WebStorm problem than the SDK's. Logs and auto-saved thread dumps may help (Help | Show Log).

Not sure if this contains all relevant files.
idea_logs.zip

Do you remember how many errors were generated by the Analysis Server? How many files with errors did you have? How many errors per file?

Maybe you can share a project to reproduce?

I wasn't able to work on this project again. It might be related with some general analyzer slowness that happened with Dart versions I used back then. I'll still try if I can reproduce.

@zoechi We have found one problem that could cause slowness when there are thousands of errors. It is already fixed in IntelliJ IDEA 2017.1 (171.3780.107), but unfortunately not yet fixed in WebStorm 2017.1 (171.3780.79). Dart plugin version doesn't matter, the problem was in the IntelliJ Platform. WebStorm 2017.1.1 EAP with the fix is expected later this week.
Also, as I can guess from your logs, you were working with more than one projects open and at some point got OutOfMemory and increased heap size to 2Gb. Not sure about this case, but in some cases too large heap decreases non-heap memory and may cause OOM or other memory problems as well. Normally heap within 1Gb is enough even for large projects. If you continue getting memory problems try to get memory snapshot and report it to JetBrains. In case of general slowness CPU snapshot may be of help as well. See also our Reporting Performance Problems document.
I'm going to close this issue here. IDE should remain responsive regardless of the Analysis Server. If you face the problem again please report it to YouTrack with logs/thread dumps/maybe CPU or memory snapshots.

@alexander-doroshko The default memory settings always caused problems, therefore changed it to what I have now. My machine has plenty of RAM and there shouldn't be any OOM.
Any hints for optimizations are welcome though.


[8.x] Added tg:// protocol in "url" validation rule

Right now urls for Telegram Desktop application are not passing URL validation rule. So, this PR just adding tg:// protocol to this validation rule.

@taylorotwell
Hi! What you think about this soooo long regex? Maybe we need to refactor it?..
I think there is could be array with protocols to improve readability.

@zlodes
He is right


[Question] Translation

Hi all,
we are using phosphor in our application and we are using i18next.js for translations.
We are wondering if there is any way to translate labels for menu items, and commands in phosphor menus?
Thanks
Nemanja

You should be able to translate them yourself at the point you provide the label for the command.


FR: Option to make command from given "Update " action

We can update every single field via context menu > manage fields > choosing the given field.
It would be cool to have the possibility to choose a field/update-action and tie it to a new command.
Much like Templater allows to assign commands/hotkeys to templates.
This could then be used, e.g., to construct a macro in QuickAdd which would step-by-step introduce update-action for selected fields. Great for adding new tasks-notes.

Hi good idea, this will be included in the next releaase

done: 0.3.6

how does it work to create a command to update a field?
When clicking on "set a command for this field" is just create the command to add the field to a note.
For example I have a field to change status of a note: draft, in progress, complete and I would like a command that prompt the update field sub-menu directly.

Yeah I have the same problem.
Every note in my vault has a status.
I just want to hit my hotkey and "change the value of status"
(using the suggester that normally comes up when clicking arrow down next to status in my properties pane)
This would be amazing! Thanks for this great Plugin btw. I have been using all day!


Documentation issue

Hello, I'm in the proces of writing Typescript definitions for version 2.0 .  I've primarily been basing myself on the documentation and I think I found an error in the documentation.
In the global options section the global legend options contain an option called labels. After the labels option a bunch of options follow prefixed by the world label but without a dot. One of these options is 'labelsgenerateLabels'. In the Polar Area chart options section, an option called 'legend.labels.generateLabels' is found which I assume references the same option in the global configuration. I'm unsure as to what the correct notation is and why the option is repeated in the polar area chart specific options if it already appears in the global options.
EDIT: I also found that in the polar area options 'animateScale' and 'animateRotate' are defined and in the pie chart extra options 'animation.animateScale' and animation.animateRotate' are defined. I'm unsure if this is an error or intentional.
EDIT: the text and example in the pie chart section both mention 'percentageInnerCutout' while the pie chart options only mentions 'cutoutPercentage'. I'm guessing this is probably a bug as well.

@DaanDeMeyer the correct config is
config: {
  legend: {
    labels: {
      generateLabels: function() ...
    }
  }
}

@etimberg Could you also confirm that it is
config: {   animation: {     animateRotate: boolean,      animateScale: boolean   } }
for both polar area and pie/doughnut charts?

Those should just be at the top level. Very confusing! so we should clean that up and move them.

It seems like this is not just a documentation issue, the actual code for doughnut charts also expects animateRotate and animateScale to be fields of animation while the polarArea chart expects them at the top level. Furthermore, I can get animateRotate to work with Polar Area charts but not with Doughnut charts.

I was looking at https://github.com/nnnick/Chart.js/blob/master/src/controllers/controller.polarArea.js#L167
Where it seems to use the values at the top level.

The animate rotate seems to work in the fiddle. When the page first loads, the chart rotates in

But I've put the animateRotate to false, so the chart shouldn't perform the rotating animation when the page loads. At least that seems to me how animateRotate should work based on the name.

My bad, thought you were trying to set it true. Yeah, that's a bug. I'll try and look into it

Fixed in the animateRotate === false bug and made the options consistent in #2342

Looking through the latest docs, labelsgeneratelabels has been fixed along with the percentageInnerCutout option as well


Let's improve alert notification text.

In the Ruuvi App the message "Temperature is too low/high" isn't very informative.
Would it be possible to replace it with something like
"Temperature is under /over  "?

1.6.13

Added translation strings for FI @andreevdenis

Merged. Will include with next version.

QA passed


How to use the program.

Hello. Help understand the use of the program. I have a native .so library. I know how its internal method is called from apk and what parameters need to be passed. From the examples it’s not clear how to use the program with a third-party library. What do I need to do. I hope for help. Thanks.

Send the apk, tell me the calling parameters, I will try to write an example for you

Many thanks for the help. Attached apk. This is tiktok. I am trying to access the leviathan native function. As I understand it, its implementation is in "libcms.so". https://drive.google.com/open?id=1gXw8zYU1gd4hns9Lm8FreXuV8el-66IR

tiktok is too complex

Using your program, you can’t call that function?

maybe I didn’t understand how it works. I managed to call leviathan and get values using frida and the android emulator. But it is very resource intensive.


Safekeeper doesnt exit cleanly

Steps to reproduce
Using our unit files for systemd call systemctl stop safekeeper
Expected result
Clean shutdown with exit code 0
Actual result
Exit code is 111
● safekeeper.service - Neon safekeeper
     Loaded: loaded (/etc/systemd/system/safekeeper.service; enabled; vendor preset: enabled)
     Active: failed (Result: exit-code)
   Main PID: 1119737 (code=exited, status=111)

Found this TODO for implementation of graceful shutdown
https://github.com/neondatabase/neon/blob/baa8d5a16ac5ee5e033d633d06c137fb4e4bf06e/safekeeper/src/bin/safekeeper.rs#L276
Environment
all
Logs, links

Hi @LizardWizzard!
Should this graceful shutdown just do something like
signals.handle(|signal| {
        //handle all signals
        info!(
            "Got {}. Terminating in immediate shutdown mode",
            signal.name()
        );
        for thread in threads.into_iter() {
            thread.join().unwrap(); // just panic
        }
    })

Or do we want a cleaner version like task_mgr
Thanks!

Hi @andresrsanchez!
I think we'll need something thats close to task_mgr here. join + unwrap can hang indefinitely, and panic caused by unwrap can prevent going through the rest of the threads.
cc @arssher


Error loading data from the server AuthorizationFailed No views are accessible.

Just after I've logged in, I've seen this messege
How can I fix it?
Best regards,

Hello,
What is the context of the error ?
Any url to share ?
Thanks

Hello, What is the context of the error ? Any url to share ? Thanks

I've only login by my github and that is all

Thank you

If you click on the project link at the center and then click on the Fusion logo again, does it solve the issue ?

If you click on the project link at the center and then click on the Fusion logo again, does it solve the issue ?

after that site was down totally..

It appears that you did it right when I restarted the app :).
A project at your name has been created:

It appears that you did it right when I restarted the app :). A project at your name has been created though:

thank you, now it works))

Perfect 👍, I will close the issue then.


Copy missing glog header to include dir

Fixes #4584

The linux build fails on unit tests which also fail on master.


react-native-location warning:403

react-native:0.58.4
react-native-location warning:
type:403
Attempted to start updating the location without location permissions. Detail: "gps" location provider requires ACCESS_FINE_LOCATION permission.
thanks!!

react-native:0.58.4
react-native-location warning:
type:403
Attempted to start updating the location without location permissions. Detail: "gps" location provider requires ACCESS_FINE_LOCATION permission.
thanks!!

Android API >= 23 Requires an additional step to check for, and request the ACCESS_FINE_LOCATION permission using the PermissionsAndroid API. Failure to do so may result in a hard crash.
You can use something like this before trying to get geolocation:
try {     const granted = await PermissionsAndroid.request(       PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,       {         title: "Cool App Location Permission",         message:           "Cool App needs access to your location ",         buttonNeutral: "Ask Me Later",         buttonNegative: "Cancel",         buttonPositive: "OK"       }     );     if (granted === PermissionsAndroid.RESULTS.GRANTED) {       console.log("Now you can use geolocation!");     } else {       console.log("Location permission denied");     }   } catch (err) {     console.warn(err);   }

I am also getting the same error above solution did not help.
   RNLocation.configure({
      distanceFilter: 0, // Meters
      desiredAccuracy: {
        ios: 'best',
        android: 'highAccuracy',
      },
      interval: 1000,
      maxWaitTime: 1000,
    });

   RNLocation.requestPermission({
      ios: 'whenInUse',
      android: {
        detail: 'fine',
        rationale: {
          title: 'Location permission',
          message: 'We use your location to demo the library',
          buttonPositive: 'OK',
          buttonNegative: 'Cancel',
        },
      },
    })

This is only happening when desiredAccuracy is highAccuracy.

I solved the issue in android.
Add these lines in AndroidManifest.xml
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

Then in android/app/build.gradle add these lines in dependencies
implementation "com.google.android.gms:play-services-base:16.0.1"
implementation "com.google.android.gms:play-services-location:16.0.0"

I solved the issue in android. Add these lines in AndroidManifest.xml
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

Then in android/app/build.gradle add these lines in dependencies
implementation "com.google.android.gms:play-services-base:16.0.1"
implementation "com.google.android.gms:play-services-location:16.0.0"

Just follow the installation instructions correctly and it will work.

I already have all of them and still shows the warning


[Feature Request] Option for Windows accent colour as FancyZones zone colours

I think it would be a nice addition to be able to select the accent colour of Windows for the zones to give the option of making the UI feel more integrated into Windows.

@Glodigit
thanks for the suggestion, it has been added to the tracker #6611


unknown unhandled Node error (big repo, lots of mutants)

Summary
We are getting an Unhandled 'error' event Node.js error when running Stryker-mutator in our GitLab pipeline.

This is our pipeline build log, with some env secrets removed: kvk-stryker-raw-GL-job-output-modified.txt

We are adding stryker-mutator to our Angular 16 frontend repo, size of about 500k sloc.
Locally on my M1 macbook I can easily run stryker without memory or unhandled issues, which I did, to build up
an incremental file of about 60MB (~31.000 mutants) by running 'subsets' of folders through stryker.
This is how we do that:
import { execSync } from 'child_process';
import fs from 'fs';

const dir = process.argv[2];
if (!fs.existsSync(dir)) {
  throw new Error('Directory does not exist');
}

const command = `npm run stryker -- --ignorePatterns src/**/*.spec.ts,!${dir}/**/*.spec.ts,dist,coverage,scripts,devops,.angular,graphql-mock-server --mutate ${dir}/**/*.ts,!src/**/*.spec.ts,!src/test.ts,!src/environments/*.ts`;
execSync(command, { stdio: 'inherit' });

and using:
npm run stryker-subset "src/app/modules/hr-inzien" -- --logLevel trace

When I run stryker with concurrency:2 I can see that the test runner child process can spike to ~3,5GB memory and also the stryker process itself can spike to ~1,5GB.
We want to ideally also test static mutants so that's turned on.
The number of remaining mutants to test in the pipeline job is only 43, but still the Stryker command explodes with an unhandled Node.Js error :(
My assumption this far was that it was memory related, and initially the job exploded with explicit OOM errors.
I don't know what the current error means, since that information is lacking.
We don't yet expose stryker.log as a pipeline artefact, but that is something that I can change.

Stryker config
from build log:
12:46:27 (29) DEBUG ConfigReader Loading config from stryker.conf.json
12:46:27 (29) DEBUG ConfigReader Loaded config: {
  "$schema"<EMAIL_ADDRESS>  "_comment": "This config was generated using a preset. Please see website for more information: https://stryker-mutator.io/docs/stryker-js/guides/angular",
  "mutate": [
    "src/**/*.ts",
    "!src/**/*.spec.ts",
    "!src/test.ts",
    "!src/environments/*.ts"
  ],
  "testRunner": "karma",
  "commandRunner": {
    "command": "npm test"
  },
  "karma": {
    "configFile": "src/karma.conf.cjs",
    "projectType": "angular-cli",
    "config": {
      "browsers": [
        "ChromeHeadlessCI"
      ]
    }
  },
  "reporters": [
    "progress",
    "clear-text",
    "html"
  ],
  "htmlReporter": {
    "fileName": "reports/stryker.html"
  },
  "concurrency": 2,
  "concurrency_comment": "Recommended to use about half of your available cores when running stryker with angular",
  "coverageAnalysis": "perTest",
  "checkers": [
    "typescript"
  ],
  "tsconfigFile": "tsconfig.json",
  "disableTypeChecks": "src/**/*.ts",
  "cleanTempDir": "always",
  "dryRunOnly": false,
  "ignorePatterns": [
    ".angular",
    ".idea ",
    ".husky",
    "coverage",
    "devops",
    "dist",
    "docs",
    "graphql-mock-server",
    "reports",
    "scripts"
  ],
  "ignoreStatic": false,
  "logLevel": "debug",
  "incremental": true,
  "incrementalFile": "stryker/stryker-incremental.json",
  "fileLogLevel": "trace",
  "maxTestRunnerReuse": 20,
  "allowConsoleColors": true,
  "checkerNodeArgs": [],
  "clearTextReporter": {
    "allowColor": true,
    "allowEmojis": false,
    "logTests": true,
    "maxTestsToLog": 3
  },
  "dashboard": {
    "baseUrl": "https://dashboard.stryker-mutator.io/api/reports",
    "reportType": "full"
  },
  "eventReporter": {
    "baseDir": "reports/mutation/events"
  },
  "force": false,
  "inPlace": false,
  "maxConcurrentTestRunners":<PHONE_NUMBER>740991,
  "mutator": {
    "plugins": null,
    "excludedMutations": []
  },
  "plugins": [
    "@stryker-mutator/*"
  ],
  "appendPlugins": [],
  "jsonReporter": {
    "fileName": "reports/mutation/mutation.json"
  },
  "symlinkNodeModules": true,
  "tempDirName": ".stryker-tmp",
  "testRunnerNodeArgs": [],
  "thresholds": {
    "high": 80,
    "low": 60,
    "break": null
  },
  "timeoutFactor": 1.5,
  "timeoutMS": 5000,
  "dryRunTimeoutMinutes": 5,
  "warnings": true,
  "disableBail": false,
  "allowEmpty": false
}

Test runner config
karma.conf.cjs
// Karma configuration file, see link for more information
// https://karma-runner.github.io/0.13/config/configuration-file.html

/**
 * @remarks To enable parallel processing.
 *
 * 1. frameworks: ['parallel', 'jasmine', '@angular-devkit/build-angular'],
 * 2. require('karma-parallel')
 * 3. parallelOptions: {
 *      shardStrategy: 'round-robin',
 *      concurrency: 1,
 *    }
 */

module.exports = function (config) {
  config.set({
    basePath: '',
    frameworks: ['jasmine', '@angular-devkit/build-angular'],
    plugins: [
      'karma-jasmine',
      'karma-chrome-launcher',
      'karma-coverage',
      'karma-spec-reporter',
      '@angular-devkit/build-angular/plugins/karma',
      'karma-mocha-reporter',
      'karma-jasmine-order-reporter',
    ],
    preprocessors: {
      'src/**/*.ts': ['coverage'],
    },
    client: {
      clearContext: false,
      jasmine: {
        verboseDeprecations: true,
        random: process.env.FLAKY_TESTING || false,
      },
    },
    browserConsoleLogOptions: {
      level: 'log',
    },
    coverageReporter: {
      reporters: [
        { type: 'html', dir: require('path').join(__dirname, '../dist/dwp-coverage') },
        {
          type: 'lcovonly',
          dir: require('path').join(__dirname, '../dist/dwp-coverage'),
          subdir: '.',
        },
      ],
    },
    angularCli: {
      environment: 'dev',
      sourceMap: true,
    },
    // https://www.npmjs.com/package/karma-spec-reporter
    specReporter: {
      maxLogLines: -1, // limit number of lines logged per test, max total = 999 unless set to -1
      suppressErrorSummary: false, // do not print error summary
      suppressFailed: false, // do not print information about failed tests
      suppressPassed: true, // do not print information about passed tests
      suppressSkipped: true, // do not print information about skipped tests
      showSpecTiming: true, // print the time elapsed for each spec
      failFast: false, // test would finish with error when a first fail occurs.
    },
    // https://www.npmjs.com/package/karma-mocha-reporter
    mochaReporter: {
      output: 'full',
      colors: {
        success: 'green',
        info: 'blue',
        warning: 'yellow',
        error: 'bgRed',
      },
      symbols: {
        success: '+',
        info: '#',
        warning: '!',
        error: 'x',
      },
      ignoreSkipped: 'true',
    },
    reporters: ['coverage', 'mocha', 'jasmine-order'],
    port: 9877,
    colors: true,
    logLevel: config.LOG_INFO,
    autoWatch: true,
    reportSlowerThan: 100,
    browsers: ['ChromeHeadlessNoSandbox'],
    browserDisconnectTimeout: 60000,
    browserNoActivityTimeout: 60000,
    failOnEmptyTestSuite: true, // delete if no empty test specs are available.
    customLaunchers: {
      ChromeDebugging: {
        base: 'Chrome',
        flags: ['--remote-debugging-port=9222'],
        debug: true,
      },
      ChromeHeadlessNoSandbox: {
        base: 'ChromeHeadless',
        flags: [
          '--no-sandbox',
          '--disable-setuid-sandbox',
          '--disable-gpu',
          '--remote-debugging-port=9222',
        ],
      },
      ChromeHeadlessCI: {
        base: 'ChromeHeadless',
        flags: [
          '--no-sandbox',
          '--remote-debugging-port=9222',
          '--enable-logging',
          '--v=1',
          '--disable-background-timer-throttling',
          '--disable-renderer-backgrounding',
          '--proxy-bypass-list=*',
          "--proxy-server='direct://'",
        ],
      },
    },
    singleRun: true,
  });
};

Stryker environment
❯ npm ls | grep stryker
├──<EMAIL_ADDRESS>├──<EMAIL_ADDRESS>├──<EMAIL_ADDRESS>
Test runner environment
karma:
❯ npm ls | grep karma
├──<EMAIL_ADDRESS>├──<EMAIL_ADDRESS>├──<EMAIL_ADDRESS>├──<EMAIL_ADDRESS>├──<EMAIL_ADDRESS>├──<EMAIL_ADDRESS>├──<EMAIL_ADDRESS>├──<EMAIL_ADDRESS>├──<EMAIL_ADDRESS>
and jasmine:
❯ npm ls | grep jasmine
├──<EMAIL_ADDRESS>├──<EMAIL_ADDRESS>├──<EMAIL_ADDRESS>├──<EMAIL_ADDRESS>├──<EMAIL_ADDRESS>├──<EMAIL_ADDRESS>├──<EMAIL_ADDRESS>
test command
ng test --no-watch --browsers ChromeHeadlessCI

Your Environment

software
version(s)

node
v18.17.1

npm
9.6.7

Operating System
OSX (Sonoma 14.1.1) and linux (ubunt, not entirely sure which version, could investigate later)

Add stryker.log
This I don't have unfortunately, since stryker is being run in our pipeline and stryker.log is currently not an artifact.
I can make it so and update this issue in the future

Hi @michahell thanks for opening this issue 🙋♂. Also thanks for sharing your build server logs, it is crucial in figuring out what is wrong.
I'm pretty sure the cause here is #2448, an older issue that sometimes seems to pop up.
Stryker uses tree-kill to kill worker processes (checkers, test runners) when they're done. This ensures no dangling browsers, web servers, etc are running and accumulating during mutation testing (for example, killing karma might cause your chrome browser to keep running on linux-based systems). However, in rare circumstances, it seems that dependencies of tree-kill are not installed. For example, ps seems to be missing on your build server.
I've created a small test project to verify that tree-kill works (or indeed, doesn't work). Could you try to run it on your build server? Cloning it and running npm start should do the trick.
https://github.com/nicojs/tree-kill-test

Hello @nicojs !
Thanks for your elaborate response and explanation. For speed (not having to create a separate repo + build pipeline) I've included tree-kill as an explicit dependency in our project and made my branch only execute the node script ISO stryker, this is the result locally on my machine:
❯ node stryker/tree-kill-test.mjs
child process exited with code 1, signal null
Child process killed

and this in our pipeline:
$ node stryker/tree-kill-test.mjs
child process exited with code 1, signal null
node:events:495
      throw er; // Unhandled 'error' event
      ^
Error: spawn ps ENOENT
    at ChildProcess._handle.onexit (node:internal/child_process:284:19)
    at onErrorNT (node:internal/child_process:477:16)
    at process.processTicksAndRejections (node:internal/process/task_queues:82:21)
Emitted 'error' event on ChildProcess instance at:
    at ChildProcess._handle.onexit (node:internal/child_process:290:12)
    at onErrorNT (node:internal/child_process:477:16)
    at process.processTicksAndRejections (node:internal/process/task_queues:82:21) {
  errno: -2,
  code: 'ENOENT',
  syscall: 'spawn ps',
  path: 'ps',
  spawnargs: [ '-o', 'pid', '--no-headers', '--ppid', 27 ]
}
Node.js v18.18.2
Cleaning up project directory and file based variables
00:01
ERROR: Job failed: exit code 1

It seems like this is indeed the culprit...
Are there any explicit tree-kill sub-dependencies we might be able to install to remedy this?

Thanks, I hope that works. Looking through the tree-kill code it seems that ps is the only dependency for linux.
I'll also re-open #2448, since that is the cause. I think the best thing to do when tree-kill fails is to perform a 'normal' childProcess.kill.

after installing procps on our build image, the tree-kill test code now does the same as on my local machine:
$ node stryker/tree-kill-test.mjs
child process exited with code 1, signal null
Child process killed

stryker-mutator seems to now keep chugging on in our pipeline!
We now have a working baseline, we can increment --maxTestRunnerReuse 20 to see when memory pressure becomes too large 👍


Initial stab at F# attribute generation for CoreCLR

This should help address dotnet/netcorecli-fsc#93.

@baronfel,
Thanks for your contribution.
To ensure that the project team has proper rights to use your work, please complete the Contribution License Agreement at https://cla2.dotnetfoundation.org.
It will cover your contributions to all .NET Foundation-managed open source projects.
Thanks,
.NET Foundation Pull Request Bot

@baronfel, thanks for signing the contribution license agreement. We will now validate the agreement and then the pull request.
Thanks, .NET Foundation Pull Request Bot

Agreed with what @rainersigwald said in the referenced issue, I don't think this belongs in MSBuild. Can this be part of the F# SDK?

Closing this for now. Appreciate the contribution here, but I don't think it should be in MSBuild (as opposed to the F# SDK as suggested). Feel free to open with more info if you think we're mistaken or it ends up not being possible to sort in that way.

@AndyGerlicher can you please explain why it is okay to have VB and C# code generation here but not F#?


chore(main): release 0.35.3

:robot: I have created a release beep boop
0.35.3 (2023-04-07)
Miscellaneous Chores

deps: update dependency flutter_launcher_icons to ^0.13.0 (#304) (3dde9ff)

This PR was generated with Release Please. See documentation.

:robot: Release is at https://github.com/CCXXXI/ecg_monitor/releases/tag/v0.35.3 :sunflower:


odo should exit with error when s2i build fails

$ odo create wildfly backend --binary target/ROOT.war
Receiving source from STDIN as file ROOT.war
pulling image error : pulling image "docker.io/openshift/wildfly-101-centos7@sha256:a2661f20f2e870520a73765f783de105c61916235a541332acd1501c2ee76280" timed out after 2m0s
error: build error: unable to get docker.io/openshift/wildfly-101-centos7@sha256:a2661f20f2e870520a73765f783de105c61916235a541332acd1501c2ee76280
Component 'backend' was created.

Component 'backend' is now set as active component.

There should be a message informing the user that component creation failed.
The same for push.
$ odo push
Pushing changes to component: backend
Receiving source from STDIN as file ROOT.war
pulling image error : pulling image "docker.io/openshift/wildfly-101-centos7@sha256:a2661f20f2e870520a73765f783de105c61916235a541332acd1501c2ee76280" timed out after 2m0s
error: build error: unable to get docker.io/openshift/wildfly-101-centos7@sha256:a2661f20f2e870520a73765f783de105c61916235a541332acd1501c2ee76280
changes successfully pushed to component: backend

This issue has two parts.
The first part is a message that is displayed when odo create fails.
After #408 has been merged It behaves a bit differently. odo create now creates "empty" component by injecting Supervisor into builder image using BuildConfig (s2i).
If there is an error during that process odo exits with exit code 1. That is correct behaviour.
But the message that is displayed is not user-friendly and might be confusing for end user.
▶ odo create wildfly
Please wait, creating wildfly component ...
build wildfly-1 status Failed

▶ echo $?
1

Instead of build wildfly-1 status Failed we should display some nice message like. "Error while preparing component" or something like that.
The second part is detecting errors while running odo push.
odo push upload the source code or the binary to the container, than it runs assemble-and-restart.sh script. This scripts calls s2i assemble script and than reloads supervisor service.
Problem is when s2i assemble script fails (for example due too syntax error). It would be nice if we could detect that and make odo push return error exit code
▶ odo push
Pushing changes to component: wildfly
building file list ... done
target/classes/eu/mjelen/katacoda/odo/BackendServlet.class
target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst

sent 3077 bytes  received 92 bytes  6338.00 bytes/sec
total size is 16397  speedup is 5.17
Please wait, building component....
touch: cannot touch '/tmp/src/.dummy': No such file or directory
Found pom.xml... attempting to build with 'mvn package -Popenshift -DskipTests -B -s /opt/app-root/src/.m2/settings.xml'
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T16:41:47+00:00)
Maven home: /usr/local/apache-maven-3.3.9
Java version: 1.8.0_161, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-1.8.0-openjdk-<IP_ADDRESS>-0.b14.el7_4.x86_64/jre
Default locale: en_US, platform encoding: ANSI_X3.4-1968
OS name: "linux", version: "4.4.41-boot2docker", arch: "amd64", family: "unix"
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building PersistentStorageCounterServlet 1
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ backend ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /opt/app-root/src/src/main/resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ backend ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 1 source file to /opt/app-root/src/target/classes
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] /opt/app-root/src/src/main/java/eu/mjelen/katacoda/odo/BackendServlet.java:[26,21] ';' expected
[INFO] 1 error
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.213 s
[INFO] Finished at: 2018-05-10T12:00:17+00:00
[INFO] Final Memory: 10M/95M
[INFO] ------------------------------------------------------------------------
[WARNING] The requested profile "openshift" could not be activated because it does not exist.
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project backend: Compilation failure
[ERROR] /opt/app-root/src/src/main/java/eu/mjelen/katacoda/odo/BackendServlet.java:[26,21] ';' expected
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
Aborting due to error code 1 from mvn package
run: stopped
run: started
changes successfully pushed to component: wildfly

▶ echo $?
0

Also message "changes successfully pushed to component: wildfly" might be a bit confusing in this case.

@kadel I looked into the issue and found out that https://github.com/redhat-developer/odo/blob/304ed234ab3cb89be8ec65c72a814a9fde61e01b/pkg/occlient/occlient.go#L1672 does not return the error which occurs while running inside the container. I tried to use other methods in the remotecommand package but most seemed to have private methods. So I guess we need to change the script to report the errors while running.

@mik-dass  Is there anything that we can do with this?

@kadel I am currently looking into it

Fixed in https://github.com/kadel/bootstrap-supervisored-s2i/pull/1

this was closed prematurely :-(
It it is still needed to update the reference to the new bootstrap repository version  (https://github.com/kadel/bootstrap-supervisored-s2i/tree/v0.0.2)


fix: inefficient merge check for large amount of merged cells within …

When there are a lot of merged cells within a worksheet, e.g. 30.000 merged cells (e.g. the same 2 cells are merged in every row in a 30.000 row table), parsing mergeCells is increasingly slow. This is due to the inefficient conflict check within _mergeCellsInternal(dimensions, ignoreStyle) in worksheet.js.
Summary
My motivation is to let these big files function, rather than load forever. I believe the massive check is unnecessary. Rather than check every other merged range, can't you just see if any of the cells in the new range are merged, and then throw an error?
I do not know the original motivation for the throw new Error('Cannot merge already merged cells'); error, and whether it always breaks the program, or if the error is caught somewhere. Hopefully the new implementation is much more efficient without breaking anything.
Test plan
See the issue https://github.com/exceljs/exceljs/issues/2689
I have attached a file there. Loading that file goes from 1.5 minutes in node JS to only seconds. In the browser that file just will not load.
Related to source code (for typings update)

Fixes https://github.com/exceljs/exceljs/issues/2689


Inconsistency in block input scrollbar styling

Expected Behavior
Scrollbar in a block input should resemble the styling of the workspace scrollbar, as seen in gif in #532.
Actual Behavior
The scrollbar has default Chrome styling.

Steps to Reproduce

Visit https://llk.github.io/scratch-gui/
Drag out the "play drum [Snare Drum] for (0.25) beats" block
Click the [Snare Drum] dropdown menu and view scrollbar.

Operating System and Browser
Ubuntu Chrome 57.0.2987.110

This is probably not worth fixing.
The scrollbar you see in that gif is a safari default scrollbar, not the blockly scrollbar.  We just happen to be copying that style for our scrollbars.
Blockly has our own scrollbars because we couldn't force safari to leave our scrollbars visible if the user wasn't scrolling.  We want the user to be able to see their position in the workspace all the time, and not just when scrolling, so we made our own.
Our scrollbars are touchy and error-prone and strongly linked to the concept of a scrollable workspace.  They also have performance implications and have to be considered any time anything is dragging.  Basically, they're a lot of work to change.
If we leave it as-is, the user will see the default rendering of a scrollbar for their platform, possibly only when they are scrolling.  From context they should be able to see that the dropdown is scrollable.
@carljbowman @thisandagain if you have strong opinions we can work on this, but it would be very far backlogged.

I think I'm ok to leave this open but push to the backlog. Thanks for the feedback @rachel-fenichel

We are just going to force hide all native scrollbars

So long dropdown menus will be scrollable but have no visible scrollbar?


Make "Text Classifier" (JS) example more readable

I came across the codepen link of Text Classifier (JS) example from here (authored by jenperson) and I'm curious to know whether these changes (or rather updates) can be applied to the same to optimize & increase code readability.
In the TypeScript code, here:
const input = document.getElementById("input");
const output = document.getElementById("output");
const submit = document.getElementById("submit");
const defaultTextButton = document.getElementById("populate-text");

Technically, getElementById should return a HTMLElement type, but in this code, we specifically want to access the value property of the input element. By using the type assertion as HTMLInputElement, we are telling TypeScript that we know for sure that the element returned by getElementById("input") is of type HTMLInputElement, which has a value property. This way, we can access the value property of the input element without TypeScript throwing an error.

On the other hand, if we don't use the type assertion and simply write const input = document.getElementById("input");, TypeScript will assume that input is of type HTMLElement, which doesn't have a value property. If we tried to access input.value, TypeScript would throw a compilation error because it thinks input doesn't have a value property.

Thus it can be simply updated to,
const input = document.getElementById("input") as HTMLInputElement;
const output = document.getElementById("output") as HTMLElement;
const submit = document.getElementById("submit") as HTMLButtonElement;
const defaultTextButton = document.getElementById("populate-text") as HTMLButtonElement;

[Nit] Next, we can update this,
defaultTextButton.addEventListener("click", function () {
 input.value = defaultText;
});

to this ⬇ using an arrow function,
defaultTextButton.addEventListener("click", () => { input.value = defaultText; });

and this,
submit.addEventListener("click", async function () {
  if (input.value == "") {
    alert("Please write some text, or click 'Populate text' to add text");
    return;
  }

  output.innerText = "Classifying...";

  await sleep(5);
  const result: TextClassifierResult = await textClassifier.classify(
    input.value
  );
  displayClassificationResult(result);
});

can also be optimized to this (using the same approach),
submit.addEventListener("click", async () => {
  if (input.value === "") {
    alert("Please write some text, or click 'Populate text' to add text");
    return;
  }

  output.innerText = "Classifying...";

  await sleep(5);
  const result: TextClassifierResult = await textClassifier.classify(input.value);
  displayClassificationResult(result);
});

Here, using === ensures that we are comparing a string data type with another string data type, while == could have potentially coerced the value of input.value to a different data type, leading to unexpected results.

Thank you for taking the time to provide feedback! I went ahead and made those changes to the code samples.