If gene list is empty, render N/A

When users do not provide a gene list, P values currently return 0.0, which to someone very misinformed, might take this gene (and in fact, every gene in their result) as overwhelmingly strong evidence of something. Of course, that is not the case and this should be remedied by either removing the columns from the table, or marking both the P vals and User Genes as N/A.
Everything which can be done in the backend should be. The API should read the file coming from the frontend and interpret whether a gene list is included. If it isn't, return either N/A (ideally) or -1. Then the client can either just print the N/A, or further transform the -1 values to N/A.

:
"TYPE\tNAME\tSCORE\tP-VALUE\tGENES\tUSER_GENES\tQTLs\tONDEXID\nTrait\tseed dormancy\t8.66998291015625\t-1.0\t1\tN/A\t0\t6641995\nPhenotype\tGR21 cold\t1.4634881019592285\t-1.0\t1\tN/A\t0\t6649419\nTrait\tseed weight\t7.334310054779053\t-1.0\t1\tN/A\t0\t6649576\nTrait\tseed maturation\t8.66998291015625\t-1.0\t3\tN/A\t0\t6643264\nPath\tRegulation of seed size\t7.334310054779053\t-1.0\t2\tN/A\t0\t6639684\n"
`

-1 for P-VALUE and N/A for USER_GENES

@Arnedeklerk @marco-brandizi @KeywanHP  @manlikleo
Could you please validate the above Evidence section in the response.
``"TYPE\tNAME\tSCORE\tP-VALUE\tGENES\tUSER_GENES\tQTLs\tONDEXID\nTrait\tseed dormancy\t8.66998291015625\t-1.0\t1\tN/A\t0\t6641995\nPhenotype\tGR21 cold\t1.4634881019592285\t-1.0\t1\tN/A\t0\t6649419\nTrait\tseed weight\t7.334310054779053\t-1.0\t1\tN/A\t0\t6649576\nTrait\tseed maturation\t8.66998291015625\t-1.0\t3\tN/A\t0\t6643264\nPath\tRegulation of seed size\t7.334310054779053\t-1.0\t2\tN/A\t0\t6639684\n"

@manlikleo  -1 will be returned for  if p-value is zero and
N/A will be return if the User genes coming as blank in the server side.
Currently the N/A value is rendering as 1 in the UI and -1 as it is.

@manlikleo, @KeywanHP, @Arnedeklerk I've re-opened this, due to several issues. Please, verify the new logic (shown in the Javascript comments below) makes sense to you all, and then close again.
Old version:
if(pValue < 1){
  table = table + ' N/A 	';
}else{
  table = table + '' + pValue.toFixed(2) + '	';
}

To me, this was completely wrong: valid p-values are always <1, the API reports -1 for not available or not valid. Moreover, rounding at 2 digits yields 0.00 in many cases (since p-value is often smaller than 0.01).
Also, regarding the code quality, it's not good to repeat things that way: the only thing that changes here is the value, not the HTML column markup, so that shouldn't go into the if branches.
New version:
/**
 * Used in the evidence table, to render p-values nicely.
 */
function renderEvidencePvalue ( pvalueStr )
{
  const na = "N/A";

  if ( !pvalueStr ) return an;

  var pvalue = Number ( pvalueStr );

  // -1 is usually to mark that there is no p-value
  if ( pvalue < 0 ) return an;
  // for smaller values, use the scientific notation with a suitable no. of digit, eg, 1.1234E-8
  if ( pvalue < 1E-4 ) return pvalue.toExponential ( 4 ).toString ().toUpperCase();
  // for bigger values, just round to a good digit, eg, 0.0123
  return pvalue.toFixed ( 4 )
}
...
   table += '' + renderEvidencePvalue ( pvalue ) + '	';
...

Further notes:

using a function is often a good way to separate concerns and make the semantics more readable (the code building these tables has become rather ugly)
I can live with x = x + ..., rather than x +=, as I can live with unnecessary {}, but I don't think these things are very readable and personally I tend to shorten them when I have to make changes for other reasons.

My only comment here is on the P-val: you're completely right about it sometimes rounding to 0.00, and that's my bad. I figured the round would force 0.00XYZ to 0.01, to make the P-val col quite simple to read, but it makes sense that (1) it does not do that
in many cases and (2) that rounding to more decimal places is better anyway.
Thanks Marco

To clarify it further, this is how it looks like on test. @KeywanHP, let's close this if we're happy with it.

Looks good. I think showing two decimals is enough for all E numbers, eg 1.00E-5.

Looks good. I think showing two decimals is enough for all E numbers, eg 1.00E-5.

Done (not rebuilding, will be on test tomorrow).


Allow configuring using an array of testRegex

🚀 Feature Proposal
Creating dynamic configurations to include or exclude specific things is difficult because of inconsistency in how config allows specifying inclusions and exclusions.

testRegex allows only a single regexp
testMatch allows an array of globs
testPathIgnorePatterns allows an array of regexps

So there's no format (regex or glob) that can be used to build an array that works both for including and excluding.
It would be very convenient if either there were an analog to testMatch for ignoring (an array of globs), or it were permissible to provide an array of regexps instead of only a single one for testRegex.
I think the easiest solution to implement would be simply accepting an array or a single regexp for testRegex. Additionally, the regexp array convention is much widely used already (coveragePathIgnorePatterns, modulePathIgnorePatterns, transformPathIgnorePatterns, watchPathIgnorePatterns, testPathIgnorePatterns). Alternatively, a new config option testPathPatterns could be introduced that only accepts an array, for consistency with all the ignore options, but it seems redundant.
I'd like to take a shot at coding it, but wanted to vet the feature idea before doing any work.
Motivation
Motivation is creating simple configuration that can be used to run buckets of tests that are dynamically specified by pattern matching. For example, I would like to be able to specify patterns that match slow tests, and be able to produce dynamic config that can both exclude only slow tests, or run only slow tests.
Example
jest.config.js
const mode = process.env.JEST_MODE;
let testRegex = [/__tests__/\.tsx*$/];
const testPatternIgnorePaths = []'

const slowTests = /__tests__/.*\.slow\.tsx*$/;

switch(mode) {
   case 'slow':
       testRegex = [slowTests];
       break;
   case 'fast':
      testPatternIgnorePaths.push(slowTests);
      break;
   case default: // err
}

module.exports = {
  testRegex,
  testPatternIgnorePaths,
  ...
}

Pitch
Why does this feature belong in the Jest core platform?
It would be great for creating optimized configurations in large test environments. It makes the way file matching patterns are specified in configuration more consistent as well.

@rickhanlonii @thymikee we just discussed config overhaul as it's quite the hot mess, and the mess that is regex vs glob, separate ignore fields etc should definitely be on the chopping block.
A single issue going through all config options (and CLI options) might make sense, although I guess file matching is big enough to be discussed on its own (e.g. in this issue).

So to be on topic; for file matching, of the top of my head, this is my suggestion: coveragePatterns: Array<Glob>, testPatterns: Array<Glob>, transformPatterns: Array<Glob> and remove everything else.

Using globs exclusively is definitely preferable imho. I was going for a quick fix here; but I'm definitely in favor of standardization if breaking changes are on the table.

Short term I think it makes sense for testRegex to accept either a string or array 👍

If you all are amenable to that solution for now I can take a crack at it, it doesn't seem like it would be a big change.

Doing config.testRegex = Array.isArray(config.testRegex) ? config.testRegex : [config.testRegex]; in https://github.com/facebook/jest/blob/master/packages/jest-config/src/normalize.js should be easy enough to land, yeah

All you @jamietre!

I have this working, except that in https://github.com/facebook/jest/blob/master/packages/jest-config/src/normalize.js line 348, we call validate which validates by matching types from an objectVALID_CONFIG: https://github.com/facebook/jest/blob/master/packages/jest-config/src/ValidConfig.js
There's no obvious way to make this work for something that can be more than one type without some exception based path the the validation. I can think of lots of ways to make the validator work for multiple types, but they would have significant consequences. For example, when validation fails, it shows an example based on the ValidConfig object, and that would all have to be revised to support some syntax to pass mutliple options and parse them correctly when there are errors.
Options I can think of are just skip validation for testRegex or add a new config option testRegexArray for validation purposes only, and map it in normalize to the internal testRegex. The second option seems to muddy the waters further though since you're looking at overhauling options processing anyway. Or maybe add it but leave it undocumented... what do you think.

Mind pushing what you have to a branch so we cab play with it?
@thymikee thoughts on the validation

Here's the branch on my fork; lmk if I should make a pull request.
https://github.com/jamietre/jest/commits/jamiet/multiple-test-regexes

I think I like the "MultipleValidOptions" addition to jest-validate, makes sense imho. Send a PR :)

OK, sounds good... I still need to fix up how validation errors involving multiple valid options are reported, will do that & send it on.

Linking to #7185. This is something we'll probably want to include there


Support Task Lists in GFM

It seems that Task Lists still not rendered correctly.
https://github.com/blog/1375
-task-lists-in-gfm-issues-pulls-comments

Task lists unfortunately aren't supported in chjj/marked, which is the markdown rendering library this editor uses.
That said, I'm currently working on rearranging a whole load of code and potentially switching to markdown-it as the markdown parser, which doesn't have support for task lists out-of-the-box, but it has quite a nice plugin system so I'm sure it'll be possible to add.
One question: obviously task lists will render checkboxes into the final output - would you want the ability to be able to toggle them on and off and it change the markdown source, or would you be happy with them being readonly? (obviously readonly is quite a lot easier to implement)

Readonly would be fine for me.

I'll see what I can do then :)

Just FYI on this, after switching to markdown-it it looks like this would be very easy to do, but I don't like the available markdown-it-checkbox package (it doesn't give a nice way of applying a class to the enclosing <li>) so I'll have to see about putting something together myself. Shouldn't be too bad though.

I'd like to be able to choose if I were to have a check-box or simply a graphic for the output or the ticked checkbox from font awesome.

Read-only is good for me too, this would be a helpful addition.

It would be really great if this feature would be supported. This is the only reason I still use GitHub markdown API instead of this project.

+1


Delete report

Delete report has been worked on
Kindly find attached the link to the loom video
https://www.loom.com/share/91817528ddff4830bd4c09ef493d89cf?sid=dab7b190-0b24-4948-986e-e88cdcf53221

There are conflicts. Resolve these conflicts

Conflicts have been resolved

Conflicts still exists. Pull current changes into your branch

conflicts have been resolved


JMX with stealthy/kafka-manager

How do I set the JMX_PORT environment variable on the brokers started by the scheduler? I know abouy the --jmv-options, but isn't the env required for kafka-manager?

This is possible as described in #69. kafka-manager does NOT need or use JMX_PORT -- its gets the jmx port from zookeeper.

Well, not really. It seems in order to get a remote connection java.rmi.server.hostname needs to be set the slave ip. I can find no way to do that.

Check broker's log for messages like this:
INFO Will not load MX4J, mx4j-tools.jar is not in the classpath (kafka.utils.Mx4jLoader$)

after modifying build.gradle by adding (also for same reason there's following line exclude group: "com.sun.jmx"):
compile "mx4j:mx4j-tools:3.0.1"

(make sure the jar was recompiled: jar tf kafka-mesos-<IP_ADDRESS>.jar | grep  mx4j)
I've managed to load mx4j:
INFO mx4j successfuly loaded (kafka.utils.Mx4jLoader$)

The default port seem to be 8082, but kafka-manager doesn't seem to be able to read the metrics :(

btw. the JMX_PORT is used just to set java properties in kafka's shell scripts:
-Djava.rmi.server.hostname=$PUBLIC_ADDRESS
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false

I've tried that, but JMX still doesn't start.

Allright without the hostname it works:
./kafka-mesos.sh broker update 0..2 --jvm-options "-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false  -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=9998"

and then restart the brokers.

@deric
thnx for a hint. I tried this with kafka 2.10 but update does not open a specified port :(
I need to stop, remove, add with --jvm-options and start the broker.
And it works OK, the problem is that I need to do this on a production kafka cluster without stopping nor removing a broker :|
Any ideas why update apart from updating correctly jvm-options does not open a specified JMX port?
Regards,
Jan

@deric
thnx a lot !!! works perfectly :)


Update Makie plotting method, add recipe for Plots.jl, example + documentation tweaks

Closes #51

The codecov decrease is just due to the plotting recipe (which works) and the function to convert zeros to NaN for convert_arguments, which also looks to be working so I can live with the small loss of coverage and write a test (not for the recipe) if need be.


⚠ ClamAV has degraded performance

In 12db9b1, ClamAV (https://spamassassin.apache.org/) experienced degraded performance:

HTTP code: 200
Response time: 502 ms

Resolved: ClamAV performance has improved in 63b376a.


[DFT] Implement external workspace according to draft spec

Description
This PR implements the draft specification for external workspace at https://github.com/oneapi-src/oneAPI-spec/pull/509, which relates to oneMKL issue https://github.com/oneapi-src/oneMKL/issues/396.
Checklist
All Submissions

[x] Do all unit tests pass locally? Attach a log.
[x] Have you formatted the code using clang-format?

New interfaces

[ ] Have you provided motivation for adding a new feature as part of RFC and
it was accepted? # (RFC) Draft PR for oneAPI spec linked, but this is not yet merged
[ ] What version of oneAPI spec the interface is targeted?
[ ] Complete New features checklist

New features

[x] Have you provided motivation for adding a new feature?
[x] Have you added relevant tests?

Logs:

inteltest.txt
testamd.txt
testnvidia.txt

I've been having trouble with access to AMD hardware since the rebase, so test here is test data for MKL-CPU, MKL-GPU and Nvidia for now:
testintel.txt
testnvidia.txt

This PR has been rebased:

DFT domain has had portFFT added as a backend
Additional work was required to support portFFT in the tests

Test results for Nvidia (cuFFT backend), Intel MKL-CPU and MKL-GPU, and portFFT on Intel are attached:
testintel_mkl.txt
testintel_portfft.txt
testnvidia.txt
Unfortunately I cannot currently access AMD hardware to test that the rocFFT backend. However, it has not required any changes since the last test results were provided.


Export unrendered content to GitHub

User story
As MDN staff, I want wiki page revisions migrated to GitHub, so I can analyze content with code.
Acceptance criteria / Tasks

Create an export of MDN content similar to https://github.com/jwhitlock/mdn-archive-proto1
Document next steps toward goals (offline rendering, KumaScript macro replacement, etc.)

@wbamberg @ddbeck @escattone  I think this issue was an early stab at something like stumptown. I'm guessing it's no longer relevant. Can it be closed?

@jmswisher Yes, I'll close it, thanks!


urllib3 throws InsecureRequestWarning: Unverified HTTPS request is being made

urllib3 throws Unverified HTTPS request and other connection related warnings on the console. Even though this warning is harmless but we are suppressing this for reason for automation cleaner console output.
These WARN messages were supposed to be suppressed by the higher version of the Python 2.7.xx but due to package dependencies around Python, robot framework and tox those warning message still remains.
Using native Python logger and warnings, this message log level is suppressed.

This change is

@causten

Fix for https://github.com/mkumatag/openbmc-automation/issues/62

Previously, mkumatag (Manjunath A Kumatagi) wrote…
> Fix for https://github.com/mkumatag/openbmc-automation/issues/62

Reviewed 2 of 2 files at r1.
Review status: all files reviewed at latest revision, all discussions resolved.

Comments from Reviewable

Previously, mkumatag (Manjunath A Kumatagi) wrote…
> :lgtm:

Review status: :shipit: all files reviewed at latest revision, all discussions resolved, all commit checks successful.

Comments from Reviewable


How can I set a font size?

I've been scouring the internet for ways to implement custom OpenType fonts into a Tkinter GUI, when I tried tkextrafont, at first I was using this form:
import tkinter as tk
from tkextrafont import Font
import os
cwd = os.path.dirname(os.path.realpath(__file__))

window = tk.Tk()
font = Font(file=cwd+r'\Quicksand-Medium.ttf', family="Quicksand")
tk.Label(window, text="This is Quicksand", font=(font, 20)).pack() #<<<<<<
#                                               ^^^^^^^^^^
window.mainloop()

which doesn't work for some reason, it just renders default font.
I was actually going nuts, it took me ages to realize that specifying a font size will break it, after I got that, I started looking for another way to specify a font size and style (i.e bold, italic, underline), but couldn't find any so, I could use some help 😅

I spent whole 3 hours trying to find a solution for this, and I literally just found out I can just use the name parameter and be able to set font size and style just like normal, hopefully this helps someone though.
This should work
  import tkinter as tk
  from tkextrafont import Font
  import os
  cwd = os.path.dirname(os.path.realpath(__file__))

  window = tk.Tk()
  font = Font(file=cwd+r'\Quicksand-Medium.ttf', family="Quicksand",name='Quicksand Medium')
  tk.Label(window, text="This is Quicksand", font=(Quicksand Medium, 20)).pack()
  window.mainloop()

omg, I just realized it's the family that I'm using not the name, this is a demonstration of how dumb can human being get 🙃


Support detecting threads on AIX OS

AIX uses a file in proc filesystem to describe status of processes: https://www.ibm.com/docs/en/aix/7.3?topic=files-proc-file

Any updates...?

Thanks!


Change ID examine icon to character outline icon

About the PR

Since the guidebook now uses the question mark icon, issue #13505 suggests changing the icon. This PR changes it to the character outline icon. However, would a more ID card looking icon be better instead?
Media

Before:

After:

[X] I have added screenshots/videos to this PR showcasing its changes ingame, or this PR does not require an ingame showcase

Changelog

:cl: crazybrain

tweak: Changed ID card examine icon to avoid matching the guidebook icon.

However, would a more ID card looking icon be better instead?

@crazybrain23 i mean, are you willing to make the icon?

IMO the new icon is better than the old one, so even if it does end up being changed again to something else this PR is still worth merging.

I do agree that it is better than what we currently have, so there's that.


[macOS] Scrolling does not work anymore on macOS after Flutter upgrade

I updated Flutter and scrolling on macOS stopped working. It still works on all other platforms without any issue.
Steps to reproduce

Start example application on macOS
Swipe on trackpad

Actual result
Nothing happens
Expected result
Scrolling works
https://github.com/Sesa1988/easy_table_flutter

Hi, in Flutter 3.3 scrolling from a trackpad has its own type of events, see here for more details: https://docs.flutter.dev/release/breaking-changes/trackpad-gestures
I took a look in your application, looks like you have done a very custom scrolling implementation. You can get the trackpad scrolling working again with the following change:
diff --git a/lib/src/table.dart b/lib/src/table.dart
index 641612e..0e88f58 100644
--- a/lib/src/table.dart
+++ b/lib/src/table.dart
@@ -198,6 +198,11 @@ class _EasyTableState<ROW> extends State<EasyTable<ROW>> {
             _focusNode.requestFocus();
           }
         },
+        onPointerPanZoomUpdate: (e) {
+          if (e.panDelta.dy != 0) {
+            _scrollControllers.vertical.position.pointerScroll(-e.panDelta.dy);
+          }
+        },
         onPointerSignal: (pointerSignal) {
           if (pointerSignal is PointerScrollEvent) {
             _onPointerScroll(pointerSignal, themeMetrics.row.height);

Hi, in Flutter 3.3 scrolling from a trackpad has its own type of events, see here for more details: https://docs.flutter.dev/release/breaking-changes/trackpad-gestures
I took a look in your application, looks like you have done a very custom scrolling implementation. You can get the trackpad scrolling working again with the following change:
diff --git a/lib/src/table.dart b/lib/src/table.dart
index 641612e..0e88f58 100644
--- a/lib/src/table.dart
+++ b/lib/src/table.dart
@@ -198,6 +198,11 @@ class _EasyTableState<ROW> extends State<EasyTable<ROW>> {
             _focusNode.requestFocus();
           }
         },
+        onPointerPanZoomUpdate: (e) {
+          if (e.panDelta.dy != 0) {
+            _scrollControllers.vertical.position.pointerScroll(-e.panDelta.dy);
+          }
+        },
         onPointerSignal: (pointerSignal) {
           if (pointerSignal is PointerScrollEvent) {
             _onPointerScroll(pointerSignal, themeMetrics.row.height);

Thank you this works and my issue if fixed!


ROS 1 latched topics

To make topics like /tf_static work, latching semantics must be carried through the bridge. Upon subscribing to a latched topic, the most recent message must be held in memory and sent when a client subscribes to the latched channel.

We will have to make changes to the websocket server implementation for that. Currently it does not support to send messages to individual clients. In case a client subscribes to a latched topic, we only want to send the latest message to that client. All other subscribed clients should not re-receive the latest message.


Deprecated kubed chart

https://github.com/kubernetes/charts/pull/4957
Signed-off-by: tamal<EMAIL_ADDRESS>

cc: @prydonius


Faster implementation of torchvision.ops.boxes::masks_to_boxes

Quoting #8184
🚀 The feature
torchvision.ops.boxes::masks_to_boxes is used to convert a batch of binary 2D image masks to a set of bounding boxes. Essentially, for a mask of shape $(B, 64, 64)$, masks_to_boxes allocates a tensor of shape $(B, 4)$ and calculates the bounding box for each element of the batch sequentially. This is $O(B)$ storage and $O(B)$ runtime and the simplest implementation possible.
This proposal pertains to creating a faster and more general version of this function.
Profiling
Some primitive performance benchmarking validates this hypothesis. Profiling code is here. Profiling was done on an Apple M2 Pro.
Memory Profiling

Speed Profiling

Correctness
The behavior of the function is unchanged. There is a single test case for testing masks_to_boxes (test.test_ops:test_masks_box). The new implementation passes this test case.
$ pytest test/test_ops.py -vvv -k test_masks_box
============================================= test session starts =============================================
platform darwin -- Python 3.12.0, pytest-7.4.4, pluggy-1.3.0 -- /Users/atharvas/miniconda3/envs/torchvision/bin/python
cachedir: .pytest_cache
rootdir: /Users/atharvas/Desktop/projects/000_uncategorized/vision
configfile: pytest.ini
plugins: mock-3.12.0
collected 1440 items / 1439 deselected / 1 selected

test/test_ops.py::TestMasksToBoxes::test_masks_box PASSED                                               [100%]

============================================== warnings summary ===============================================
../../../../miniconda3/envs/torchvision/lib/python3.12/site-packages/torch/jit/frontend.py:1209
  /Users/atharvas/miniconda3/envs/torchvision/lib/python3.12/site-packages/torch/jit/frontend.py:1209: DeprecationWarning: ast.Str is deprecated and will be removed in Python 3.14; use ast.Constant instead
    elif isinstance(value, ast.Str):

../../../../miniconda3/envs/torchvision/lib/python3.12/site-packages/torch/jit/frontend.py:1210
  /Users/atharvas/miniconda3/envs/torchvision/lib/python3.12/site-packages/torch/jit/frontend.py:1210: DeprecationWarning: Attribute s is deprecated and will be removed in Python 3.14; use value instead
    s += value.s

test/test_ops.py::TestMasksToBoxes::test_masks_box
  /Users/atharvas/miniconda3/envs/torchvision/lib/python3.12/site-packages/_pytest/python.py:194: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/atharvas/Desktop/projects/000_uncategorized/vision/test/assets/masks.tiff'>
    result = testfunction(**testargs)
  Enable tracemalloc to get traceback where the object was allocated.
  See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info.

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
=============================== 1 passed, 1439 deselected, 3 warnings in 0.86s ================================

Thanks for the PR @atharvas
The test failure in https://github.com/pytorch/vision/actions/runs/7394640746/job/20496609120?pr=8194 seems relevant, as SimpleCopyPaste internally relies on masks_to_boxes.
But beyond the correctness issue, I am wondering whether such a change would bring a critical improvement. Saving 1MB isn't really a problem, and the time performance benefits are unclear when batch size is reasonable (i.e. < 1024?). Considering the proposed code is a lot more complex than the previous one, we should only be comfortable merging this PR if it could remove a known bottleneck. Did you find that masks_to_boxes performance was problematic in your own training runs?

Hi! Thanks for the update. Just fixed the error after recreating it on a linux box. Sorry about that!
(torchvision) asehgal@ubuntu:~/vision$ pytest test/test_ops.py -vvv -k test_masks_box
================================================== test session starts ==================================================
platform linux -- Python 3.12.0, pytest-7.4.0, pluggy-1.0.0 -- /home/asehgal/env/miniconda3/envs/torchvision/bin/python
cachedir: .pytest_cache
rootdir: /home/asehgal/vision
configfile: pytest.ini
plugins: mock-3.10.0
collected 1440 items / 1439 deselected / 1 selected

test/test_ops.py::TestMasksToBoxes::test_masks_box PASSED                                                         [100%]

=================================================== warnings summary ====================================================
../env/miniconda3/envs/torchvision/lib/python3.12/site-packages/torch/jit/frontend.py:1209
  /home/asehgal/env/miniconda3/envs/torchvision/lib/python3.12/site-packages/torch/jit/frontend.py:1209: DeprecationWarning: ast.Str is deprecated and will be removed in Python 3.14; use ast.Constant instead
    elif isinstance(value, ast.Str):

../env/miniconda3/envs/torchvision/lib/python3.12/site-packages/torch/jit/frontend.py:1210
  /home/asehgal/env/miniconda3/envs/torchvision/lib/python3.12/site-packages/torch/jit/frontend.py:1210: DeprecationWarning: Attribute s is deprecated and will be removed in Python 3.14; use value instead
    s += value.s

test/test_ops.py::TestMasksToBoxes::test_masks_box
  /home/asehgal/env/miniconda3/envs/torchvision/lib/python3.12/site-packages/_pytest/python.py:194: ResourceWarning: unclosed file <_io.BufferedReader name='/home/asehgal/vision/test/assets/masks.tiff'>
    result = testfunction(**testargs)
  Enable tracemalloc to get traceback where the object was allocated.
  See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info.

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
==================================== 1 passed, 1439 deselected, 3 warnings in 1.76s =====================================
(torchvision) asehgal@ubuntu:~/vision$ pytest -s test/test_prototype_transforms.py
================================================== test session starts ==================================================
platform linux -- Python 3.12.0, pytest-7.4.0, pluggy-1.0.0
rootdir: /home/asehgal/vision
configfile: pytest.ini
plugins: mock-3.10.0
collected 24 items

test/test_prototype_transforms.py ........................

================================================== 24 passed in 2.32s ===================================================
(torchvision) asehgal@ubuntu:~/vision$

About whether this is a critical improvement
For my use case yes, however, I'm not sure for the community at large. My codebase is private right now, but here's an example of this bottleneck "in the wild:"
This code processes a batch of B videos, each of trajectory length T, and containing N slots (slots=object masks, for what it's worth). Notice that the batch size is changed to B*T*N
https://github.com/pairlab/SlotFormer/blob/10a6d9b7bc05ef2397ce2586da3fc0212f8c47aa/slotformer/video_prediction/vp_utils.py#L53
Internally, the masks_to_bboxes method is called with the expectation it returns fast:
https://github.com/pairlab/SlotFormer/blob/10a6d9b7bc05ef2397ce2586da3fc0212f8c47aa/slotformer/video_prediction/vp_utils.py#L49
However, because the apparent batch size is actually B*T*N (In testing this is 256*64*7=114688 and in training it's 256*10*7=17920) the operation ends up becoming a subtle bottleneck.

Thank you for the details @atharvas . That SGTM. Before merging, do you mind running the benchmark on CUDA as well to make sure there's no slow-down for GPUs? If that were to be the case, we could just have 2 paths (one for CPU, one for GPU)

Hi!
Here are the results running on a GPU [updated script here]. This is an NVIDIA RTX 2080 Ti. I increased the max batch size to $2^{15}$.
Speed Comparison:

Peak Memory Comparison:

The second graph is interesting! It looks like the new implementation uses up more VRAM (in line with @pmeier's commend in #8184 ). I did an analysis of the GPU allocations using torch.cuda.memory_snapshot and each intermediate call to torch.any and torch.argmax allocates a $(B, 64)$ and $(B, 1)$ sized tensor on the GPU. The memory is reclaimed as soon as the function exits. Hence, the peak memory is higher for the new implementation, while the "active allocated" memory is the same as the original function.
@NicolasHug Do you think this warrants a separate pathway for CPU and GPU?

If I'm not mistaken this new implementation will currently return a bounding covering the entire image in the special case that a mask is completely empty:
E.g.
>>> x1 = torch.tensor([[False,False,False]]).float().argmax(dim=1)
>>> x2 = (3 - 1) - torch.tensor([[False,False,False]]).float().flip(dims=[1]).argmax(dim=1)
>>> x1, x2
(tensor([0]), tensor([2]))

Currently pytorch throws this exception in this case:
RuntimeError: min(): Expected reduction dim to be specified for input.numel() == 0. Specify the reduction dim with the 'dim' argument.

(However, ideally I'd much prefer to get a degenerate box [0, 0, 0, 0], or [inf, inf, -inf, -inf], or [nan, nan, nan, nan] or anything like that which I can test for.)


Alphabetize expeirments

Both in the "add experiment" drop down and in the batteries list of experiments

The add experiment list is in alphabetical order but the experiments in the battery list are in the order you added them. I don't think this is necessarily a problem: #26 is more important.

Looks like the data table has a bug, otherwise you could sort, and this issue would be resolved. Let me look into this.

ok table is fixed, so experiments are sortable by field of choice.


Segment/Amplitude events are not being reported since v1.16.0-alpha4

Describe the bug
Segment/Amplitude instrumentation events have not been reported since v1.16.0-alpha4.
@ochorocho reports on Twitter getting ""Instrumentation is opted in, but SegmentKey is not available.""

It looks to me like the key reason we're not seeing stats is that the "version" attribute wasn't being reported here. The segment events are actually happening, but without "version", which is what we key on in Amplitude for a number of things.
The "last started version" in global_config.yaml has always been done wrong, so requesting opt-in is not always done right.


[SPARK-3359] [DOCS] More changes to resolve javadoc 8 errors that will help unidoc/genjavadoc compatibility

What changes were proposed in this pull request?
These are yet more changes that resolve problems with unidoc/genjavadoc and Java 8. It does not fully resolve the problem, but gets rid of as many errors as we can from this end.
How was this patch tested?
Jenkins build of docs

Test build #62374 has started for PR 14221 at commit ea88845.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/62374/
Test PASSed.

Merging in master/2.0.


Regression: test.only does not group skipped tests anymore

🐛 Bug Report
According to #2593 a .only on a test should remove the other tests from the test output.

To Reproduce
Steps to reproduce the behavior:

Choose a testcase
Annotate it with .only:

it.only("should print only one test", async () => {
await Promise.resolve(true)
}

Run jest

Expected behavior
Only the single test should be in the output.
Link to repl or repo (highly encouraged)
https://repl.it/repls/NavajowhiteRemoteOutlier
envinfo
Ubuntu 18.04 , Node 10.16.3.

This behavior was changed in v23 if I remember correctly, so it works as expected.

@thymikee  I'm using 24.9.0 and it still shows skipped tests. Can you reopen?

@sheerun If you have a minimal repro case we can download, please create a new issue and post there.

@thymikee I don't get it. Author of this issue already posted issue and minimal repro that you can even run in browser

It was changed with this PR: https://github.com/facebook/jest/pull/8038 to fix #7999.
@SimenB do you think we should bring back grouping skipped tests and leave todo as is now?

This issue happens in 24.9.0 which has been released in August while this PR has been merged in March.. It is a regression

(it's happening not in verbose mode, but normal mode)

Also my use case: I have 120 tests and have .only on just one of them. When running jest with default settings (also when using --watchAll), all 119 skipped tests are printed, instead of just one that interests me.

Let's reopen and discuss. I think changing the behavior for test.skip in #8038 was not necessary, also not requested in #7999. It was also an oversight from my side as a reviewer.

Any chance to revert this change?

Any news here? just hit this as well. Very annoying.

I am seeing the same issue here, when I focus on a few tests out of dozens. Any updates?

Happy yearversary of this issue everyone...

Still actual in 27.4.7

Still an issue in 29.3.0


vghmac operation ordering for improved software compatibility

OpenSSL implementation:

https://github.com/openssl/openssl/blob/e44b34185268e99ee2dc499073cf56d0465d60e2/crypto/modes/gcm128.c

# define GCM_MUL(ctx)      ctx->funcs.gmult(ctx->Xi.u,ctx->Htable)
# if defined(GHASH_ASM) || !defined(OPENSSL_SMALL_FOOTPRINT)
#  define GHASH(ctx,in,len) ctx->funcs.ghash((ctx)->Xi.u,(ctx)->Htable,in,len)

It looks like OpenSSL support either GCM_MUL or GHASH as basic primitive for gcm128 mode implementation.
Generic ghash implementation exhibits xor then mul order as mentionned by @ptomsich in Jan 26th TG meeting:
https://github.com/openssl/openssl/blob/e44b34185268e99ee2dc499073cf56d0465d60e2/crypto/modes/gcm128.c#L545
        /* Emulate ghash if needed */
        for (i = 0; i < len; i += 16) {
            memcpy(tmp, &inp[i], sizeof(tmp));
            Xi[0] ^= tmp[0];
            Xi[1] ^= tmp[1];
            funcs.gmult(Xi, Htable);
        }

⚠ (will need someone more expert than me to make sure this is the proper code snippet to look at)
Linux implementation
	while (srclen >= GHASH_BLOCK_SIZE) {
		crypto_xor(dst, src, GHASH_BLOCK_SIZE);
		gf128mul_4k_lle((be128 *)dst, ctx->gf128);
		src += GHASH_BLOCK_SIZE;
		srclen -= GHASH_BLOCK_SIZE;
	}

https://github.com/torvalds/linux/blob/master/crypto/ghash-generic.c#L99
⚠ will need someone more expert than me to make sure this is the proper code snippet to look at, in particular how this implementation is specialized on a per-architecture basis
Previous discussion
https://github.com/riscv/riscv-crypto/issues/192

Your comment describes the situation well.
So, vghmac.vv performs the following operation: Y[i+1] = (Y[i] ⋅ H) ^ X[i+1].
OpenSSL requires clmult() (multiplication plus reduction) to be implemented.
The ghash() call is optional (but it needs to be decided at built time if it is available or not).
If ghash() is not provided, then it will be emulated with gmult() (as you have mentioned in your comment):
        /* Emulate ghash if needed */
        for (i = 0; i < len; i += 16) {
            memcpy(tmp, &inp[i], sizeof(tmp));
            Xi[0] ^= tmp[0];
            Xi[1] ^= tmp[1];
            funcs.gmult(Xi, Htable);

So ghash() is a loop (processing N 128-bit blocks) over gmult() plus a preceding XOR operation. I.e. Y[i+1] = ((Y[i] ^ X[i])  ⋅ H).
Linux uses the same idea. An example that implements this is the AArch64 backend, were we have the following code:
	do {
		const u8 *in = src;

		if (head) {
			in = head;
			blocks++;
			head = NULL;
		} else {
			src += GHASH_BLOCK_SIZE;
		}

		crypto_xor((u8 *)&dst, in, GHASH_BLOCK_SIZE);
		gf128mul_lle(&dst, &key->k);
	} while (--blocks);

This raises the question of how vghmac.vv can be integrated into such ghash() functions.
The current approach is to peel off the first and the last half loop iterations and do the following:
# void gcm_ghash_rv64i_zvkg(u64 Xi[2], const u128 Htable[16],
#                           const u8 *inp, size_t len);
gcm_ghash_rv64i_zvkg:
    vsetivli x0, 4, e32, m1, ta, ma
    vle32.v $vH, $Htable
    vle32.v $vXi, $Xi
    # First loop part
    vle32.v $vinp, $inp
    vxor.vv $vXi, $vXi, $vinp
    add $inp, $inp, 16
    add $len, $len, -16
    beqz $len, Lend
Lstep:
    vle32.v $vinp, $inp
    add $inp, $inp, 16
    add $len, $len, -16
    vghmac.vv $vXi, $vinp, $vH
    bnez $len, Lstep
Lend:
    # Final multiplication (no XOR operation)
    la $TMP0, Lzero
    vle32.v $Vzero, $TMP0
    vghmac.vv $vXi, $Vzero, $vH
    vse32.v $vXi, $Xi
    ret

So the first half is a vxor.vv and the last half becomes a vghmac.vv with a zero-block as XOR operand.
If we would have vghash.vv, which does Y[i+1] = ((Y[i] ^ X[i])  ⋅ H), the resulting code would become:
    vsetivli x0, 4, e32, m1, ta, ma
    vle32.v $vH, $Htable
    vle32.v $vXi, $Xi
Lstep:
    vle32.v $vinp, $inp
    add $inp, $inp, 16
    add $len, $len, -16
    vghash.vv $vXi, $vinp, $vH
    bnez $len, Lstep
Lend:
    vse32.v $vXi, $Xi
    ret

Thanks Christoph and Nicolas,
I think the code above is not quite right as the GHASH calculation starts off with a multiplication of vinp[0] and H. The current approach already takes this into account. The proposed approach needs to bypass the first XOR by forcing vxi[0] = 0.
If we increment the input pointers in the starting sequence of the current approach, the main loop is identical in both approaches. The ending code is different for the current approach as we have used up all of the cipher text outputs and so we need to feed in a zero as the last vinp value.
The current approach
# void gcm_ghash_rv64i_zvkg(u64 Xi[2], const u128 Htable[16],
#                           const u8 *inp, size_t len);
gcm_ghash_rv64i_zvkg:
    vsetivli x0, 4, e32, m1, ta, ma
    vle32.v $vH, $Htable
    vle32.v $vXi, $vinp     //vXi[0] = inp[0]
    add $inp, $inp, 16
    add $len, $len, -16
Lstep:
    vle32.v $vinp, $inp
    add $inp, $inp, 16
    add $len, $len, -16
    vghmac.vv $vXi, $vinp, $vH
    bnez $len, Lstep
Lend:
    # Final multiplication (no XOR operation)
    la $TMP0, Lzero
    vle32.v $Vzero, $TMP0
    vghmac.vv $vXi, $Vzero, $vH
    vse32.v $vXi, $Xi
    ret

The proposed approach
    vsetivli x0, 4, e32, m1, ta, ma
    vle32.v $vH, $Htable
    la $TMP0, Lzero
    vle32.v $vXi, $TMP0 // vXi[0] = 0
Lstep:
    vle32.v $vinp, $inp
    add $inp, $inp, 16
    add $len, $len, -16
    vghash.vv $vXi, $vinp, $vH
    bnez $len, Lstep
Lend:
    vse32.v $vXi, $Xi
    ret

I think the vghmac.vv made sense because I considered fusing the very last operation (see figure) which made the peeling more useful.

This approach does not seem compatible with most software implementations which rely on an elementary ghash_update like approach. As indicated by @kdockser this makes the counter approach epilog longer than the proposed approach.
I think there is a need for two extra vghash in the proposed approach, one to hash in the message length and one to hash in the final E_K(0) that I don't see in any of the proposals.
I think the proposed vghash (ADD then MUL) makes more sense (ease of software integration, and compatibility with the ghash update scheme) and I don't think it prevents us from implementing a future parallel evaluation scheme (it just modifies the epilog).
I think we may want to consider an extra instruction with xor-with-zero (gf128mul_le-like).
By the way why not use vmv.v.i $vXi, 0 to 0-ify a vector register (group) ?

Perhaps I am missing something, but I'm still not seeing how vghmac.vv  doesn't fit with existing software. If we can add gcm_ghash_rv64i_zvkg (as defined above) to OpenSSL with vghmac.vv as-is, why is there a need to redefine the instruction?
From the examples I have seen, there is no use of a ghash function in architecture-independent code that requires the inputs to be vXi[n], vinp[n], vH for each 128-bit block of cipher text.  Instead, it seems like architecture-specific code is called upon to perform the entire ghash calculation across all blocks of ciphertext. If that is the case,  it shouldn't matter if the inputs to vghmac.vv are  vXi[n], vinp[n+1], vH. Is there ever a case in architecture-independent code (that architecture-specific code cannot replace) where a ghash function is called upon to process a single block of cipher text?
Please show me where OpenSSL and/or Linux code mandates that the ciphertext input to ghash code must be  from the current iteration (i.e., vXi[n]) and not the next  iteration (i.e., vinp[n+1]).

I think the code above is not quite right as the GHASH calculation starts off with a multiplication of vinp[0] and H. The current approach already takes this into account. The proposed approach needs to bypass the first XOR by forcing vxi[0] = 0.

We have it integrated into OpenSSL and Linux. It passes tons of self-tests in both projects. This does not mean, that the code is perfect, but at least a good indicator that the integration is not entirely wrong.

The proposed approach needs to bypass the first XOR by forcing vxi[0] = 0.

The first multiplication always uses GCM_MUL() in OpenSSL (see function CRYPTO_gcm128_encrypt in crypto.modes/gcm128.c. Note, that the API is written such that data can be processed in one or more chunks. So the assumption that Xi[0] = inp[0] does not hold.
The diagram that @nibrunieAtSi5 posted shows exactly what OpenSSL is doing: Auth data 1 is multiplied by H and then GHASH() is called to do one or more iterations of the pink-highlighted operations. The Xi is the data coming from "left" (i.e. the input to XOR) and inp is pointing to Ciphertext [m..n].

By the way why not use vmv.v.i $vXi, 0 / vmv.v.i $vZero, 0 to 0-ify a vector register (group) ?

Yes, that's a better way to do that. Thanks!

I'm still not seeing how vghmac.vv doesn't fit with existing software

The issue is not "doesn't fit", but "could be improved to better fit to long existing SW APIs".

If we can add gcm_ghash_rv64i_zvkg (as defined above) to OpenSSL with vghmac.vv as-is, why is there a need to redefine the instruction?

To improve the compatibility to existing APIs in significantly wide-used OSS projects.

Please show me where OpenSSL and/or Linux code mandates that the ciphertext input to ghash code must be from the current iteration (i.e., vinp[n]) and not the next iteration (i.e., vinp[n+1]).

The OpenSSL implementation can be found in CRYPTO_gcm128_encrypt() (in crypto/modes/gcm128.c). Note, that this function does not represent a complete calculation, but is just a function to process a chunk of user data.
In Linux the abstractions are a bit more structured, but it works the same way. In essence, a struct shash_alg needs to be implemented, which includes the callback int (*update)(struct shash_desc *desc, const u8 *data, unsigned int len);. Like in the OpenSSL case, the function can be called multiple times.

My proposed change to Zvkg would be to introduce two instructions:

vgmult.vv vd, vs2...Multiplication in GF(2^128)
vghash.vv vd, vs2, vs1...XOR followed multiplication in GF(2^128)

OpenSSL's gmult() and ghash() functions could be implemented in the following way:
gcm_gmult_rv64i_zvkg:
    vsetivli__x0_4_e32_m1_ta_ma
    vle32_v $VS2, $Htable
    vle32_v $VD, $Xi
    vgmult_vv $VD, $VS2
    vse32_v $VD, $Xi
    ret

gcm_ghash_rv64i_zvkg:
    vsetivli__x0_4_e32_m1_ta_ma
    vle32_v $vH, $Htable
    vle32_v $vXi, $Xi
Lstep:
    vle32_v $vinp, $inp
    add $inp, $inp, 16
    add $len, $len, -16
    vghash_vv $vXi, $vinp, $vH
    bnez $len, Lstep
    vse32_v $vXi, $Xi
    ret

This code is not a draft, but tested code, that passes all OpenSSL tests.
I have implemented the whole proposal in QEMU, Binutils and OpenSSL.
Encodings are made up (for obvious reasons), but do not conflict with ratified RISC-V instructions.
You can find the corresponding changes in the following repositories:

QEMU: https://github.com/cmuellner/qemu/tree/riscv-zvk-ghash
Binutils: https://github.com/cmuellner/binutils-gdb/tree/riscv-zvk-v2-ghash
OpenSSL: https://github.com/cmuellner/openssl/tree/riscv-zvk-ghash

If you are interested in testing this, I can recommend the following test suite, which is executed in a few seconds and includes many GCM tests:
# Assuming Binutils, QEMU and OpenSSL are already built

cd path/to/openssl

# Enable all Zvk* extensions in QEMU
export QEMU_CPU=rv64,zba=true,zbb=true,zbc=true,zbs=true,zbkb=true,zbkc=true,zbkx=true,zkn=true,zks=true,v=true,vlen=256,x-zvkb=true,x-zvkg=true,x-zvknha=true,x-zvknhb=true,x-zvkns=true,x-zvksed=true,x-zvksh=true
# Enable all Zvk* extensions in OpenSSL (i.e. tell OpenSSL to execute optimized routines)
export OPENSSL_riscvcap=rv64gcv_zba_zbb_zbc_zbs_zvkb_zvkg_zvknha_zvknhb_zvkns_zvksed_zvksh

# Run the EVP AES test suite, which includes tests for all cipher modes (ECB, CBC, GCM, etc.)
path/to/qemu-riscv64 test/evp_test -iter 1 ./test/recipes/30-test_evp_data/evpciph_aes_common.txt

To make sure the Zvkg instructions are indeed executed, you can disable the instructions in QEMU (set x-zvkg=false in the QEMU_CPU string), keep the OPENSSL_riscvcap variable as is, and run the tests again. You will get SIGILL errors, which are caused by illegal instructions, which can only be the caused by Zvkg instructions.

Given the various implementation choices for a ghash (i.e. gf-mult prefixed or postfixed with a gf-add), I can only reiterate on our discussion in last week's crypto-vector meeting: splitting the gf-add (i.e. the already existing vxor.vv) into a separate instruction allows to either pre- or postfix the gf-mult with this processing step.
We can give guidance as part of the specification to schedule these instructions back-to-back to make it easier for implementors to fuse them into macro-ops.

Thanks to everyone for the input.
The question before us is not whether an alternative form of the instruction can be used in OpenSSL and Linux but whether the currently defined vghmac.vv can be efficiently used in them. This issue cannot be resolved until code is written that uses the current instruction as efficiently as possible.
As for adding a gfmult-type instruction, we had considered that at the time that we defined vghmac.vv but decided against it as the current vghmac.vv instruction already provides this capability when the vs2 holds "0". Creating a zeroed-out register is trivial as it is just VXOR vd, vt, vt and only needs to be executed once before any number of  vghmac.vv instructions are executed as a gfmult-type instruction.

OK, I think I have been able to make sense of it all.
First of all, vghmac.vv (let's call it MAC) performs Y[i+1] = (Y[i] ⋅ H) ^ X[i]), as Christoph originally said. The alternative approach that is being recommended (Let's call it ACCMUL) is Y[i+1] = ((Y[i]^ X[i]) ⋅ H). The difference is not in whether X[i] or X[i+1] is being  added, it is in the definition of Y[i].
We originally decided on the MAC approach for this instruction since GHASH  is a series of multiply-adds (see the diagram in Nicolas' post above), starting with Auth Data 1 and Ciphertext 1  as the multiplicand and addend respectively. This would make Y[0]=(Auth Data 1) and would require that the ACCMUL-based code to start with X[0]=0 so that the first ACCMUL only performed a multiply.  However, looking at the OpenSSL C code more closely, it appears that Y[0]= (_Auth Data 1_⋅ H) from a multiplication that is performed before gcm_ghash_rv64i_zvkg is called.
With that understanding, along with Christoph's explanation that the ghash function doesn't necessarily perform "all rounds" of the NIST defined GHASH, it seems that the C code is defining Y[i] according to ACCMUL semantics.
So, it seems that the best course of action is go with the ACCMUL approach to match the expectations of OpenSSL and Linux. As Philipp mentions above, there is value in having a standalone gfmult-type instruction as this enables implementations to fuse this with an XOR instruction should implementors want the MAC semantics. Alternatively we could offer both ACCMUL and MAC instructions. Let's discuss this further and close on this issue in tomorrow's Crypto TG meeting.

In yesterday's Crypto TG meeting we discussed this and decided that we need to have an ACCMUL instruction as that fits in with the needs and requirements of OpenSSL and Linux code for GCM. But, we also didn't want to be bent too much by the choices that were made by a few libraries (even if they enjoy widespread usage). So, we decided to keep the current MAC instruction as well.
TLDR: skip to the final paragraph
However, when I went to add the ACCMUL instruction, I found that we had used up all of the encoding space that had been carved out for Vector crypto instructions with three source operands. While we could ask for more space, I noticed that we still have space for instructions with two source operands. So I thought back to our discussion of adding a GHASH-MUL instruction. While this could be emulated with an ACCMUL instruction with the X[i] input = 0, there is still a benefit to having a standalone GHASH-MUL instruction: as Philipp had pointed out, this would enable implementers to fuse this instruction with a subsequent XOR, which would give the functionality of the MAC instruction.
Since the MAC instruction is just an ACCMUL with X[i] tied to zero, it makes sense to use the same inputs as in ACCMUL. This means that vd and vs2 would  point to the two source operands, just like our AES, and vsm4r instructions. This allows us to share the same funct6 encoding and differentiate this instruction by bits in the vs1 field of the encoding. Basically, we can add this instruction at minimal cost as we would use an encoding that would otherwise be unusable, and implementers could reuse the hardware for ACCMUL.
While we could decide to just have the GHASH-MUL instruction which coders could precede or follow with an XOR to emulate an ACCMUL or MAC instruction, this would significantly limit AES-GCM (or SM4-GCM) performance. While implementations could fuse these cases into a single instruction ACCMUL and/or MAC instruction, this seems like a big ask when it is so easy to provide an ACCMUL instruction.
I didn't want to wait until next week's meeting to resolve this so I took the liberty of updating the specification to replace MAC with ACCMUL and add a MUL instruction.   Please respond ASAP if you object to (or approve of) this change.

I guess it is no surprise that I support this change!

I am Ok with this change (even If I like the fact that MACs are easier to pipeline and overlap in uarchs), the ease of software integration sold it to me.

I would prefer the name vghash to vghsh (we already have "long" 6-letter mnemonic such as vclmul)

Originally we had named the vgmac instruction vghash but the TG decided against this because --- as you pointed out --- it is just one iteration of the loop within the full algorithm.


k8s 1.16

Had to update Azure/azure-sdk-for-go and Azure/go-autorest/: was getting ambiguous import errors, similar to https://github.com/kubernetes/client-go/issues/628#issuecomment-508487691
Updated accordingly.

lgtm


module unification: initializer test files are included for ember serve

Relates to #42. Mistakenly opened here: https://github.com/ember-cli/ember-cli-chai/issues/37.
reproduction

clone the reproduction repo git clone --single-branch -b bug-initializer-test https://github.com/efx/poc-bug.git  && cd poc-bug && npm install && bower install
run ember build or ember serve
Notice that the initalizer test files are being included when they shouldn't.

Seems like we need to allow excludes? 🤔

Closed by #53


Retry cluster pipeline read errors

Fixes #930.

@vmihailenco feel free to close my PR and merge yours, thanks!

I've merged https://github.com/go-redis/redis/pull/936/files - hopefully it will not cause any problems.
Thanks for this PR anyway. It was very helpful.


Use default zip extension for Windows archives

Could you explain why? I think zip works on non-windows platforms so I don't understand the motivation.


Search node_modules recursively

Hello Takuya, Thanks for the library. We're using it in a monorepo setup. So, we need to search for node_modules in root directory.
I've added (copy/pasted 😆) the below approach from react-native-mmkv by marc.
Let me know if any changes are required. Also, love your videos ❤

Thanks!


SCSS sourcemaps for component scss fail in Safari

🐞 Bug report
Command (mark with an x)

[ ] new
[ ] build
[ x] serve
[ ] test
[ ] e2e
[ ] generate
[ ] add
[ ] update
[ ] lint
[ ] xi18n
[ ] run
[ ] config
[ ] help
[ ] version
[ ] doc

Description
Safari does not correctly use SCSS source maps
🔬 Minimal Reproduction
Simple steps to reproduce this bug.

Create a new project with new new and scss.
Add styles to  styles.scss
import another scss partial into styles.scss,
generate a component and add style rules to the component's scss file.

You can find a simple project with only this here: https://github.com/smlombardi/scss-cli-test

run the project.
Inspect the three headers in dev tools in Chrome.  You can see the originating scss file where each rule lives, as expected

Try the same inspection in Safari.  The component SCSS is not identified:

This has been like this as long as I can remember, I keep hoping newer versions of the CLI will fix this so I can use Safari for scss development.
You can see my angular.json config at the repo or directly here: https://github.com/smlombardi/scss-cli-test/blob/master/angular.json
🌍 Your Environment

Angular CLI: 10.0.7
Node: 12.18.1
OS: darwin x64

Angular: 10.0.12
... animations, common, compiler, compiler-cli, core, forms
... platform-browser, platform-browser-dynamic, router
Ivy Workspace: Yes

Package                           Version
-----------------------------------------------------------
@angular-devkit/architect         0.1000.7
@angular-devkit/build-angular     0.1000.7
@angular-devkit/build-optimizer   0.1000.7
@angular-devkit/build-webpack     0.1000.7
@angular-devkit/core              10.0.7
@angular-devkit/schematics        10.0.7
@angular/cli                      10.0.7
@ngtools/webpack                  10.0.7
@schematics/angular               10.0.7
@schematics/update                0.1000.7
rxjs                              6.5.5
typescript                        3.9.7
webpack                           4.43.0

Anything else relevant?
Safari Version 13.1.2 (156<IP_ADDRESS>.3)
Safari Technology Preview Release 112 (Safari 14.0, WebKit 156<IP_ADDRESS>.1)
MacOS 10.15.6 (19G2021)

Hi @smlombardi,
It looks that Safari 13 is ignoring sourcemaps which are inlined in the style tag such as:
<style>
.test[_ngcontent-yer-c11] {
  color: #c89bf1;
}

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvdGVzdC90ZXN0LmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0UsY0FBQTtBQUNGIiwiZmlsZSI6InNyYy9hcHAvdGVzdC90ZXN0LmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLnRlc3Qge1xuICBjb2xvcjogbGlnaHRlbigkY29sb3I6Ymx1ZXZpb2xldCwgJGFtb3VudDogMjUpO1xufVxuIl19 */
<style>

When placing the above CSS & sourcemap in an .css file. Safari does point to the correct source, therefore it's excluded that the generated source map is malformed or corrupted.
From the above observations, I am going this issue as this isn't actionable by the Angular tooling team.

@alan-agius4 Is there anything I can do in setup to remedy this, or is it just a Safari thing?

I don’t think there is anything that you can do.

I reported this to Apple.


feature request: add update option

add an option to update bloxshade instead of having to reinstall it and all the presets

that already exist in settings and create shortcuts


Fixed bug in examples page

Before this fix, viewing the examples page on a phone would break the formatting.  This change ensures the examples page can be viewed on any sized screen.
Specifically, the bug occurred when hovering the mouse over each example:

Thanks @harveymannering. I'll test it locally and then merge.


Launcher client app status to app context

Closed in support of https://github.com/Cooperation-org/linked-trust-content-mod/pull/32


Isolate LED handling to a single function

By doing this we can rely on remembered states and don't have to read the pins

Fixed.


The following assertion was thrown during paint(): RRect argument contained a NaN value.

Steps to reproduce the issue:

Run the the code below in either "beta" or "master" channel in an iOS device or emulator:

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
        visualDensity: VisualDensity.adaptivePlatformDensity,
      ),
      home: Login(),
    );
  }
}

class Login extends StatefulWidget {
  const Login({Key key}) : super(key: key);

  @override
  _LoginState createState() => _LoginState();
}

class _LoginState extends State<Login> with TickerProviderStateMixin {
  FocusNode emailFocusNode;
  FocusNode passwordFocusNode;
  TextEditingController emailTextController;
  TextEditingController passwordTextController;
  final PageController pageController = PageController();

  Duration duration = Duration(milliseconds: 200);
  Curve tonalCurve = Curves.easeIn;

  @override
  void initState() {
    super.initState();

    emailTextController = TextEditingController();
    emailFocusNode = FocusNode()..requestFocus();
    passwordTextController = TextEditingController();
    passwordFocusNode = FocusNode();
  }

  @override
  void dispose() {
    emailTextController.dispose();
    emailFocusNode.dispose();
    passwordTextController.dispose();
    passwordFocusNode.dispose();
    super.dispose();
  }

  Widget fieldLabel({String label}) {
    return Container(
      width: MediaQuery.of(context).size.width,
      padding: const EdgeInsets.only(
        top: 15,
        left: 24,
        right: 24,
      ),
      child: Text(
        label,
        textAlign: TextAlign.center,
      ),
    );
  }

  @override
  Widget build(BuildContext context) {
    final screenSize = MediaQuery.of(context).size;

    final emailScreen = Scaffold(
      appBar: AppBar(),
      body: SizedBox(
        width: screenSize.width,
        child: Column(
          children: [
            fieldLabel(
              label: 'email',
            ),
            TextField(
              controller: emailTextController,
              keyboardType: TextInputType.emailAddress,
              autofocus: true,
            ),
          ],
        ),
      ),
    );

    final passwordScreen = Scaffold(
      appBar: AppBar(),
      body: SizedBox(
        width: screenSize.width,
        child: Column(
          children: [
            fieldLabel(
              label: 'password',
            ),
            TextField(
              obscureText: true,
              controller: passwordTextController,
              textInputAction: TextInputAction.go,
              autofocus: true,
            ),
          ],
        ),
      ),
    );

    return Container(
      child: PageView(
        controller: pageController,
        children: [
          emailScreen,
          passwordScreen,
        ],
      ),
    );
  }
}

Type some text in the TextField.
Swipe between the 1st and 2nd page.
An error will be thrown, but the app doesn’t crash. This happens regardless if the TextField has a text or not.

Expected results:
iOS Flutter app shouldn’t throw errors. The errors thrown are similar with https://github.com/flutter/flutter/issues/64785 - per thread, the issue should be fixed by using master channel. However, using the master channel on the repro above still throws errors.
Actual results:
The errors are only reproducible in iOS. Android build works fine.

Logs
════════ Exception caught by rendering library ═════════════════════════════════════════════════════
The following assertion was thrown during paint():
RRect argument contained a NaN value.
'dart:ui/painting.dart':
Failed assertion: line 37: '<optimized out>'

Either the assertion indicates an error in the framework itself, or we should provide substantially more information in this error message to help you determine and fix the underlying cause.
In either case, please report this assertion by filing a bug on GitHub:
  https://github.com/flutter/flutter/issues/new?template=BUG.md

The relevant error-causing widget was:
  TextField file:///Users/{USER}/Downloads/dev/flutter/flutter_app2/lib/main.dart:105:13
When the exception was thrown, this was the stack:
#2      _rrectIsValid (dart:ui/painting.dart:37:10)
#3      Canvas.drawRRect (dart:ui/painting.dart:3742:12)
#4      RenderEditable._paintCaret (package:flutter/src/rendering/editable.dart:2042:14)
#5      RenderEditable._paintContents (package:flutter/src/rendering/editable.dart:2224:7)
#6      RenderEditable.paint (package:flutter/src/rendering/editable.dart:2267:7)
...

No issues found! (ran in 2.2s)

Flutter beta channel, flutter doctor -v
[✓] Flutter (Channel beta, 1.22.0-12.1.pre, on Mac OS X 10.15.6 19G2021, locale en-PH)
    • Flutter version 1.22.0-12.1.pre at /Users/{USER}/Downloads/flutter
    • Framework revision 8b3760638a (7 days ago), 2020-09-15 17:47:13 -0700
    • Engine revision 4654fc6cf6
    • Dart version 2.10.0 (build 2.10.0-110.3.beta)

[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
    • Android SDK at /Users/{USER}/Library/Android/sdk
    • Platform android-29, build-tools 29.0.2
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 11.3.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 11.3.1, Build version 11C505
    • CocoaPods version 1.9.0

[✓] Android Studio (version 4.0)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin version 49.0.2
    • Dart plugin version 193.7547
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)

[✓] VS Code (version 1.49.0)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.12.2

[!] Connected device
    ! No devices available

! Doctor found issues in 1 category.

Flutter master channel flutter doctor -v
[✓] Flutter (Channel master, 1.22.0-10.0.pre.317, on Mac OS X 10.15.6 19G2021 x86_64, locale en-PH)
    • Flutter version 1.22.0-10.0.pre.317 at /Users/{USER}/Downloads/flutter
    • Framework revision 10febea877 (4 hours ago), 2020-09-23 07:22:10 +0200
    • Engine revision 57ee3d4b32
    • Dart version 2.10.0 (build 2.10.0-156.0.dev)

[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
    • Android SDK at /Users/{USER}/Library/Android/sdk
    • Platform android-29, build-tools 29.0.2
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 11.3.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 11.3.1, Build version 11C505
    • CocoaPods version 1.9.0

[✓] Android Studio (version 4.0)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin version 49.0.2
    • Dart plugin version 193.7547
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)

[✓] VS Code (version 1.49.0)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.12.2

[!] Connected device
    ! No devices available

! Doctor found issues in 1 category.

code sample
import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
        visualDensity: VisualDensity.adaptivePlatformDensity,
      ),
      home: Login(),
    );
  }
}

class Login extends StatefulWidget {
  const Login({Key key}) : super(key: key);

  @override
  _LoginState createState() => _LoginState();
}

class _LoginState extends State<Login> with TickerProviderStateMixin {
  FocusNode emailFocusNode;
  FocusNode passwordFocusNode;
  TextEditingController emailTextController;
  TextEditingController passwordTextController;
  final PageController pageController = PageController();

  Duration duration = Duration(milliseconds: 200);
  Curve tonalCurve = Curves.easeIn;

  @override
  void initState() {
    super.initState();

    emailTextController = TextEditingController();
    emailFocusNode = FocusNode()..requestFocus();
    passwordTextController = TextEditingController();
    passwordFocusNode = FocusNode();
  }

  @override
  void dispose() {
    emailTextController.dispose();
    emailFocusNode.dispose();
    passwordTextController.dispose();
    passwordFocusNode.dispose();
    super.dispose();
  }

  Widget fieldLabel({String label}) {
    return Container(
      width: MediaQuery.of(context).size.width,
      padding: const EdgeInsets.only(
        top: 15,
        left: 24,
        right: 24,
      ),
      child: Text(
        label,
        textAlign: TextAlign.center,
      ),
    );
  }

  @override
  Widget build(BuildContext context) {
    final screenSize = MediaQuery.of(context).size;

    final emailScreen = Scaffold(
      appBar: AppBar(),
      body: SizedBox(
        width: screenSize.width,
        child: Column(
          children: [
            fieldLabel(
              label: 'email',
            ),
            TextField(
              controller: emailTextController,
              keyboardType: TextInputType.emailAddress,
              autofocus: true,
            ),
          ],
        ),
      ),
    );

    final passwordScreen = Scaffold(
      appBar: AppBar(),
      body: SizedBox(
        width: screenSize.width,
        child: Column(
          children: [
            fieldLabel(
              label: 'password',
            ),
            TextField(
              obscureText: true,
              controller: passwordTextController,
              textInputAction: TextInputAction.go,
              autofocus: true,
            ),
          ],
        ),
      ),
    );

    return Container(
      child: PageView(
        controller: pageController,
        children: [
          emailScreen,
          passwordScreen,
        ],
      ),
    );
  }
}

flutter doctor -v
[✓] Flutter (Channel beta, 1.22.0-12.1.pre, on Mac OS X 10.15.6 19G2021, locale
    en-GB)
    • Flutter version 1.22.0-12.1.pre at /Users/tahatesser/Code/flutter_beta
    • Framework revision 8b3760638a (8 days ago), 2020-09-15 17:47:13 -0700
    • Engine revision 4654fc6cf6
    • Dart version 2.10.0 (build 2.10.0-110.3.beta)

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
    • Android SDK at /Users/tahatesser/Code/sdk
    • Platform android-30, build-tools 30.0.2
    • ANDROID_HOME = /Users/tahatesser/Code/sdk
    • Java binary at: /Applications/Android
      Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build
      1.8.0_242-release-1644-b3-6222593)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 12.0)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 12.0, Build version 12A7209
    • CocoaPods version 1.9.3

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 4.0)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin version 49.0.2
    • Dart plugin version 193.7547
    • Java version OpenJDK Runtime Environment (build
      1.8.0_242-release-1644-b3-6222593)

[✓] VS Code (version 1.49.1)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.14.1

[✓] Connected device (4 available)
    • RMX2001 (mobile)   • EUYTFEUSQSRGDA6D                     • android-arm64
      • Android 10 (API 29)
    • iPhone 11 (mobile) • 9A8EFBFE-A806-4FF9-ACA5-F3F98D94979D • ios
      • com.apple.CoreSimulator.SimRuntime.iOS-14-0 (simulator)
    • Web Server (web)   • web-server                           • web-javascript
      • Flutter Tools
    • Chrome (web)       • chrome                               • web-javascript
      • Google Chrome 85.0.4183.102

• No issues found!

flutter doctor -v
[✓] Flutter (Channel dev, 1.23.0-4.0.pre, on Linux, locale en_US.UTF-8)
    • Flutter version 1.23.0-4.0.pre at /home/taha/Code/flutter_dev
    • Framework revision 83dd176777 (2 days ago), 2020-09-22 12:04:44 -0700
    • Engine revision 2abe69c608
    • Dart version 2.10.0 (build 2.10.0-136.0.dev)

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
    • Android SDK at /home/taha/Code/sdk
    • Platform android-30, build-tools 30.0.2
    • ANDROID_HOME = /home/taha/Code/sdk
    • Java binary at: /home/taha/Code/android-studio/jre/bin/java
    • Java version OpenJDK Runtime Environment (build
      1.8.0_242-release-1644-b3-6222593)
    • All Android licenses accepted.

[✓] Chrome - develop for the web
    • Chrome at google-chrome

[✓] Linux toolchain - develop for Linux desktop
    • clang version 10.0.0-4ubuntu1
    • cmake version 3.16.3
    • ninja version 1.10.0
    • pkg-config version 0.29.1

[✓] Android Studio (version 4.0)
    • Android Studio at /home/taha/Code/android-studio
    • Flutter plugin version 49.0.2
    • Dart plugin version 193.7547
    • Java version OpenJDK Runtime Environment (build
      1.8.0_242-release-1644-b3-6222593)

[✓] VS Code (version 1.49.1)
    • VS Code at /usr/share/code
    • Flutter extension version 3.14.1

[✓] Connected device (3 available)
    • Linux (desktop)  • linux      • linux-x64      • Linux
    • Web Server (web) • web-server • web-javascript • Flutter Tools
    • Chrome (web)     • chrome     • web-javascript • Google Chrome
      85.0.4183.121

• No issues found!

flutter doctor -v
[✓] Flutter (Channel master, 1.22.0-10.0.pre.340, on Mac OS X 10.15.6 19G2021
    x86_64, locale en-GB)
    • Flutter version 1.22.0-10.0.pre.340 at
      /Users/tahatesser/Code/flutter_master
    • Framework revision 1fef5912cf (3 hours ago), 2020-09-23 21:37:08 -0700
    • Engine revision dd35b5b659
    • Dart version 2.10.0 (build 2.10.0-156.0.dev)

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
    • Android SDK at /Users/tahatesser/Code/sdk
    • Platform android-30, build-tools 30.0.2
    • ANDROID_HOME = /Users/tahatesser/Code/sdk
    • Java binary at: /Applications/Android
      Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build
      1.8.0_242-release-1644-b3-6222593)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 12.0)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 12.0, Build version 12A7209
    • CocoaPods version 1.9.3

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 4.0)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin version 49.0.2
    • Dart plugin version 193.7547
    • Java version OpenJDK Runtime Environment (build
      1.8.0_242-release-1644-b3-6222593)

[✓] VS Code (version 1.49.1)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.14.1

[✓] Connected device (5 available)
    • RMX2001 (mobile)   • EUYTFEUSQSRGDA6D                     • android-arm64
      • Android 10 (API 29)
    • iPhone 11 (mobile) • 9A8EFBFE-A806-4FF9-ACA5-F3F98D94979D • ios
      • com.apple.CoreSimulator.SimRuntime.iOS-14-0 (simulator)
    • macOS (desktop)    • macos                                • darwin-x64
      • Mac OS X 10.15.6 19G2021 x86_64
    • Web Server (web)   • web-server                           • web-javascript
      • Flutter Tools
    • Chrome (web)       • chrome                               • web-javascript
      • Google Chrome 85.0.4183.102

• No issues found!

@LongCatIsLooong Your PR https://github.com/flutter/flutter/pull/61940 fixed similar errors in https://github.com/flutter/flutter/issues/64785, but I guess it's still possible to get errors in this case.  Any opinions on how we should handle this one?

It looks like we should stop RenderFollowerLayer from painting it content if its current transform transforms points to infinity?

Oh sorry _getPixelPerfectCursorOffset should return 0 if isFinite is false, instead of caretPosition.

Not sure if it makes any difference to the solution, but in the example provided by MaruQuarky, the issue does occur in Android as well. It's just much less frequent. I've run that example many times, and occasionally (say, one in 30 runs or so), the same exception (see the trace below) is thrown as that observed in iOS. This is consistent with the behaviour I'm seeing in my own app: Android throws occasionally, iOS frequently.

════════ Exception caught by rendering library ═════════════════════════════════════════════════════
Rect argument contained a NaN value.
'dart:ui/painting.dart':
Failed assertion: line 31: ''
The relevant error-causing widget was:
TextField file:///flutter_app/lib/main.dart:105:13
The following RenderObject was being processed when the exception was fired: RenderEditable#02e04 relayoutBoundary=up19
parentData:  (can use size)
constraints: BoxConstraints(w=411.4, 0.0<=h<=Infinity)
size: Size(411.4, 19.0)
cursorColor: Color(0xff4285f4)
showCursor: ValueNotifier#b7919(true)
maxLines: 1
minLines: null
selectionColor: Color(0xff90caf9)
textScaleFactor: 1.0
locale: en_US
selection: TextSelection(baseOffset: 8, extentOffset: 8, affinity: TextAffinity.downstream, isDirectional: false)
offset: ScrollPositionWithSingleContext#b819b(offset: 0.0, range: 0.0..0.0, viewport: 411.4, ScrollableState, ClampingScrollPhysics -> RangeMaintainingScrollPhysics, IdleScrollActivity#e6615, ScrollDirection.idle)
text: TextSpan
debugLabel: (englishLike subhead 2014).merge(blackMountainView subtitle1)
inherit: false
color: Color(0xdd000000)
family: Roboto
size: 16.0
weight: 400
baseline: alphabetic
decoration: TextDecoration.none
"••••••••"
RenderObject: RenderEditable#02e04 relayoutBoundary=up19
parentData:  (can use size)
constraints: BoxConstraints(w=411.4, 0.0<=h<=Infinity)
size: Size(411.4, 19.0)
cursorColor: Color(0xff4285f4)
showCursor: ValueNotifier#b7919(true)
maxLines: 1
minLines: null
selectionColor: Color(0xff90caf9)
textScaleFactor: 1.0
locale: en_US
selection: TextSelection(baseOffset: 8, extentOffset: 8, affinity: TextAffinity.downstream, isDirectional: false)
offset: ScrollPositionWithSingleContext#b819b(offset: 0.0, range: 0.0..0.0, viewport: 411.4, ScrollableState, ClampingScrollPhysics -> RangeMaintainingScrollPhysics, IdleScrollActivity#e6615, ScrollDirection.idle)
text: TextSpan
debugLabel: (englishLike subhead 2014).merge(blackMountainView subtitle1)
inherit: false
color: Color(0xdd000000)
family: Roboto
size: 16.0
weight: 400
baseline: alphabetic
decoration: TextDecoration.none
"••••••••"
════════════════════════════════════════════════════════════════════════════════════════════════════

Hi @jesper372
Please file a new issue with the exact description of what happens, logs, and the output of flutter doctor -v

Is this fixed? Im getting the same errors on v1.22.3

@jesper372 it would be difficult to investigate without a repro or a stacktrace with the call path. The call path that threw in the original issue should be fixed. Could you open a new issue with repro steps or a complete stacktrace?

@LongCatIsLooong @TahaTesser
I've opened a new issue for this - see #70610


I have made some changes on readme.md file on the installation sectio…

Hi
Today I have made a little bit of contribution to this project.

I have made some changes to the readme.md file on the installation section so that it gets easier for contributors to install the project.
I have added the .env.example file which did not exist in our project.
I have added .idea directory line into the .gitignore file so that .idea folder does not push into this project.

Please check and let me know if any changes are needed.
Thank you

Ok, if you want, I will remove these DB_HOST, PORT and DATABASE from the file. But before removing, may I know what will contributors do when any contributor want to use mysql?
Will they add these lines again to their local repository to use mysql?
I think, we can comment off those lines so that whenever they want to use mysql, they can uncomment it and use mysql. What do you think? Please let me know.
Thank you

I guess making SQLITE default makes more sense because it is easier to launch and does not require username, password or etc. but as you it is good to make MYSQL lines commented:
#DB_CONNECTION=mysql
#DB_HOST=<IP_ADDRESS>
#DB_PORT=3306
#DB_DATABASE=laravel
#DB_USERNAME=root
#DB_PASSWORD=

Ok, Thank you for your confirmation. I will comment those mysql lines soon. Thank you


Clarify v1.2 required for hello-node and remove 1.1 ui section.

PTAL

Just got a request to update the doc to clearly explain that the LB takes a while to come up.  Will update this to more closely match the 201 updates.

Nevermind, I already did this

Pushed to http://pwittrock.github.io/docs/hellonode/

The doc LGTM.

Thanks Janet.  Would you mind updating the label?

PTAL.  Published at http://pwittrock.github.io/docs/hellonode/

Thanks, @pwittrock! LGTM


Disable Nodes

It would be convenient to to be able to disable nodes (i.e. the scripts attached to the nodes) with a toggle, just like visibility.

@groud: Remember that you pause the whole tree, not individual nodes, as far as code it concerned. Yes, the toggle allows a lot of things, but if you want to pause a single node, it's very inconvenient.

Duplicate of #9029


Refs #17133 -- Optimized script_url handling in get_script_name

10ace52a added some regex processing for each request with SCRIPT_URL set.
In a speed critical section, conditionally apply of the regex will save some
resources.

Failures seem unrelated...

Yes, Jenkins is broken due to https://github.com/andialbrecht/sqlparse/pull/200. Looks good.


bpf: Remove duplicate code in bpf_sock.c

This commit refactors __sock{4,6}_xlate() functions in a way that they can be used to replace __sock{4,6}_snd_xlate().
The refactoring also allows us to get rid of the sock6_xlate_snd_v4_in_v6() function.

test-me-please

Coverage decreased (-0.01%) to 45.877% when pulling 0f9ef14606c0c79c9ca70607d8a298407a3f5072 on pr/brb/refactor-sock-xlate into c3dee352f4ab5228b55cc22e23243f64d477f595 on master.

Makes sense, but why do we need even more ifdef wrt HOOK_CONNECT at all

@borkmann It was just to save a few CPU cycles considering that the unnecessary checks would be in the fastpath in the case of UDP. If you think that's not worth doing, then I can remove the ifdefs from the checks.

Makes sense, but why do we need even more ifdef wrt HOOK_CONNECT at all

@borkmann It was just to save a few CPU cycles considering that the unnecessary checks would be in the fastpath in the case of UDP. If you think that's not worth doing, then I can remove the ifdefs from the checks.

But in such case I'd just go for const bool udp_only or such, so we have less ifdef in the code and compiler can optimize it out.

test-me-please

@tklauser HOOK_CONNECT has been removed.

test-me-please

test-me-please

test-me-please

test-me-please

CI hit the flake #10669. As my code changes are tested by the flaking test, re-running the CI.

test-me-please

test-me-please

test-me-please


Add cookie spaceman to gdpr banner

This adds a spaceman graphic to the GDPR banner.
I can't just use the SVG path this case because the script gets fetched from an external source. This is why this PR requires the graphic to be placed in the public/img/ folder

Is the commit missing the image itself (put in static)?
Also, might want to cache it in STATIC_ASSET_PATHS

Done. Dunno how STATIC_ASSET_PATHS works and if it actually makes sense in this case, but I've added it to the list.

Looks about right.  If it works in a dev instance (to ensure files are copied correctly in that enviroment), then good to go.


add fsb.ucar.tn

@TarikBM Pull request merged. Thank you!
FTR: Domain ownership proof: https://scholar.google.com/citations?user=P96PXEEAAAAJ&hl=en


Integrate theming

This would require the CachedTeX to be formed lifted off the plot's attrs.  We should also have a method which creates a cached tex with any given or default theme.

Also, default to transparent background, and add the option to set the PDF background color as a separate kwarg.


Add the main window boundaries

The boundaries have been implemented, however, this has caused another issue. The player can't be control once the boundaries are hit.

The bounds have been polished, the bounce after hitting is gone. Overall the frame collision is much smoother.

Walls placed.


feat: Create a few code snippets as examples for using Spanner Graph in golang

Add a few code snippets to illustrate how to use Spanner Graph functionality in Golang. These examples resemble other snippets for how various other Spanner features can be used.
Fixes #4312
Checklist

[x] I have followed Contributing Guidelines from CONTRIBUTING.MD
[ ] Tests pass:   go test -v ./.. (see Testing)
[x] Code formatted:   gofmt (see Formatting)
[x] Vetting pass:   go vet (see Formatting)
[ ] These samples need a new API enabled in testing projects to pass (let us know which ones)
[ ] These samples need a new/updated env vars in testing projects set to pass (let us know which ones)
[ ] This sample adds a new sample directory, and I updated the CODEOWNERS file with the codeowners for this sample
[ ] This sample adds a new Product API, and I updated the Blunderbuss issue/PR auto-assigner with the codeowners for this sample
[x] Please merge this PR for me once it is approved

The new graph_snippet.go models spanner/spanner_snippets/snippet.go. I have tested this manually, but I am not sure where test code for the code in snippet.go is written, and similarly how graph_snippet.go should be set up with tests. Looking for some guidance on this. Thanks!

Gentle ping

Before we continue with this review, please verify that these samples are needed.
See the list of existing samples here: https://cloud.google.com/docs/samples?language=golang&product=cloudspanner

These samples address a new feature of Spanner - the ability to create and query property graphs.


Extend settings views

Is it possibile to extend or costumize just like users, roles, and post types in admin area, the Settings index and prefix.ctp?

Hi @lithos77,
Please can you explain me what you want? Are you using the CakeAdmin plugin? Views can always be overwritten: http://book.cakephp.org/3.0/en/views/themes.html

I just wanted to change the cakemanger-settings views... I'm using Cakemanager. Ok I'll try to override using cakephp default rules.

At first you should stop using the cakemanager and start using the CakeAdmin Plugin.
Overriding it's template can be done by adding prefix.ctp into your src/Template/Plugin/Settings/prefix.ctp I guess...


[Feature]: add cmake imported target

Suggestion Description
Unless I make a mistake, it appears the roc profiler installation currently does not create the cmake logic that users can use in downstream code to help cmake find the roc profiler and set targets accordingly. In particular, it appears the roc profiler installation is missing either a cmake config file or a find module. This feature suggestion is thus to provide such cmake logic.
Also tagging @jrmadsen because such a find module file is available in omnitrace. Perhaps it could be incorporated here?

https://github.com/AMDResearch/omnitrace/tree/main/cmake/Modules

Operating System
No response
GPU
No response
ROCm Component
No response

Hi @maartenarnst, sorry for the delay. If you want to use rocprofiler as a dependency downstream, you can copy the Findrocprofiler.cmake file from the omniperf repo to your project (e.g. in <your project root>/cmake/Modules) and add the file's location to CMAKE_MODULE_PATH so you can call find_package(rocprofiler) (see tutorial and this post).
Note that CMake find modules for a project are not usually part of the project itself.

@maartenarnst I'm going to close this issue due to inactivity. If you have issues using the Findrocprofiler.cmake file from in your project to find rocprofiler, feel free to re-open this issue.


⚠ Bofrost.nl has degraded performance

In 45bfe76, Bofrost.nl (https://www.bofrost.nl) experienced degraded performance:

HTTP code: 200
Response time: 936 ms

Resolved: Bofrost.nl performance has improved in 813fee1.


chore: build enhancements 2

We continue with the gulp build for now. As the less build causing massive rework, that does not currently look perpective.

:tada: This PR is included in version 2.0.0-beta.29 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:

:tada: This PR is included in version 2.0.0-beta.29 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:

:tada: This PR is included in version 2.0.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Does the camera support PTP time synchronization?

Does the camera support PTP time synchronization? Does it support external hardware triggering?Because I want to sync my lidar and this camera.

I am not sure about PTP sync, but the camera does support external hardware triggering.  You can setup the camera as a Slave as described in the README and use the external_trigger flag. However, the timestamp on the message will still be based on when the image is received to the computer.  Getting the correct timestamp is  more complicated.

As a possible solution to obtaining correct timestamp, we can get camera time right before requesting the Image, compute the difference between camera time and the host (your computer) time.
After the Image is received, we correct the timestamp from ImagePtr by the computed difference.
To obtain camera time we should execute this command, and then take value from here

This still would leave a lot of variability. You can try it and test the std dev between the image msgs.
The most reliable way would be to have a node from the sensor that is triggering the camera publish a trigger message with the time. The camera driver subscribes to this message and uses the trigger time to stamp the image message.  If trigger msgs package is available then Catkin make will build this functionality.


plugin development?

Are there any instructions for developing a plugin to add support for an npm module?
I want to convert dot.js to work with fly, but its unclear how you make a module "flyable".
I get the error .target not found when I try to chain.

Yes indeed. https://github.com/bucaran/fly/blob/master/docs/README.md#plugins
Good rule of thumb:
If the API method you're wrapping depends on files' contents, use a filter. And if the API function is thennable / already a Promise, use a defer.
Otherwise (aka: your API method wants a files glob) nest your plugin directly into the Fly instance, returning this.


[FORMAT]: Minor Fix VarBinary examples to use Values buffer

I'm implementing Arrow and noticed an inconsistency in the docs. After reading the cpp and Rust implementations and talking to @tustvold I believe VarBinary is actually laid out according to this change.

Thank you @clickingbuttons


Range discordance between getRating and setSelectedSmile

values returned by getRating() range from 1 to 5, with 0 for none selected
but values expected by setSelectedSmile range from 0 to 5 with -1 for non selected
This makes it hazardous to store and display values through the scale :
if you store as int userSatisfaction the value from
the  level variable inside the onRatingSelected of a SmileRating.OnRatingSelectedListener
and later you want to display a scale with the same value, you have to set it like :
SmileRating.setSelectedSmile(userSatisfaction -1); to adapt the range offset... this is quite unintuitive
This is not an issue per se but I spent quite some time thinking the #22 was not really fixed when in fact I was setting my SmileRating to level 5, which does not exist...
Anyway, many thanks for your great work!

Hello @shining-cat
Are you intended to post the rating value (i.e 1-5) somewhere else?
If so, then we have same cases

hello @MuhammadFaisalIchal indeed I store the rating value i get in a room database, but I allow the user to edit them, so I need to be able to set the rating bar to the stored value. It took me some time to understant where my problem was comming from, but removing 1 from the value stored seems to be the workaround for now.

hmm, interesting.
by the way, what programming language do you use?
I'm in that case too, but now I'm in the phase of inserting each of these 5 smileys into a database using as you said 1-5 value.
Currently, I'm using PHP and Mysql as the database,
but I'm confused of how to pass the value from Android -> API -> PHP script -> Database.
The problem is, I know how to insert data like (form, number, etc), because it passes String data type into API then into Database.
But this smileys is integer data typed. And I've spent a lot of time searching how to pass this value.
Do you have any idea if you don't mind, please?? :(
Thank you

Hello,
I'm using Java on Android.
I have bnot worked yet with an API as the one you mention, but I have worked on PHP and MySql. The thing is PHP is not natively a strongly typed language, but inserting ints in Mysql poses no problem since casting is handle by the DB. When getting data from the DB, my guess is you will have to handle casting and checking for errors on the Java side. Maybe the API you rely on has the capability to do that for you.
I am probably not the right person to discuss your case, which I have no experience with, and this place hardly seems the right place to do so, since your current difficulty hardly has anything to do with this library.
I would suggest to turn yourself to forums like stackOverflow, where, if you do not find your answer, you could submit your question to the highly supportive community there, and demultiply your chance of finding someone to help you :)
all the best

Well, thanks a lot! ^_^


Make docker diff take a path as argument

It would be nice if docker diff would take a path as argument so only changed files in the given folder path are output.

Hi!
If you are reporting a new issue, PLEASE make sure that does not have any duplicates already open.
We would like to take this time to remind you of the information we need to debug the problem you are seeing. This is an automated response so if this ticket is not about a bug, do not fret.
If you fail to provide this information within 7 days, we will close this because we cannot debug your issue. We can reopen whenever the information is provided.
Thank you.
Please see:
https://github.com/docker/docker/blob/master/CONTRIBUTING.md#reporting-other-issues
Description of problem:

`docker version`:

`docker info`:

`uname -a`:

Environment details (AWS, VirtualBox, physical, etc.):

How reproducible:

Steps to Reproduce:
1.
2.
3.

Actual Results:

Expected Results:

Additional info:

#ENEEDMOREINFO

I think this would be easily achievable using standard tools, e.g.
docker diff mycontainer | grep /some/path

So I don't think this is needed to be implemented in docker itself. wdyt?

Agreed. Thanks.

I'm going to close this issue, because this can be achieved with external tooling, but feel free to comment if there's another use-case that I'm overlooking.


Create a Code of Conduct so we can follow the best practices

Create code of conduct.

Acceptance Criteria:

Pull Request
Review
Commit
Test


Use gpt-4-turbo-preview model

Support gpt-4-turbo-preview as heavy model. This is cheaper than gpt-4 and provides a huge context.

Summary by CodeRabbit

New Feature: Added support for the gpt-4-turbo-preview model as a heavy model, replacing gpt-4. This allows users to utilize the latest AI model for their tasks.
Refactor: Improved code readability and maintainability by replacing the if-else chain in TokenLimits constructor with a switch-case.
Chore: Updated file exclusions and default values for model selection to align with the new changes.

Summary by CodeRabbit

New Features

Updated token limits for enhanced performance, including support for the 'gpt-4-turbo-preview' model with increased limits and an updated knowledge cutoff date.

This PR was meant for a fork. It can be ignored and has been closed.


Issues with Journal Plugin: Task Detection Fails in Daily Notes

Please check that this issue hasn't been reported before.

[X] I searched previous Bug Reports didn't find any similar reports.

Expected Behavior
Tasks from daily notes created using the Journals plugin should be detected and displayed by the Day Planner plugin in the side panel and calendar view.
Current behaviour
Issue #1: Tasks Not Detected from Daily Notes with Journals Plugin

I am using the Journals plugin to create daily notes with the following settings:

Path: MyFolder/YYYY/MMM/DD MMM YY (folders and subfolders are created).
File Name Format: DD MMM YY.

When tasks are added under the defined heading in these daily notes, the Day Planner side panel view does not detect or display them.
However, when I create a daily note directly using Day Planner (with file names in YYYY-MM-DD format), tasks in these notes appear correctly in the Calendar View.

Issue #2: Tasks Not Scanned with Additional Task Scanning Setting

I tried configuring the Data View Input as MyFolder. to enable additional task scanning.
My daily notes are structured with specific headings and levels as required for the Day Planner plugin.
Despite this configuration, tasks from these notes still do not appear in the Calendar View.

Steps to reproduce

Create a daily note using the Journals plugin with the specified path and file name format.
Add tasks under the defined heading for the Day Planner plugin.
Observe that the tasks do not appear in the side panel or calendar view.
Configure the Data View Input for additional task scanning and observe no change.

Which Operating Systems are you using?

[ ] Android
[ ] iPhone/iPad
[ ] Linux
[ ] macOS
[X] Windows

Obsidian Version
1.7.6
Possible solution

Enhance the Day Planner plugin settings to allow users to specify custom folder paths and file name formats for detecting daily notes.
Provide a configuration field where users can define the path (e.g., MyFolder/YYYY/MMM/DD MMM YY) and file naming convention (e.g., DD MMM YY).
Implement a parser to identify and map these custom formats to the Day Planner's expected structure.

Possible Workaround (?): add the path to the Day Planner dataview filter.
Using Periodic Notes, tasks are not detected either, unless I add the folder name to the filter (top of the Day Planner side bar). In my case, I have also added a tag, I'm not sure if that is necessary.
eg.: #do and "LOG"


Automated MinIO version update RELEASE.2023-04-13T03-08-07Z

Automated changes by the cron-minio-update GitHub action
Adds [MinIO add-on](https://kurl.sh/docs/add-ons/minio) version RELEASE.2023-04-13T03-08-07Z.

Just 2 flakes, it seems ok to fly:


Support for Nodejs

I tried to ise codex-js in nodejs (while playing around with @ai16z/eliza) and attempt to upload data failed with an error about xmlhttprequest is not defined in nodejs

Yes this is expected because xmlhttprequest is only available in the browser. The solution would be to use fetch but without the progress callback support. Do you have a repo to share ?

Duplicate #3

Ah, sorry missed the existing issue 🤦♂
When I get a cance, I'll create a reproducer. I think maybe switching between fetch and xmlhttprequest based on whether progress callback is passed + whether in browser would make sense? (Although it would add some maintenance cost, but I feel like we need codex-js to work with Node)