Support for external project collections linking. Add object model re…

I haven't made it through the full review, but let me dump what I do have before I check out for the long weekend.
Meta-comments so far:
What are the rules we should follow in the future regarding the link when adding to or altering the public API surface? Is it something like "all public APIs of an object that implements ILinkableObject should use the Link member?
Would it be possible to write a Roslyn analyzer to enforce those rules? We don't necessarily have to do this now but it might be nice to have the backstop.

First, regarding how to manage “Link” layer when changing the MSBuild API going forward.
That’s depend on the type of change, but basically the way I see it is this:

Changes to existing api (new public method/property in existing classes)

This might require a new methods or properties added to corresponding “Link” class, not necessarily exactly the same, but whatever is needed for exported to facilitate the new feature.
The rule would be to add a new “virtual” (not abstract) method with a default implementation on the Link class. It is ok Implementation to be “throw new NotImplementException()”.

Adding new public Types.  Here there are two options
A)	Add a new “Link” class similar to the existing patter.
Design the new class in a way it can be remoted without “Link”, for example if all public surface area are “virtual” methods/properties (or interfaces – but MSbuild does not use interfaces) we don’t need Link. Or if the type is “read only snapshot” and only exposes simple types (like strings, integers etc,  and not references to other non – remotable, msbuild objects) and has a public c-tor that one can create such object from these simple types we don’t need to add “Link” either.

I personally don’t see it as high importance to make new API surface a “remote”-enabled right away. We should highly discourage usage of “back-door” aka GlobalProject collection access in general, and for legitimate usage it would always require a change in our external projects provider anyway, so as I see that “remoting” capability could be added later and only when actually needed (basically on Demand).
As for analyzer. I personally am not familiar with the extend of Roslyn analyzers capabilities so I don’t know the answer for that question.

We're hoping to minimize use of this over time, right? How can we make sure we have appropriate telemetry/complaining about this so that VS extension authors feel some pressure to move to the VS APIs you'd rather they use?

My opinion is that we don't need to do anything different here. A holistic approach to discourage usage of GlobalProjectCollection is certainly welcome.
Maybe we can start by putting out blog posts and such laying out the issues code can run into if it relies on GlobalProjectCollection instead of querying the project system directly using IVs* APIs. Perhaps add to the doc about the class laying out its limitations and alternatives.
What do you think @svetkereMS ?

We're hoping to minimize use of this over time, right? How can we make sure we have appropriate telemetry/complaining about this so that VS extension authors feel some pressure to move to the VS APIs you'd rather they use?
My opinion is that we don't need to do anything different here. A holistic approach to discourage usage of GlobalProjectCollection is certainly welcome.
Maybe we can start by putting out blog posts and such laying out the issues code can run into if it relies on GlobalProjectCollection instead of querying the project system directly using IVs* APIs. Perhaps add to the doc about the class laying out its limitations and alternatives.
What do you think @svetkereMS ?

As for proliferating the use of "Link" mechanism as a means to support (or even worse - extend and encourage) "backdoor" GPC access in VS - totally agree, I don't see any effort to optimize that as a positive, and we do need to deter people of using GPC instead. We must start with the bunch of rogue (lazy hack) features that exist in our VS code first before we ask customer not to do what we have already done :).
Now, on the other side, it is possible we find a legitimately useful cases for the MSBuild remoting feature. For example a good candidate is offloading CPS non-default config (platforms) evaluation OOP and use the "Link" to facilitate the integration of results into CPS API ecosystem (which is very MSBuild based).  This will help remove huge Memory burden while allow us to scale (parallelizing) the work similarly to what we get in OOP evaluation for CSProj.  Since the official CPS api include  MSBUild types, it is no other easy way around than using Link mechanism there (it is not backdoor in this case).
Anyway I would prefer not to speculate too much on future possibilities now to much and focus on what we need at this moment. It is hard to predict how we end up really ...

Putting two operational modes (link vs real) in every Project*Element class and separating them with an if feels to me that it lowers the maintainability / readability of the code. To alleviate this I propose that you separate the two operational modes such that one can reason about each one in isolation. This would involve something like:

Unchanged surface APIs. The public Project*Element APIs would remain unchanged, and they would remain to be used by the rest of the msbuild code (e.g. ProjectParser and Evaluator would still use the old Project*Element types). This avoids having to change the existing type casts.
Extract an interface with defaults / abstract class for each Project*Element class
The implementation of each Project*Element class would be carved out and moved to a parallel hierarchy that implements the newly extracted supertypes. For example, a ProjectChooseElement would have its implementation moved into a ProjectChooseElementImpl : IProjectChooseElement, and ProjectChooseElement methods would delegate into corresponding ProjectChooseElementImpl methods.
The proxy objects would be a second implementation of the IProject*Element interfaces: the Project*ElementLink hierarchy.
Project*Element classes would have a field pointing to its corresponding IProject*Element implementation and delegate their methods to the interface. The interface would hide either a real Project*ElementImpl implementation, or a Project*ElementLink proxy.

Putting two operational modes (link vs real) in every Project*Element class and separating them with an if feels to me that it lowers the maintainability / readability of the code. To alleviate this I propose that you separate the two operational modes such that one can reason about each mode in isolation. This would involve something like:
Unchanged surface APIs. The public ProjectElement APIs would remain unchanged, and they would remain to be used by the rest of the msbuild code (e.g. ProjectParser and Evaluator would still use the old ProjectElement types). This avoids having to change the existing type casts.
Extract an interface with defaults / abstract class for each ProjectElement class
The implementation of each ProjectElement class would be carved out and moved to a parallel hierarchy that implements the newly extracted supertypes. For example, a ProjectChooseElement would have its implementation moved into a ProjectChooseElementImpl : IProjectChooseElement, and ProjectChooseElement methods would delegate into corresponding ProjectChooseElementImpl methods.
The proxy objects would be a second implementation of the IProjectElement interfaces: the ProjectElementLink hierarchy.
ProjectElement classes would have a field pointing to its corresponding IProjectElement implementation and delegate their methods to the interface. The interface would hide either a real ProjectElementImpl implementation, or a ProjectElementLink proxy.

There are downsides on the above proposal:
(first note that this is the way we applied the "Link" layer on Project element and learned the downsides from there).

Increase the memory footprint and DOUBLE the number of allocations.  Note with experiments I did on these (adding additional allocations and new) when I first observed that (by simply add a object foo = "new" object(); to ProejctElement and some evaluation objects) was ~ 5-10% memory increase and close to 5-8% decrease in evaluation performance.

because of thight coupling between public and internal surface area, we need to address case by case each object and put non-trivial effort to define the proper interfaces.

The code area that we need to significantly change is very large. Construction classes combined are ~8k lines of code so we can expect at least as much new code churn. (entire change inside production code now is ~3k)

we need to duplicate some logic between Link/non link implementations.

Breaking each class to Shim and Impl has its own negatives for maintainability. (each change can be potentially work on 1 interface and 2 classes, instead of single class).

Currently we do have ~80 places (roughly 80 lines of code) affected by this same pattern. Note that these are all very stable (and generally simple) public API (typically get/set) that are rarely changed (if at all).
(50% of this is in ProjectRootElement. )
So IMO that is not a good trade-off, but it is you guys call here. I'll open a mail thread on that since it can be a significant work associated ...

I'd appreciate a bit of documentation, e.g. adding something to /documentation.
Is there anything to keep in mind / test when adding new APIs?
I'm not even sure I understand what this feature is aimed to be used for..


Disable public yum repos on new DLAMI EC2 instance

🐛 Bug report

[x] I have checked that this issue has not already been reported.

Describe the bug
From the EC2 instance deployed by the environment module, sudo yum update will time-out on public yum repos. These commands were required to disable those repos:
  120  sudo yum-config-manager --disable libnvidia-container
  122  sudo yum-config-manager --disable neuron
  124  sudo yum-config-manager --disable libnvidia-container --disable neuron
  126  sudo yum-config-manager --disable nvidia-container-runtime
  128  sudo yum-config-manager --disable nvidia-docker

To reproduce
sudo yum update and watch the timeout message. E.g.,
ec2-user@ip-xx-xxx-xx-xxx pkgs]$ sudo yum update
Loaded plugins: dkms-build-requires, extras_suggestions, langpacks, priorities, update-motd, versionlock
amzn2-core                                                                                | 3.7 kB  00:00:00
amzn2extra-docker                                                                                | 3.0 kB  00:00:00
https://nvidia.github.io/nvidia-container-runtime/stable/amzn2/x86_64/repodata/repomd.xml: [Errno 14] curl#7 - "Failed to connect to nvidia.github.io port 443: Connection timed out"
Trying other mirror.
^C
 Current download cancelled, interrupt (ctrl-c) again within two seconds
to exit.

 One of the configured repositories failed (nvidia-container-runtime),
 and yum doesn't have enough cached data to continue. At this point the only
 safe thing yum can do is fail. There are a few ways to work "fix" this:

     1. Contact the upstream for the repository and get them to fix the problem.

     2. Reconfigure the baseurl/etc. for the repository, to point to a working
        upstream. This is most often useful if you are using a newer
        distribution release than is supported by the repository (and the
        packages for the previous distribution release still work).

     3. Run the command with the repository temporarily disabled
            yum --disablerepo=nvidia-container-runtime ...

     4. Disable the repository permanently, so yum won't use it by default. Yum
        will then just ignore the repository until you permanently enable it
        again or use --enablerepo for temporary usage:

            yum-config-manager --disable nvidia-container-runtime
        or
            subscription-manager repos --disable=nvidia-container-runtime

     5. Configure the failing repository to be skipped, if it is unavailable.
        Note that yum will try to contact the repo. when it runs most commands,
        so will have to try and fail each time (and thus. yum will be be much
        slower). If it is a very temporary problem though, this is often a nice
        compromise:

            yum-config-manager --save --setopt=nvidia-container-runtime.skip_if_unavailable=true

failure: repodata/repomd.xml from nvidia-container-runtime: [Errno 256] No more mirrors to try.
https://nvidia.github.io/nvidia-container-runtime/stable/amzn2/x86_64/repodata/repomd.xml: [Errno 14] curl#7 - "Failed to connect to nvidia.github.io port 443: Connection timed out"
https://nvidia.github.io/nvidia-container-runtime/stable/amzn2/x86_64/repodata/repomd.xml: [Errno 15] user interrupt

Expected behavior
Skip public yum repos.
System information

awscli version: irrelevant
SageMaker Python SDK version: irrelevant
Docker image: irrelevant
Python version:  irrelevant

Sorry, accidentally hit close :(

Recommend to add a new section in readme with command to do security patching as follows.
sudo yum-config-manager --disable libnvidia-container
sudo yum-config-manager --disable neuron
sudo yum-config-manager --disable nvidia-container-runtime
sudo yum-config-manager --disable nvidia-docker
sudo yum update-minimal --sec-severity=critical,important --bugfix

@verdimrc has this issue been addressed satisfactorily?

+1. We're good.


sdl: Improve pixel fetching api

I think there's two parts to this problem.
1 - do not require the callers to import unsafe in ReadPixels, just take in a slice and assume it's size is correct (easy enough, but I think it would be best to do it separately)
2 - provide a version of this function that does the heavy lifting for the caller (this pr)
I think it's worthwhile keeping the original implementation and just fixing up the unsafe.Pointer.
For one, it's what the actual SDL api looks like, but it also allows the caller to manage his/her buffers.
The basic principle is to take in a rect and a pixel format and fill in the gaps appropriately.
This isn't ready yet, seems to work but it needs more tests, so I'll be marking it as draft for now.
I also need to rethink the testing methodology, this way of creating the expected pixel buffers is unwieldy.

@veeableful quick question, why are the alias pixel formats not mapped to their c values?
I'm asking this because, my tests for RGB888 pass, but the tests for RGB24 do not, which is weird.
So, I tried applying the same principle as with the *32 aliases and created a standalone RGB24 and mapped it accordingly, now the tests pass.
This has me puzzled.

That was painful...
Had issues with surface pixel data not actually being in the format requested (no idea why, disabled RLE, locked the surface, nothing worked). In the end I just did the format conversions by hand, ie, calling ConvertPixels myself, and use a surface just for the convenience of not having to deal with endianess/conversions when painting.
The tests were very flaky with the default renderer (not actually returning valid pixel data sometimes), had to use a SoftwareRenderer instead. Also avoids complications with init and main.
It's working fine now for RGBA formats (except the last one, it's not convertible, gotta figure out what that means still), and it's still missing palette and planar modes.

The PR is looking great @flga. Thanks for the hard work!

@veeableful quick question, why are the alias pixel formats not mapped to their c values directly?

I don't remember exactly why :sweat_smile:  I guess that was done to enable it to compile using older SDL2 (e.g. SDL2 2.0.0). Now that I see it, I think I should have declared the missing alias definitions in go-sdl2 for older SDL2. I have pushed the change (hopefully didn't break anything!).

Hm.. yeah the compilation speed is quite slow. I wonder if it is possible to split the sdl package further into many small packages and re-export the types and functions so Go can cache all the packages that weren't touched and do parallel compilation.

Hey @veeableful, I've been looking into the indexed and yuv pixel formats and they work in a slightly different manner.
Indexed formats require a palette, which is hard to support unless we accept an actual Format instead of a format enum, and yuv seem to be very "edge casey", I've played around with implementing this, and it kinda works, the basic quadrant tests pass, but the concatenated quadrants do not. I feel like this will lead to re-implementing a lot of sdl logic and it doesn't seem all that worth it.
What do you think about reducing this new method into just RGBA (all the formats, although I still need to look into how PIXELFORMAT_ARGB2101010 works)?
Users that need more specialized handling can still use the default, no guard rails, method.
Does that seem reasonable?
In regards to code splitting, in principle yes, that would solve it, however I'm not so sure that it is feasible, seems like it would be easy to fall into circular deps.

Yeah @flga, absolutely. You could add support for the ones you have implemented now and maybe set error for the ones that are not yet implemented. We could always support them in the future =)

@veeableful sorry, seems like I've missed the notification. I'll update the PR tomorrow.

@flga Don’t worry about it. Take as much time as you need!


feat(core, apps): 'PacketDataProvider' interface added and implemented

Description
This PR reduces the diff when reviewing the adr8 PR https://github.com/cosmos/ibc-go/pull/3939.
PacketDataProvider defines an optional interfaces for retrieving custom packet data stored on behalf of another application.
closes: #XXXX
Commit Message / Changelog Entry
feat(core, apps): 'PacketDataProvider' interface added and implemented

see the guidelines for commit messages. (view raw markdown for examples)

Before we can merge this PR, please make sure that all the following items have been
checked off. If any of the checklist items are not applicable, please leave them but
write a little note why.

[x] Targeted PR against correct branch (see CONTRIBUTING.md).
[x] ~Linked to Github issue with discussion and accepted design OR link to spec that describes this work.~
[x] Code follows the module structure standards and Go style guide.
[x] Wrote unit and integration tests.
[ ] Updated relevant documentation (docs/) or specification (x/<module>/spec/).
[x] Added relevant godoc comments.
[x] Provide a commit message to be used for the changelog entry in the PR description for review.
[x] Re-reviewed Files changed in the Github PR explorer.
[x] Review Codecov Report in the comment section below once CI passes.

Codecov Report

Merging #4199 (fbcf8b7) into main (4e1e594) will increase coverage by 0.01%.
Report is 9 commits behind head on main.
The diff coverage is 75.00%.

Additional details and impacted files

@@            Coverage Diff             @@
##             main    #4199      +/-   ##
==========================================
+ Coverage   79.45%   79.47%   +0.01%
==========================================
  Files         188      188
  Lines       12990    13025      +35
==========================================
+ Hits        10321    10351      +30
- Misses       2240     2243       +3
- Partials      429      431       +2

Files Changed
Coverage Δ

...interchain-accounts/controller/keeper/handshake.go
89.85% <ø> (ø)

...les/apps/27-interchain-accounts/host/ibc_module.go
91.11% <ø> (ø)

...ps/27-interchain-accounts/host/keeper/handshake.go
89.39% <ø> (ø)

...odules/core/02-client/migrations/v7/solomachine.go
18.30% <0.00%> (ø)

modules/core/02-client/types/proposal.go
87.01% <0.00%> (ø)

modules/core/03-connection/types/codec.go
100.00% <ø> (ø)

modules/core/03-connection/types/connection.go
76.81% <0.00%> (ø)

modules/core/23-commitment/types/merkle.go
68.04% <0.00%> (ø)

modules/core/24-host/parse.go
51.47% <30.00%> (-2.63%)
:arrow_down:

...dules/light-clients/06-solomachine/client_state.go
88.28% <33.33%> (ø)

... and 37 more


[docs] Fix filterHidden docs example

From https://github.com/DevExpress/testcafe/issues/4610

Current documentation for filterHidden uses filterVisible in the example code:
https://devexpress.github.io/testcafe/documentation/test-api/selecting-page-elements/selectors/functional-style-selectors.html#filterhidden

@mattmanske, thank you for the fix!


[deltaE] Speedup of 7th powers in DeltaE2000

The current version uses the Math.pow function and the ** operator, which translates into same function.
We could hope that JIT optimizes integer powers. But, as practical experiments show, it doesn't work at the moment.
Math.pow with a float argument is quite expensive. Мuch more expensive than sqrt or sin e.g.
I wrote a small helper function pow7 and applied it in only 2 places.
On my computer it gives a speedup from ~10% (FF 118) to ~20% (Chromium 118, Node 21) — meaning total time of deltaE2000 function, not isolated power.

That’s very interesting. What's the cause of the slowdown? E.g. would x * x * x * x * x * x * x be even faster?

The slowdown is due to the general purpose nature of pow. Most functions of this sort, because they are general purpose, have additional checks and logic which creates overhead and slowness (relatively speaking, for some they are more than fast enough). You will often see people at times who are trying to optimize as much as possible do things like apply the multiplication themselves as the multiplication operation is generally faster as there is no overhead for additional function calls and other checks. So 2 ** 2 would be slower than 2 * 2.
Additionally, if you specialize the operation to reduce how many times you call multiply, you could potentially speed up performance a bit more.
Some people don't bother as they don't require the absolute fastest, most optimized solution, but if it is something you care about, I imagine it would be useful.
Usually, if I do care about performance, I often request people provide, data backing their performance claims. Like how they tested, and the results.
Generally, I am inclined to believe this claim is faster just because I am familiar with this type of optimization, the question is whether you value the performance or the simplicity of just using Math.pow().

What's the cause of the slowdown?

Math.pow - universal function for arbitrary power, includes fractional.
This is calculated via Taylor series:
https://en.wikipedia.org/wiki/Taylor_series#Exponential_function
Most likely, even two series, because an arbitrary power is calculated through exponent and natural logarithm.
x * x * x * x * x * x * x - doubtful, because these are 6 muls. Can be reduced to 4.

You will often see people at times who are trying to optimize as much as possible

I'm not suggesting saving nanoseconds.
But DE2000 is really heavy function. And pow takes a significant time.

Funny, a couple weeks ago I happened to run some benchmarks out of curiosity, regarding the simplified Phi calc, and ran across this difference, and was rather surprised at the difference between Math.pow() and the ** operator.
Safari and Chrome are similar, Safari shown:

Clearly, the x ** y is twice as fast as Math.pow(x,y), and x ** 0.5 also appears twice as fast as Math.sqrt(x)
However, the thing I found most surprising, and I mean shocking, is that not only is the difference between methods not apparent in Firefox, Firefox is overall two orders of magnitutde faster in terms of ops per second:

However, in terms of actual performance on web apps, I don't find Firefox to "feel" that much faster. It makes me wonder a bit about the way the operations per second is being reported out of Firefox, which I am guessing is what the benchmark site is using.
In other words, is the Firefox ops per second reporting each individual CPU instruction per second (i.e. a fetch is one, a shift is one, etc etc), and Safari/Chrome are reporting completed JS operations per second (i.e. the start to finish ** operation)...?
I am curious, as that's how it appears...

Hi @dom1n1k

...Math.pow - universal function for arbitrary power, includes fractional....

But the ** is also arbitrary, and includes fractional values. x ** 0.5 is the square root of x for instance.

Hi Issac @facelessuser

...performance or the simplicity of just using 'Math.pow()'...

I would argue that x ** y is simpler than 'Math.pow(x,y)' though ** may be less readable when visually scanning over code. But I prefer the adage "terse code, verbose comments" so I prefer **, particularly in light of the performance shown.

What's the cause of the slowdown?

Math.pow - universal function for arbitrary power, includes fractional. This is calculated via Taylor series: en.wikipedia.org/wiki/Taylor_series#Exponential_function Most likely, even two series, because an arbitrary power is calculated through exponent and natural logarithm.
x * x * x * x * x * x * x - doubtful, because these are 6 muls. Can be reduced to 4.

I see, so it's about keeping multiplications down. Yeah, I couldn't get it below 4 with any other combination 😁

You will often see people at times who are trying to optimize as much as possible

I'm not suggesting saving nanoseconds. But DE2000 is really heavy function. And pow takes a significant time.

Yeah, and DE2000 is used iteratively a lot, e.g. in gamut mapping, so I'm totally on board with optimizing it.
Presumably this is a temporary fix until browsers optimize this properly though. I wonder if it would be feasible to do this as a build process plugin?

** is fastest
I just did a benchmark of the function pow7() as written in the PR, and other methods. ** is the fastest, followed by pow7(), and then Math.pow() and surprisingly, x*x*x*x*x*x*x was the slowest.
//The pow7() function

function pow7 (x) {
 	const x2 = x * x;
 	const x7 = x2 * x2 * x2 * x;
 	return x7;
 }

The benchmark: https://www.measurethat.net/Benchmarks/Show/28008/0/power-to-the-7
The results:

I would argue that x ** y is simpler than 'Math.pow(x,y)' though ** may be less readable when visually scanning over code. But I prefer the adage "terse code, verbose comments" so I prefer **, particularly in light of the performance shown.

I prefer ** generally as well, and I'm speaking generally as to why people have historically applied such an approach. I'm not sure ** is always faster than a targetted, optimized approach, I imagine there are cases it does great and cases it does less great. Generally, I don't often worry about optimizing these cases and will just use **, but in cases where I do care, I'm benchmarking to make sure I'm actually improving things.

I see, so it's about keeping multiplications down. Yeah, I couldn't get it below 4 with any other combination 😁

It's probably not just about keeping multiplication combinations down. I imagine things like pow and ** optimize as well, but they are either a generic algorithm and/or make optimization decisions on the fly, which adds overhead. But as always, benchmarking will tell you if you are actually getting a gain or not.

Further Benchmarks
Just to evaluate completely, I optimized some of the methods, such as eliminating unneeded assignments. While it helped improve the function speed slightly, ** remains fastest.
function pow7 (x) {
 	const x2 = x * x;
 	const x7 = x2 * x2 * x2 * x;
 	return x7;
 }

// Slightly more optimized versions:

function pow27 (x) {
 	const x2 = x * x;
 	return x2 * x2 * x2 * x
 }

function pow37 (x) {
  const x3 = x * x * x;
  return x3 * x3 * x
}

function powMult7 (x) {
  return x*x*x*x*x*x*x
}

** is still fastest. Nothing also that abstracting the x*x*x*x*x*x*x into a function nearly trippled it's performance. Containing multiple operations inside a function allows the compiler to optimize more effectively.

...On my computer it gives a speedup from ~10% (FF 118) to ~20% (Chromium 118, Node 21) — meaning total time of deltaE2000 function, not isolated power...

So, this is weird, because on my machine, the pow7() is slower than the ** that is in the code. I'm on MacOS, on Intel, MacbookPro. I imagine potential bench differences on a desktop, on M1/iOS, etc.
But I am also wondering re the methodology used that returned the entire ∆E2000 function 20% faster, when this is a small part of the total function, and I'm not seeing anything that would indicate such a savings?

I don't recommend trusting microbenchmarks. They often lie because the compiler removes "dead" code.
My code is below.
I tested it on Node v21 right now: 17-18% savings.
import Color from "./src/index.js";
import { deltaE2000 } from "./src/deltaE/index.js";

const k = 11;
const n = k ** 3;
const colors = [];
let accum = 0;

// generate array of 11 ** 3 = 1331 colors
for (let r = 0; r < k; r++) {
    for (let g = 0; g < k; g++) {
        for (let b = 0; b < k; b++) {
            const rgbColor = new Color("prophoto", [
                r / (k - 1),
                g / (k - 1),
                b / (k - 1)
            ]);
            const labColor = rgbColor.to("lab");
            colors.push(labColor);
        }
    }
}

// start
const t0 = performance.now();

// each to each color, 1331 ** 2 = 1771561 pairs
for (let i = 0; i < n; i++) {
    const color1 = colors[i];

    for (let j = 0; j < n; j++) {
        const color2 = colors[j];

        // we must use the result
        // otherwise the compiler will remove the "dead" code
        accum += deltaE2000(color1, color2);
    }
}

// finish
const t1 = performance.now();

// we must use the result
// then the compiler knows it's working code
console.log(`result: ${accum}`);
console.log(`time:   ${t1 - t0} ms`);

Hi @dom1n1k

...I don't recommend trusting microbenchmarks. They often lie because the compiler removes "dead" code...

I had assignments so the code would be exercised... But it does make me wonder if somehow that is what's going on with FireFox—I don't use FF so haven't really looked into those differences.
I'm going to try running in Node instead, node handles things differently than browsers & could be the reason for the discrepancy. Also, I did not test with all the machines I have, so there are a number of influences to look into.

Hi @Myndex
Meanwhile, if you want to see isolated benchmark, we can. But we need to consider a few conditions:

we need to use results (otherwise compiler will remove it);
apply functions to different numbers (otherwise compiler will remove dups);
tests must be enclosed into functions (JIT optimizes functions);
do not run tests from the browser console (can be much slower than usual);
nice to have several runs to get median time.

I got difference about 15-25 times in FF and 40-50 times in Chrome/Node
<!DOCTYPE html>

    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>pow7() benchmark</title>

Math.pow(), ** and pow7() benchmark

Please see console

const n  = 1e7;  // number of operations
const x1 =  0;
const x2 = 10;
const dx = (x2 - x1) / n;

function pow7 (x) {
    const x2 = x * x;
    const x7 = x2 * x2 * x2 * x;
    return x7;
}

function testStarStar () {
    let x = x1;
    let accum = 0;
    while (x < x2) {
        accum += x ** 7;
        x += dx;
    }
    return accum;
}

function testMathPow () {
    let x = x1;
    let accum = 0;
    while (x < x2) {
        accum += Math.pow(x, 7);
        x += dx;
    }
    return accum;
}

function testCustomPow7 () {
    let x = x1;
    let accum = 0;
    while (x < x2) {
        accum += pow7(x);
        x += dx;
    }
    return accum;
}

function testMuls () {
    let x = x1;
    let accum = 0;
    while (x < x2) {
        accum += x * x * x * x * x * x * x;
        x += dx;
    }
    return accum;
}

const funcs = [
    testStarStar,
    testMathPow,
    testCustomPow7,
    testMuls
];

const F = funcs.length;  // number of functions
const R = 5;             // number of runs
const accums = Array(F);
const times  = Array(F);

// benchmarks
for (let f = 0; f < F; f++) {
    const func = funcs[f];

    accums[f] = 0;
    times[f] = [];

    for (let r = 0; r < R; r++) {
        const t0 = performance.now();
        const result = func();
        const t1 = performance.now();

        accums[f] += result;
        times[f].push(t1 - t0);
    }
}

// print median times
for (let f = 0; f < F; f++) {
    times[f].sort((a, b) => a - b)
    const medianTime = times[f][Math.floor(R / 2)];

    console.log(f);
    console.log(`result: ${accums[f]}`);  // we must use results
    console.log(`times:  ${ Math.round(100 * medianTime) / 100 } ms`);
}

WoWwwww....
@dom1n1k  Thank you for your patience and the extra info... I am surprised at the number of variations here...
All done on MacOS, intel macbookpro
Here is Safari

And here indeed your function is fastest.
But the part that is jaw dropping is Chrome

Srsly wut? Here I can see how you had better overall results with the total DE....
Firefox is the slowest

That's not good...
And then Opera, predictably like Chrome:

Surprising variation... and whats the deal with the console? just not optimized? because running that script in the console returns very different speeds. This is also true for BBEdit even when running as the webpage...

Thank you again for your extra time, appreciated.

and whats the deal with the console? just not optimized?

Highly likely yes. Code in console often goes to different pipeline.

interesting that Math.sqrt(x) appears faster than x ** 0.5 on Safari and Firefox, bot other way around on Chrome. Results are close enough tho...

Normally sqrt(x) much faster than pow(x, 0.5).
This is a special case for which there are more efficient algorithms.

Normally sqrt(x) much faster than pow(x, 0.5).
This is a special case for which there are more efficient algorithms.

Interesting, I seem to remember reading something some years ago indicating otherwise, or some ambiguity.


Plugin: thut

Suggest plugin name
thut
Overview
Plugin for https://github.com/felixmulder/thut
Example usage
The approach should be consistent with:
See https://github.com/frost-org/frost/issues/11#issuecomment-518028533
Just replace tut with thut there

Resolved by https://github.com/frost-org/frost/pull/59


Autorization intializer will fail when running commands with a pre-Devise db

Steps to reproduce:

Seed DB in version v3.4.x
Checkout code post v5.2.0
Try to run rake db:migrate (i.e., update)

Expected: success
Actual: NoMethodError: undefined method `username' for #<User:0x007f1b0309e1e0>
I'll get this done now, I'll just skip the initializer unless User.respond_to?(:username).

Note that this actually affects databases prior to v4.1.0, not v3.4.x exclusively. Also, note that migrating a pre-v3.4.x DB actually results in a slightly different schema (object created_at and updated_at timestamps have null: false), but I'm not checking it in since the current db/schema.rb results from a fresh checkout + rake db:migrate.

Just realized, the schema issues could stem from a bad schema in earlier versions. Regardless, nothing to be done.

Also, ready for review!


Docker build fails

executor failed running [/bin/sh -c python3 -m solcx.install v0.5.15]: exit code: 1
ERROR: Service 'avalon-shell' failed to build : Build failed

avalon % docker-compose up --build
Building avalon-lmdb
[+] Building 2.4s (22/22) FINISHED
 => [internal] load build definition from Dockerfile                                                                     0.0s
 => => transferring dockerfile: 3.88kB                                                                                0.0s
 => [internal] load .dockerignore                                                                                0.0s
 => => transferring context: 35B                                                                                0.0s
 => [internal] load metadata for docker.io/library/ubuntu:bionic                                                         2.2s
 => [internal] load build context                                                                                0.0s
 => => transferring context: 115.29kB                                                                                0.0s
 => [base_image 1/4] FROM docker.io/library/ubuntu:bionic@sha256:0fedbd5bd9fb72089c7bbca476949e10593cebed9b1fb9edf5b79d  0.0s
 => CACHED [base_image 2/4] COPY ./scripts/install_packages /project/avalon/scripts/                                     0.0s
 => CACHED [base_image 3/4] RUN packages="curl wget";     pip_packages="";     if [ "bionic" = "bionic" ] ; then         0.0s
 => CACHED [base_image 4/4] RUN ln -sf /usr/bin/python3 /usr/bin/python                                                  0.0s
 => CACHED [build_image 1/9] COPY ./scripts/install_packages /project/avalon/scripts/                                    0.0s
 => CACHED [final_image 2/5] WORKDIR /project/avalon/shared_kv_storage/                                                  0.0s
 => CACHED [build_image 2/9] RUN packages="pkg-config cmake make python3-pip swig";     pip_packages="setuptools";       0.0s
 => CACHED [build_image 3/9] COPY VERSION /project/avalon/                                                               0.0s
 => CACHED [build_image 4/9] COPY ./bin /project/avalon/bin                                                              0.0s
 => CACHED [build_image 5/9] COPY ./common/cpp /project/avalon/common/cpp                                                0.0s
 => CACHED [build_image 6/9] COPY ./shared_kv_storage /project/avalon/shared_kv_storage                                  0.0s
 => CACHED [build_image 7/9] RUN cd /project/avalon/shared_kv_storage/db_store/packages    && mkdir -p build    && cd b  0.0s
 => CACHED [build_image 8/9] WORKDIR /project/avalon/shared_kv_storage/                                                  0.0s
 => CACHED [build_image 9/9] RUN echo "Building avalon Shared KV"    && make                                             0.0s
 => CACHED [final_image 3/5] COPY --from=build_image /project/avalon/shared_kv_storage/dist/*.whl dist/                  0.0s
 => CACHED [final_image 4/5] COPY --from=build_image /project/avalon/shared_kv_storage/lmdb_config.toml      lmdb_confi  0.0s
 => CACHED [final_image 5/5] RUN packages="";     pip_packages="coverage";     if [ "bionic" = "bionic" ] ; then         0.0s
 => exporting to image                                                                                0.0s
 => => exporting layers                                                                                0.0s
 => => writing image sha256:e7d7c6de6844544b44e3080401360892cea91f0dbd97c758cb6e5369f390eb38                             0.0s
 => => naming to docker.io/library/avalon-lmdb-dev                                                                       0.0s

Use 'docker scan' to run Snyk tests against images to find vulnerabilities and learn how to fix them
Building avalon-enclave-manager
[+] Building 1.8s (69/69) FINISHED
 => [internal] load build definition from Dockerfile                                                                     0.0s
 => => transferring dockerfile: 12.89kB                                                                                0.0s
 => [internal] load .dockerignore                                                                                0.0s
 => => transferring context: 35B                                                                                0.0s
 => [internal] load metadata for docker.io/library/ubuntu:bionic                                                         1.5s
 => [internal] load build context                                                                                0.1s
 => => transferring context: 2.67MB                                                                                0.1s
 => [python_image 1/3] FROM docker.io/library/ubuntu:bionic@sha256:0fedbd5bd9fb72089c7bbca476949e10593cebed9b1fb9edf5b7  0.0s
 => CACHED [python_image 2/3] COPY ./scripts/install_packages /project/avalon/scripts/                                   0.0s
 => CACHED [base_image 3/4] RUN packages="";     pip_packages="";     if [ "bionic" = "bionic" ] ; then       DEBIAN_FR  0.0s
 => CACHED [base_image 4/4] RUN ln -sf /usr/bin/python3 /usr/bin/python                                                  0.0s
 => CACHED [build_image  1/47] COPY ./scripts/install_packages /project/avalon/scripts/                                  0.0s
 => CACHED [build_image  2/47] RUN packages="pkg-config cmake make git swig wget tar curl unzip"     && pip_packages="s  0.0s
 => CACHED [build_image  3/47] RUN if [ "bionic" = "centos" ] ; then       dnf -y --enablerepo=powertools install proto  0.0s
 => CACHED [build_image  4/47] RUN mkdir -p /opt/intel  && mkdir -p /etc/init                                            0.0s
 => CACHED [build_image  5/47] WORKDIR /opt/intel                                                                        0.0s
 => CACHED [build_image  6/47] RUN if [ "bionic" = "bionic" ] ; then       echo 'deb [arch=amd64] https://download.01.o  0.0s
 => CACHED [build_image  7/47] COPY docker/pccs/sgx_default_qcnl.conf /etc/sgx_default_qcnl.conf                         0.0s
 => CACHED [openssl_image 3/6] RUN packages="ca-certificates pkg-config make wget tar";     if [ "bionic" = "centos" ]   0.0s
 => CACHED [openssl_image 4/6] WORKDIR /tmp                                                                              0.0s
 => CACHED [openssl_image 5/6] RUN OPENSSL_VER=1.1.1g  && wget https://www.openssl.org/source/openssl-$OPENSSL_VER.tar.  0.0s
 => CACHED [openssl_image 6/6] RUN if [ "bionic" = "bionic" ] ; then       mkdir /usr/local/lib64;     fi                0.0s
 => CACHED [build_image  8/47] COPY --from=openssl_image /usr/local/ssl /usr/local/ssl                                   0.0s
 => CACHED [build_image  9/47] COPY --from=openssl_image /usr/local/bin /usr/local/bin                                   0.0s
 => CACHED [build_image 10/47] COPY --from=openssl_image /usr/local/include /usr/local/include                           0.0s
 => CACHED [build_image 11/47] COPY --from=openssl_image /usr/local/lib /usr/local/lib                                   0.0s
 => CACHED [build_image 12/47] COPY --from=openssl_image /usr/local/lib64 /usr/local/lib64                               0.0s
 => CACHED [build_image 13/47] COPY --from=openssl_image /tmp/openssl-1.1.1g.tar.gz /tmp/                                0.0s
 => CACHED [build_image 14/47] WORKDIR /tmp                                                                              0.0s
 => CACHED [build_image 15/47] RUN platform="";     if [ "bionic" = "bionic" ] ; then       platform="ubuntu18.04";      0.0s
 => CACHED [build_image 16/47] RUN rm -rf /project/avalon/tools/build/_dev                                               0.0s
 => CACHED [python_image 3/3] RUN packages="pkg-config python3-pip make"     pip_packages="setuptools";     if [ "bioni  0.0s
 => CACHED [avalon_sdk_image 1/5] COPY VERSION /project/avalon/                                                          0.0s
 => CACHED [avalon_sdk_image 2/5] COPY ./bin /project/avalon/bin                                                         0.0s
 => CACHED [common_python_image 3/5] COPY ./common/python /project/avalon/common/python                                  0.0s
 => CACHED [common_python_image 4/5] WORKDIR /project/avalon/common/python                                               0.0s
 => CACHED [common_python_image 5/5] RUN echo "Building Avalon Common Python\n"  && make                                 0.0s
 => CACHED [build_image 17/47] COPY --from=common_python_image /project/avalon/common/python/dist/*.whl dist/            0.0s
 => CACHED [avalon_sdk_image 3/5] COPY ./sdk /project/avalon/sdk                                                         0.0s
 => CACHED [avalon_sdk_image 4/5] WORKDIR /project/avalon/sdk                                                            0.0s
 => CACHED [avalon_sdk_image 5/5] RUN echo "Building Avalon SDK\n"  && make                                              0.0s
 => CACHED [build_image 18/47] COPY --from=avalon_sdk_image /project/avalon/sdk/dist/*.whl dist/                         0.0s
 => CACHED [build_image 19/47] RUN echo "Install common/python and sdk packages\n"  && pip3 install dist/*.whl json-rpc  0.0s
 => CACHED [build_image 20/47] RUN openssl genrsa -3 -out /project/avalon/enclave.pem 3072                               0.0s
 => CACHED [build_image 21/47] COPY ./examples/apps /project/avalon/examples/apps                                        0.0s
 => CACHED [build_image 22/47] COPY ./common/cpp /project/avalon/common/cpp                                              0.0s
 => CACHED [build_image 23/47] COPY ./tc/sgx/trusted_worker_manager/enclave/kme/workload /project/avalon/tc/sgx/trusted  0.0s
 => CACHED [build_image 24/47] COPY ./tc/sgx/trusted_worker_manager /project/avalon/tc/sgx/trusted_worker_manager        0.0s
 => CACHED [build_image 25/47] COPY ./common/crypto_utils /project/avalon/common/crypto_utils                            0.0s
 => CACHED [build_image 26/47] COPY ./enclave_manager /project/avalon/enclave_manager                                    0.0s
 => CACHED [build_image 27/47] COPY ./common/sgx_workload /project/avalon/common/sgx_workload                            0.0s
 => CACHED [build_image 28/47] COPY ./bin /project/avalon/bin                                                            0.0s
 => CACHED [build_image 29/47] COPY ./VERSION /project/avalon/VERSION                                                    0.0s
 => CACHED [build_image 30/47] COPY ./scripts/generate_mrenclave.sh /project/avalon/scripts/generate_mrenclave.sh        0.0s
 => CACHED [build_image 31/47] COPY ./config /project/avalon/config                                                      0.0s
 => CACHED [build_image 32/47] WORKDIR /project/avalon/common/sgx_workload                                               0.0s
 => CACHED [build_image 33/47] RUN mkdir -p build   && cd build   && cmake ..   && make                                  0.0s
 => CACHED [build_image 34/47] RUN if [ "singleton" != "kme" ] ; then         cd /project/avalon/examples/apps;          0.0s
 => CACHED [build_image 35/47] RUN if [ "singleton" = "kme" ] ; then         cd /project/avalon/tc/sgx/trusted_worker_m  0.0s
 => CACHED [build_image 36/47] WORKDIR /project/avalon/common/cpp                                                        0.0s
 => CACHED [build_image 37/47] RUN mkdir -p build   && cd build   && cmake ..   && make                                  0.0s
 => CACHED [build_image 38/47] WORKDIR /project/avalon/tc/sgx/trusted_worker_manager/common                              0.0s
 => CACHED [build_image 39/47] RUN mkdir -p build   && cd build   && cmake ..   && make                                  0.0s
 => CACHED [build_image 40/47] WORKDIR /project/avalon/tc/sgx/trusted_worker_manager/enclave                             0.0s
 => CACHED [build_image 41/47] RUN mkdir -p build   && cd build   && cmake ..   && make                                  0.0s
 => CACHED [build_image 42/47] WORKDIR /project/avalon/tc/sgx/trusted_worker_manager/enclave_untrusted/enclave_bridge    0.0s
 => CACHED [build_image 43/47] RUN mkdir -p build   && cd build   && cmake ..   && make                                  0.0s
 => CACHED [build_image 44/47] WORKDIR /project/avalon/common/crypto_utils                                               0.0s
 => CACHED [build_image 45/47] RUN make && make install                                                                  0.0s
 => CACHED [build_image 46/47] WORKDIR /project/avalon/enclave_manager                                                   0.0s
 => CACHED [build_image 47/47] RUN echo "Build and Install avalon enclave manager"   && make && make install             0.0s
 => exporting to image                                                                                0.1s
 => => exporting layers                                                                                0.0s
 => => writing image sha256:649ba65c3207a54df19c73e9f7595b1df56180da96923a69453cfdee9d22068d                             0.0s
 => => naming to docker.io/library/avalon-enclave-manager-dev                                                            0.0s

Use 'docker scan' to run Snyk tests against images to find vulnerabilities and learn how to fix them
Building avalon-listener
[+] Building 1.9s (34/34) FINISHED
 => [internal] load build definition from Dockerfile                                                                     0.0s
 => => transferring dockerfile: 5.14kB                                                                                0.0s
 => [internal] load .dockerignore                                                                                0.0s
 => => transferring context: 35B                                                                                0.0s
 => [internal] load metadata for docker.io/library/ubuntu:bionic                                                         1.7s
 => [internal] load build context                                                                                0.0s
 => => transferring context: 87.81kB                                                                                0.0s
 => [base_image 1/4] FROM docker.io/library/ubuntu:bionic@sha256:0fedbd5bd9fb72089c7bbca476949e10593cebed9b1fb9edf5b79d  0.0s
 => CACHED [base_image 2/4] COPY ./scripts/install_packages /project/avalon/scripts/                                     0.0s
 => CACHED [base_image 3/4] RUN packages="";     pip_packages="";     if [ "bionic" = "bionic" ] ; then       DEBIAN_FR  0.0s
 => CACHED [base_image 4/4] RUN ln -sf /usr/bin/python3 /usr/bin/python                                                  0.0s
 => CACHED [final_image 1/9] COPY ./scripts/install_packages /project/avalon/scripts/                                    0.0s
 => CACHED [final_image 2/9] WORKDIR /project/avalon/listener                                                            0.0s
 => CACHED [final_image 3/9] COPY ./listener/listener_config.toml /project/avalon/listener/listener_config.toml          0.0s
 => CACHED [final_image 4/9] COPY ./config/tcs_config.toml /project/avalon/config/                                       0.0s
 => CACHED [python_image 3/3] RUN packages="pkg-config python3-pip make"     pip_packages="setuptools";     if [ "bioni  0.0s
 => CACHED [build_image 1/6] COPY VERSION /project/avalon/                                                               0.0s
 => CACHED [build_image 2/6] COPY ./bin /project/avalon/bin                                                              0.0s
 => CACHED [common_python_image 3/5] COPY ./common/python /project/avalon/common/python                                  0.0s
 => CACHED [common_python_image 4/5] WORKDIR /project/avalon/common/python                                               0.0s
 => CACHED [common_python_image 5/5] RUN echo "Building Avalon Common Python\n"  && make                                 0.0s
 => CACHED [final_image 5/9] COPY --from=common_python_image /project/avalon/common/python/dist/*.whl dist/              0.0s
 => CACHED [common_crypto_utils_image 3/5] COPY ./common/crypto_utils /project/avalon/common/crypto_utils                0.0s
 => CACHED [common_crypto_utils_image 4/5] WORKDIR /project/avalon/common/crypto_utils                                   0.0s
 => CACHED [common_crypto_utils_image 5/5] RUN echo "Building Avalon Common Crypto Python\n"  && make                    0.0s
 => CACHED [final_image 6/9] COPY --from=common_crypto_utils_image /project/avalon/common/crypto_utils/dist/*.whl dist/  0.0s
 => CACHED [avalon_sdk_image 3/5] COPY ./sdk /project/avalon/sdk                                                         0.0s
 => CACHED [avalon_sdk_image 4/5] WORKDIR /project/avalon/sdk                                                            0.0s
 => CACHED [avalon_sdk_image 5/5] RUN echo "Building Avalon SDK\n"  && make                                              0.0s
 => CACHED [final_image 7/9] COPY --from=avalon_sdk_image /project/avalon/sdk/dist/*.whl dist/                           0.0s
 => CACHED [build_image 3/6] COPY ./config/tcs_config.toml /project/avalon/config/                                       0.0s
 => CACHED [build_image 4/6] COPY ./listener /project/avalon/listener                                                    0.0s
 => CACHED [build_image 5/6] WORKDIR /project/avalon/listener/                                                           0.0s
 => CACHED [build_image 6/6] RUN echo "Building avalon listener\n"   && make                                             0.0s
 => CACHED [final_image 8/9] COPY --from=build_image /project/avalon/listener/dist/*.whl dist/                           0.0s
 => CACHED [final_image 9/9] RUN packages="";     pip_packages="json-rpc pyzmq jsonschema coverage pycryptodomex ecdsa"  0.0s
 => exporting to image                                                                                0.0s
 => => exporting layers                                                                                0.0s
 => => writing image sha256:e34b4e4f76254cea7d7a7f02e19a545de105c34afdd78bd63c688c9517c68d56                             0.0s
 => => naming to docker.io/library/avalon-listener-dev                                                                   0.0s

Use 'docker scan' to run Snyk tests against images to find vulnerabilities and learn how to fix them
Building avalon-shell
[+] Building 2.4s (63/79)
 => [internal] load build definition from Dockerfile                                                                     0.0s
 => => transferring dockerfile: 13.76kB                                                                                0.0s
 => [internal] load .dockerignore                                                                                0.0s
 => => transferring context: 35B                                                                                0.0s
 => [internal] load metadata for docker.io/library/ubuntu:bionic                                                         1.4s
 => [internal] load build context                                                                                0.3s
 => => transferring context: 1.71MB                                                                                0.3s
 => [common_cpp_image  1/16] FROM docker.io/library/ubuntu:bionic@sha256:0fedbd5bd9fb72089c7bbca476949e10593cebed9b1fb9  0.0s
 => CACHED [common_cpp_image  2/16] COPY ./scripts/install_packages /project/avalon/scripts/                             0.0s
 => CACHED [python_image 3/3] RUN packages="ca-certificates pkg-config python3-pip make wget tar"     pip_packages="set  0.0s
 => CACHED [avalon_sdk_image 1/5] COPY VERSION /project/avalon/                                                          0.0s
 => CACHED [avalon_sdk_image 2/5] COPY ./bin /project/avalon/bin                                                         0.0s
 => CACHED [common_python_image 3/5] COPY ./common/python /project/avalon/common/python                                  0.0s
 => CACHED [common_python_image 4/5] WORKDIR /project/avalon/common/python                                               0.0s
 => CACHED [common_python_image 5/5] RUN echo "Building Avalon Common Python\n"  && make                                 0.0s
 => CACHED [avalon_sdk_image 3/5] COPY ./sdk /project/avalon/sdk                                                         0.0s
 => CACHED [avalon_sdk_image 4/5] WORKDIR /project/avalon/sdk                                                            0.0s
 => CACHED [avalon_sdk_image 5/5] RUN echo "Building Avalon SDK\n"  && make                                              0.0s
 => CACHED [base_image 3/4] RUN packages="wget tar";     pip_packages="";     if [ "bionic" = "bionic" ] ; then       D  0.0s
 => CACHED [base_image 4/4] RUN ln -sf /usr/bin/python3 /usr/bin/python                                                  0.0s
 => CACHED [final_image  1/22] COPY ./scripts/install_packages /project/avalon/scripts/                                  0.0s
 => CACHED [final_image  2/22] RUN if [ "bionic" = "centos" ] ; then       dnf remove -y python3-pip;       packages="o  0.0s
 => CACHED [final_image  3/22] RUN packages="git";     pip_packages="json-rpc web3 py-solc-x nose2 virtualenv fastapi==  0.0s
 => CACHED [final_image  4/22] WORKDIR /opt/intel/                                                                       0.0s
 => CACHED [final_image  5/22] RUN packages="wget tar libsgx-dcap-default-qpl libsgx-dcap-quote-verify";   if [ "bionic  0.0s
 => ERROR [final_image  6/22] RUN python3 -m solcx.install v0.5.15                                                       0.5s
 => CACHED [common_crypto_utils_image  1/22] COPY ./scripts/install_packages /project/avalon/scripts/                    0.0s
 => CACHED [common_crypto_utils_image  2/22] RUN packages="swig";     if [ "bionic" = "centos" ] ; then       packages=  0.0s
 => CACHED [openssl_image 3/6] RUN packages="ca-certificates pkg-config make wget tar";     if [ "bionic" = "centos" ]   0.0s
 => CACHED [openssl_image 4/6] WORKDIR /tmp                                                                              0.0s
 => CACHED [openssl_image 5/6] RUN OPENSSL_VER=1.1.1g  && wget https://www.openssl.org/source/openssl-$OPENSSL_VER.tar.  0.0s
 => CACHED [openssl_image 6/6] RUN if [ "bionic" = "bionic" ] ; then       mkdir /usr/local/lib64;     fi                0.0s
 => CACHED [common_crypto_utils_image  3/22] COPY --from=openssl_image /usr/local/ssl /usr/local/ssl                     0.0s
 => CACHED [common_crypto_utils_image  4/22] COPY --from=openssl_image /usr/local/bin /usr/local/bin                     0.0s
 => CACHED [common_crypto_utils_image  5/22] COPY --from=openssl_image /usr/local/include /usr/local/include             0.0s
 => CACHED [common_crypto_utils_image  6/22] COPY --from=openssl_image /usr/local/lib /usr/local/lib                     0.0s
 => CACHED [common_crypto_utils_image  7/22] COPY --from=openssl_image /usr/local/lib64 /usr/local/lib64                 0.0s
 => CACHED [common_crypto_utils_image  8/22] RUN ldconfig  && ln -s /etc/ssl/certs/* /usr/local/ssl/certs/               0.0s
 => CACHED [common_cpp_image  3/16] RUN packages="pkg-config make cmake wget tar";     if [ "bionic" = "centos" ] ; the  0.0s
 => CACHED [common_cpp_image  4/16] COPY --from=openssl_image /usr/local/ssl /usr/local/ssl                              0.0s
 => CACHED [common_cpp_image  5/16] COPY --from=openssl_image /usr/local/bin /usr/local/bin                              0.0s
 => CACHED [common_cpp_image  6/16] COPY --from=openssl_image /usr/local/include /usr/local/include                      0.0s
 => CACHED [common_cpp_image  7/16] COPY --from=openssl_image /usr/local/lib /usr/local/lib                              0.0s
 => CACHED [common_cpp_image  8/16] COPY --from=openssl_image /usr/local/lib64 /usr/local/lib64                          0.0s
 => CACHED [common_cpp_image  9/16] RUN ldconfig  && ln -s /etc/ssl/certs/* /usr/local/ssl/certs/                        0.0s
 => CACHED [common_cpp_image 10/16] RUN mkdir -p /opt/intel/                                                             0.0s
 => CACHED [common_cpp_image 11/16] WORKDIR /opt/intel/                                                                  0.0s
 => CACHED [common_cpp_image 12/16] RUN SGX_SDK_FILE=sgx_linux_x64_sdk_<IP_ADDRESS>.bin   && wget https://download.01.org  0.0s
 => CACHED [common_cpp_image 13/16] RUN packages="libsgx-dcap-ql-dev libsgx-dcap-quote-verify libsgx-dcap-quote-verify-  0.0s
 => CACHED [common_cpp_image 14/16] COPY ./common/cpp /project/avalon/common/cpp                                         0.0s
 => CACHED [common_cpp_image 15/16] WORKDIR /project/avalon/common/cpp                                                   0.0s
 => CACHED [common_cpp_image 16/16] RUN mkdir -p build   && cd build   && cmake .. -DUNTRUSTED_ONLY=1   && make          0.0s
 => CACHED [common_crypto_utils_image  9/22] COPY --from=common_cpp_image /project/avalon/common/cpp/build /project/ava  0.0s
 => CACHED [common_crypto_utils_image 10/22] COPY VERSION /project/avalon/                                               0.0s
 => CACHED [common_crypto_utils_image 11/22] COPY ./bin /project/avalon/bin                                              0.0s
 => CACHED [common_crypto_utils_image 12/22] COPY ./common/cpp /project/avalon/common/cpp                                0.0s
 => CACHED [common_crypto_utils_image 13/22] WORKDIR /opt/intel                                                          0.0s
 => CACHED [common_crypto_utils_image 14/22] RUN packages="libsgx-dcap-ql-dev libsgx-dcap-quote-verify libsgx-dcap-quot  0.0s
 => CACHED [common_crypto_utils_image 15/22] COPY ./common/crypto_utils /project/avalon/common/crypto_utils              0.0s
 => CACHED [common_crypto_utils_image 16/22] WORKDIR /project/avalon/common/crypto_utils                                 0.0s
 => CACHED [common_crypto_utils_image 17/22] RUN echo "Building Avalon Common Crypto Python\n"  && make                  0.0s
 => CACHED [common_crypto_utils_image 18/22] COPY ./common/verify_report_utils/ /project/avalon/common/verify_report_ut  0.0s
 => CACHED [common_crypto_utils_image 19/22] WORKDIR /project/avalon/common/verify_report_utils/ias                      0.0s
 => CACHED [common_crypto_utils_image 20/22] RUN echo "Building Avalon Verify IAS Report Utils\n"  && make               0.0s
 => CACHED [common_crypto_utils_image 21/22] WORKDIR /project/avalon/common/verify_report_utils/dcap                     0.0s
 => CACHED [common_crypto_utils_image 22/22] RUN echo "Building Avalon Verify DCAP Report Utils\n"  && make              0.0s
------
 > [final_image  6/22] RUN python3 -m solcx.install v0.5.15:
#14 0.472 /usr/bin/python3: Error while finding module specification for 'solcx.install' (ModuleNotFoundError: No module named 'solcx')
------
executor failed running [/bin/sh -c python3 -m solcx.install v0.5.15]: exit code: 1
ERROR: Service 'avalon-shell' failed to build : Build failed

workaround solution:
RUN apt-get install -y python3-pip
RUN pip3 install py-solc-x

Passed local test，but still missing some python libs in test container.
root@1848e0ae1f69:/project/avalon/examples/apps/generic_client# ./generic_client.py --workload_id "heart-disease-eval" \
>     --in_data "Data: 25 10 1 67 102 125 1 95 5 10 1 11 36 1" -o
Traceback (most recent call last):
  File "./generic_client.py", line 23, in <module>
    from direct_model_generic_client import DirectModelGenericClient
  File "/project/avalon/examples/apps/generic_client/direct_model_generic_client.py", line 21, in <module>
    from avalon_sdk.connector.blockchains.ethereum.ethereum_worker_registry_list \
  File "/usr/local/lib/python3.6/dist-packages/avalon_sdk/connector/blockchains/ethereum/ethereum_worker_registry_list.py", line 23, in <module>
    from avalon_sdk.connector.blockchains.ethereum.ethereum_wrapper \
  File "/usr/local/lib/python3.6/dist-packages/avalon_sdk/connector/blockchains/ethereum/ethereum_wrapper.py", line 21, in <module>
    import web3


class: paper is in the wrong place

fixed by #9
(renamed paper to publication)

this issue can be closed


rename PODserializer object to PODstore

also update code commenta that have old format

terminology
PsDatabase (contains PsNode(s))
PsNode contains a PsKey and PsData
PsData contains type, count, and values

where PsNode is a std::pair<key,PsData>

decided on PsContainer, PsBlock, and PsData


readme: bundle install before appraisal install for dev

I noticed this when jumping in to add another feature.
Currently it jumps straight to appraisal commands, which assumes that gem is installed.
The trouble is, installing it isn't enough. This happens under rbenv ruby 2.3.1:

Specifically:
➜  wicked git:(master) gem install appraisal
Fetching: appraisal-2.1.0.gem (100%)
Successfully installed appraisal-2.1.0
1 gem installed
➜  wicked git:(master) appraisal install
WARN: Unresolved specs during Gem::Specification.reset:
      rake (>= 0)
WARN: Clearing out unresolved specs.
Please report a bug if this causes problems.
Could not find gem 'sqlite3' in any of the gem sources listed in your Gemfile or available on this machine.
Run `bundle install` to install missing gems.

bundle install might be installing too much, but it's simple and works, and I guess we'll need the gems to do local development anyway.

Great, thanks!


MODULES-2309: Add option to not notify service on config change

This is to add the option to not notify the rabbitmq-service to restart after a configuration file change.
This is really only useful for HA rabbitmq clusters were you want to ensure that a controlled restart is done of all node on configuration changes.  Otherwise there is the chance of clustering issues if all nodes in the rabbitmq cluster are restarted simultaneously, as the current rabbitmq clustering configuration is highly dependent on the start order for node recovery.

The usual way to accomplish this is to pass service_manage => false as this is a much-less fragile implementation that covers your use case.

Perfectly understandable.  However, the one drawback to 'service_manage => false' is that puppet won't start or enable the service with out other manual intervention or changing the configuration after initial setup.


VAE is always decoded on CPU

I believe the issue is caused by this line in VaeDecoder.Decode because no sessionOptions are passed to InferenceSession.
I added SessionOptions.MakeSessionOptionWithCudaProvider() and it started using the GPU instead.

where?


A10C - UFC INTEN button action is swapped

When UFC INTEN Left is pressed on the iPad, UFC INTEN Right is animated in DCS. The reverse happens too.

Version 1.3(12)
Pressing either UFC INTEN on the iPad animates UFC INTEN Right ingame.


diagnostics (errors) aren't working very well

They only seem to show when a document is first opened then they don't get updated after the document is edited.

Glancing through the LSP logs there doesn't seem to be any textDocument/publishDiagnostics happening

Docs https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_publishDiagnostics

Notes from debugging:
I've got a repro to show the server isn't sending updated textDocument/publishDiagnostics notifications and a screencast of it happening (attached)
lsp.log
https://user-images.githubusercontent.com/1526174/230791598-dc8dca39-8f1b-4f92-8c2b-2422a6352b84.mov

Improved repro
lsp.log
https://user-images.githubusercontent.com/1526174/230795928-53c46723-ce19-475e-8c31-62b7d2949a1c.mov

https://github.com/eclipse/lemminx/issues/1509


Remove duplicates and sort alphabetically

Fixes #32 and fixes #34

@brooksilg Could you please rebase your branch and resolve the merge conflicts?


Julia Registrator

@JuliaRegistrator register()

Registration pull request created: JuliaRegistries/General/65249
After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.
This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via:
git tag -a v0.1.0 -m "<description of version>" 5ee43b31c1e25dffea251a629950e59b47576bb7
git push origin v0.1.0


Value by County

I would like to be able to be able to filter Value by county, by dates.  It does not work currently.
Also I would like to be able to do the same by agency.

This was fixed by #500


Syntax for builtin objects

How do I access the builtin objects, i.e. sqlite
Can you provide a simple example that uses this api?

i should have some docs and examples up tonight and over weekend @mikeptweet. will reply here when i have something.
right now, there are some benches here and some examples and docs will be going here.

I am running on MacOS  Intel x64. The binary runtime works great from the release but for the life of me, I can't figure out how to use the builtin objects like sqlite.
Awesome work BTW

cool. there are some issues building bindings on macos that i can't really look into until i have a mac machine to work on. hopefully soon. but, if you want to give it a try and let me know what breaks, that would be very useful. maybe jump on the discord and we can chat there? https://discord.gg/ZnNsBwaBKr
there's a docker file here you can use if you can't get things running on macos rn. this will download, compile source and build all the bindings.  i have commented out duckdb as it takes ages to build. the commands should be same on macos but you will need to set C=clang and CC=clang++ in your env when running the build commands.
if you get the bindings built, there is a nice wrapper around the sqlite bindings here. i think it should be easy enough to figure out, but i will push an example of usage up to the docs repo shortly.

looks like i can get a mac instance up on scaleway now so i will have a look at any of the build issues on macos over the weekend. i think they will be pretty easy to fix. :rocket:

there will be windows support but it's lower priority right now because everything on windows is so wildly different to macos/linux. goal is to expose the low level system api's we need for windows into JS and we can build on top of those in JS rather than creating a very complex cross platform abstraction in a lower level language like C++ or Rust.


Please consider fixing issues detected by repository checker

Notification from ioBroker Check and Service Bot
Dear adapter developer,
I'm the ioBroker Check and Service Bot. I'm an automated tool processing routine tasks for the ioBroker infrastructure. I have recently checked the repository for your adapter pylontech for common errors and appropiate suggestions to keep this adapter up to date.
This check is based the current head revisions (master / main  branch) of the adapter repository
Please see the result of the check below.
ioBroker.pylontech
   -
:thumbsup: No errors found
:thumbsup: No warnings found
SUGGESTIONS:

[ ] :pushpin: [S522] Please consider migrating to admin 5 UI (jsonConfig).

Please review issues reported and consider fixing them as soon as appropiate.
Suggestions reported by repository checker should be reviewed. Suggestions can be ignored due to a decision of the developer but they are reported as a hint to use a configuration which might get required in future or at least is used be most adapters. Suggestions are always optional to follow.
You may start a new check or force the creation of a new issue at any time by adding the following comment to this issue:
@iobroker-bot recheck
@iobroker-bot recreate
Please note that I (and the server at GitHub) have always plenty of work to do. So it may last up to 30 minutes until you see a reaction. I will drop a comment here as soon as I start processing.
Feel free to contact me (@iobroker-bot) if you have any questions or feel that an issue is incorrectly flagged.
And THANKS A LOT for maintaining this adapter from me and all users.
Let's work together for the best user experience.
your
ioBroker Check and Service Bot
@mcm1957 for evidence
Last update at Thu, 19 Sep 2024 09:37:27 GMT based on commit a2fce6c1a59e6e3044e393b15d4eb65d319a6d12
ioBroker.repochecker 3.0.6

@iobroker-bot recheck

This issue has been updated by ioBroker Check and Service Bot
RECHECK has been performed as requested.
No changes detected.

The admin was written in materialize. If this needs to be changed, the adapter will be deprecated.


replace MaxPoll with stride=2

notice that you replace Maxpooling with residual module of stride=2, is it safe compaired with the orginal nerwork?

Yes, it is the same as the official implementation.


Semantics of diagnostics passed to codeAction are unspecified

The document for the diagnostics field of CodeActionContext reads "An array of diagnostics." Based on the types alone it's not possible to deduce what the meaning of this field is.
My best guess is that for code actions that relate to a diagnostic, the diagnostics passed acts as a filter, and when no diagnostics are passed no actions related to diagnostics are returned. Is that correct?
As a client, I want to populate a list of all possible actions for a particular range. Why would I want filter functionality in the codeAction request? And if I don't want to filter, should I always just pass in all diagnostics related to the range? Seems like a waste of bandwidth, but OK.

See #583.

Dups #583


Enhancing Statistics with Jitter Calculation

Have you ever thought about calculating jitter?
The Statistics structure contains Rtts, which holds all the round-trip times sent via this pinger. You could calculate min, average, and max jitter based on these values, which would provide more detailed insights.
Jitter: RFC 4689

Seems like a nice feature, care to create a PR?

I've just started some R&D for monitoring purposes, so I can try to implement something. However, there's no specific timeline or expected results as this isn't a priority task at the moment.


Reading Parquet files stored on s3 using petastorm generates connection warnings

I have a Tensorflow model that I would like to feed with parquet files stored on s3. I'm using petastorm to query these files from s3 and the result of the query is stored as a Tensorflow dataset thanks to petastorm.tf_utils.make_petastorm_dataset.
import s3fs
from pyarrow.filesystem import S3FSWrapper
from petastorm.reader import Reader
from petastorm.tf_utils import make_petastorm_dataset

dataset_url = "analytics.xxx.xxx" #s3 bucket name

fs = s3fs.S3FileSystem()
wrapped_fs = S3FSWrapper(fs)

with Reader(pyarrow_filesystem=wrapped_fs, dataset_path=dataset_url) as reader:
    dataset = make_petastorm_dataset(reader)

This works pretty well, except that it generates 20+ lines of connection warnings:
W0514 18:56:42.779965<PHONE_NUMBER>08032 connectionpool.py:274] Connection pool is full, discarding connection: s3.eu-west-1.amazonaws.com
W0514 18:56:42.782773<PHONE_NUMBER>37216 connectionpool.py:274] Connection pool is full, discarding connection: s3.eu-west-1.amazonaws.com
W0514 18:56:42.854569<PHONE_NUMBER>73312 connectionpool.py:274] Connection pool is full, discarding connection: s3.eu-west-1.amazonaws.com
W0514 18:56:42.868761<PHONE_NUMBER>22624 connectionpool.py:274] Connection pool is full, discarding connection: s3.eu-west-1.amazonaws.com
W0514 18:56:42.885518<PHONE_NUMBER>29824 connectionpool.py:274] Connection pool is full, discarding connection: s3.eu-west-1.amazonaws.com
...

According to this thread https://stackoverflow.com/questions/53765366/urllib3-connectionpool-connection-pool-is-full-discarding-connection, it's certainly related to urllib3, but I can't figure a way to get rid of these warnings.

s3fs has a connection pool setting for boto3. Try increasing your connection-pool size to something larger.

worked fine, thanks!


Embla not stoping

i tried to make stop for sliding , because i have a slider with some information mus be read from visitors ... i build pause button and i tried to stop embla for siliding but nothing happend ....  may you have ashort cut thanx
used in https://www.villa-kritikos.de/

Hi @antoniovassallo,
I’m not sure what you’re trying to achieve. Could you create a discussion with your question because this is most likely not a bug.
Best,
David


kmymoney: fix build

Motivation for this change
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nix-review --run "nix-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[x] Fits CONTRIBUTING.md.

Notify maintainers
cc @

do you mind changing the commits to match:
python3Packages.weboob: 1.3 -> 1.5
kmymoney: 5.0.5 -> 5.0.7

Done

@GrahamcOfBorg build kmymoney


galaxy tab could not upload hidden.rfs or movinand.mst

Hello Benjamin,
I tried flashing these files without success.
The error:
Could not find end of file or end of file transfer, something similar.
Version:
Heimdall 1.2
I tried both commands (These commands may not be exact, from the top of my head):
heimdall flash repartition --13 hidden.rfs --15 movinand.mst
hiemdall flash repartition --hidden hidden.rfs --movinand movinand.mst

A related question:
The internel sd card did not seem to wipe everything when initiating the following command:
heimdall flash --repartition --pit gt-p1000_mr.pit --factoryfs factoryfs.rfs --cache cache.rfs --dbdata dbdata.rfs --kernel zImage --param param.lfs --primary-boot boot.bin --secondary-boot Sbl.bin
Is this to do with the fact movinand and hidden.rfs were not uploaded successfully?
I was using overcome's stock safe v1.

Thank you for you work, I love it!!!

I confirm the problem.
My SGT was running smoothly on JME.
I then tried to flash to JQ1 and it failed at Hidden.rfs.
The tab is now bricked. Whatever FW I try to flash now, it will always fail at either hidden.rfs or movinand.mst (depending on the ROM's content)
If I flash without these 2 it will flash without error, but the tab will not boot.
My feeling is that this is not a heimdall specific problem, it's probably caused by some 'locked' status of the tab.
Anyway my tab is now bricked and it would be great to have some suggestion on how to get out of it!


[seq] add support for Data.Sequence.Seq a

Hello,
I'm not sure if you're interested, but I added Data.Sequence read/write support. This is useful alongside Array sometimes. Or do you suggest some other approach, eg. converting data to Array before serializing/deserializing?

I am not at all interested in taking instances for datatypes that aren't basically JS. You should fork this library in your project or write functions to do what you want: https://purescript-simple-json.readthedocs.io/en/latest/inferred-record-types.html


Make it possible to add multiple user accounts

[ ] add PluggbleListSpec to IMAP Overview window with current user account
[ ] add button to add an account
[ ] create a login window for that purpose (or reuse the existing one somehow)
[ ] after entering the login information, display the email account in the List
[ ] make it so when you click on a different account the correct folderstructure gets displayed

sounds great 😍


Refactoring WeaponComponent to move all firing logics to weapon entity

Description
Task: To Refactor WeaponComponent to move all firing logics to weapon entity
Feature: Weapons
This task includes creating a new class, AllFiringLogic, to encapsulate all firing-related logic currently present in the WeaponComponent. This new class will be used as a component in the WeaponFactory to facilitate the creation and management of weapon entities.
Dependencies

[x] (#2)

Milestones
List of steps that need to be completed for this task.

[x] Create a new class named AllFiringLogic. (Sep. 18)
[x] Include properties and methods to manage firing-related logic, such as shoot, attack , ammo management, sound effects etc. (Sep. 19)
[x] Update the WeaponFactory class to create instances of AllFiringLogic and associate it with weapon entities. (Sep. 20)
[x] Update WeaponComponent. (Sep. 20)

Completion Deadline: Sep. 21
Member
Divyansh Agarwal (divyanshddn146)

Remember to set the labels correctly.


Adding Admin actions to the Cypress Smoke Tests

Adding Admin actions to the Cypress Tests:

Add admin account
Securely keep the password encrypted with a key
Create an utility to decode the password
Add Approval script

Here is a commit for that:
https://github.com/bcgov/platform-services-registry-ui-tests/commit/a3c180236845ee75d36ea5286ed6521911578944


[DESCRIPTIVE FEATURE NAME]

✅ Prerequisites

[x] Did you perform a cursory search of open issues? Is this feature already requested elsewhere?
[x] Are you reporting to the correct repository (magic-sdk)?

✨ Feature Request
Magic should allow custom UTXO blockchains as similar to EVM
🧩 Context
I would like to start use magic login for custom UTXO blockchains similar to BTC like for instance Dogecoin. Magic signature should allow a custom configuration and rpc to allow any UTXO based chain to be used to be signed by magic.
💻 Examples
Use Dogecoin or LTC

Thank you for the feature request suggestion. Should we ever consider this request, we will reopen this issue.


HADOOP-15652. Fix typos SPENGO into SPNEGO

There are some typo words SPENGO which should be SPNEGO.
Contributed by okumin

+1, committing. Thanks


Wasm module error behavior

Wasm module probably behaves different than binary, we should figure out how and make sure it is nice for users to understand and create issues based on it.
Related:

https://github.com/prisma/language-tools/pull/966/files#r756836401
https://github.com/prisma/language-tools/pull/966
https://prisma-company.slack.com/archives/C02A1646TBR/p1637773282039600 + https://github.com/prisma/prisma-fmt-wasm/pull/8

This is what an unhandled engine prisma-fmt crash would like (a non-helpful JS exception). We have error handlers for most methods though, I'll check what would happen there now.

Here's the output with the panic inside of a try block with a catch calling the error handler. What I understand from this: our error handler swallows errors (it's the same we used for the binary).

I double checked and can confirm it's the behaviour I observe.

the panics will throw unhelpful JS exceptions, we'd need to handle them and say what failed and how to report it

So the current implementation is only showing error messages for validateTextDocument (which calls lint())
And is surfaced via the onError callback as a notification error.
https://github.com/prisma/language-tools/blob/main/packages/language-server/src/server.ts#L166-L168
Now the question is, do we want to have this notification error for all the methods? 🤔

Note: it may be possible to solve this issue by investigating ideas from this internal thread.

Note that logging was improved in https://github.com/prisma/language-tools/pull/1474


--slim-mode option missing - but documented

https://zulipchat.com/help/import-from-hipchat  is telling about a "--slim-mode" option for import from hipchat to have all users unsubscribed for public streams (i don't want all users to be subscribed after import) - but apparently this option doesn't seem to exist at all, at lest not as a command line option as stated.
from a look at the source, slim-mode also seems to do more besides just having all users being unsubscribed to public channels
where can i read on what slim-mode is all about and how to enable/disable ?
"
Subscribe only HipChat room owners to public streams (and plan for users to subscribe to the imported Zulip streams manually after the import completes) using the --slim-mode option to manage.py convert_hipchat_data
"

@devZer0 you need to upgrade to master before doing HipChat import; that's what adds this feature (and also fixes various other HipChat import issues).
It basically just does that -- the other changes are largely to avoid validation failures.  In any case, I don't recommend using --slim-mode unless your organization is large (hundreds or thousands of users); the other default options are better for smaller organizations.

I added 4826393ec4e40993e9f121c9a022d8c51030504b to fix its --help docs being broken in master.

sorry, that was my fault - as the docs is telling "... to subscribe to the IMPORT Zulip streams manually after the IMPORT completes) using the --slim-mode option to...."  i was accidentally searching for this option on IMPORT - but this is an option for convert_hipchat_data. the docs is correct.
i was using 1.9.2 release


[Request] Sakura Wars GB [en patch]

Not sure if it's possible on larger games like this,
but  Sakura Wars GB is full of RNG and has lots of missable stuff,
So save states would be great!
https://www.romhacking.net/translations/6348/

Hi there,
I've now created a patch for this. Give it a try and let me know if any issues :)
Note I had to fix a bug in the game during the introduction which caused it to incorrectly write to the SRAM bank change register. This wouldn't have been an issue with the original game because there was only one SRAM bank, but now with multiple SRAM banks (for the save states patch) this bug was causing an issue. Anyway hopefully that was the only such bug in the game.

Looks good so far!
It worked on my emulator and on my ems 64m,
But I'll let you know if I run into any issues, thanks again for making this!

That's great :) Thanks for testing!


Add compile command

It would be helpful to see the compiled template.  You could use the apply command and say no at the prompt, but if a stack has unmet dependencies (e.g. an unresolved stack output), it will show an error message and exit.
Adding a command which compiled the template and output it for examination would be helpful.

Fixed in #245


Create LayerProtocolRevision.md

Proposed changes the the Layer.applied(to: function

I signed it!
On Fri, Feb 15, 2019 at 5:47 PM googlebot<EMAIL_ADDRESS>wrote:

Thanks for your pull request. It looks like this may be your first
contribution to a Google open source project (if not, look below for help).
Before we can look at your pull request, you'll need to sign a Contributor
License Agreement (CLA).
📝 Please visit https://cla.developers.google.com/
https://cla.developers.google.com/ to sign.
Once you've signed (or fixed any issues), please reply here (e.g. I
signed it!) and we'll verify it.
What to do if you already signed the CLA Individual signers

It's possible we don't have your GitHub username or you're using a
different email address on your commit. Check your existing CLA data
https://cla.developers.google.com/clas and verify that your email is
set on your git commits
https://help.github.com/articles/setting-your-email-in-git/.

Corporate signers

Your company has a Point of Contact who decides which employees are
authorized to participate. Ask your POC to be added to the group of
authorized contributors. If you don't know who your Point of Contact is,
direct the Google project maintainer to go/cla#troubleshoot (Public
version https://opensource.google.com/docs/cla/#troubleshoot).
The email used to register you as an authorized contributor must be
the email used for the Git commit. Check your existing CLA data
https://cla.developers.google.com/clas and verify that your email is
set on your git commits
https://help.github.com/articles/setting-your-email-in-git/.
The email used to register you as an authorized contributor must
also be attached to your GitHub account
https://github.com/settings/emails.

Googlers can find more info about SignCLA and this PR by following this
link
http://go/prinfo/https%3A%2F%2Fgithub.com%2Ftensorflow%2Fswift%2Fpull%2F115
.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/tensorflow/swift/pull/115#issuecomment-464271723, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AK7BKbPEk1Jh4Rfncqd5p8FmwYdihqkDks5vN2MtgaJpZM4a-tsH
.

I created https://github.com/tensorflow/swift-apis/pull/13 that implements this. However it's blocked by a compiler bug. We working on a fix.

When I started this I was trying to suggest a simple change for a single parameter so that models could be copied correctly. After our discussion and your valuable input, I think the learning phase is only a small part of the larger issue of execution context and resource initialization. I have some experience with this problem, and thoughts on requirements. The Dev Summit is coming soon, and I don't believe this larger set of issues will get fully written up, reviewed, implemented, and tested by then.  @saeta Brennan, would you like me to take a first pass at writing up the requirements, and then proposing an implementation? No worries if this is something you guys think you would prefer to address yourselves.
Ed

I think cleaning up the learning phase issue is a very important first step and should land ASAP. I'm fixing the blocker that's preventing it. The current design along with models built with it is kind of an anti-pattern right now.

One other note, I don't think Context can be a class as suggested. It would create the same model copying problem as LearningPhaseIndicator. The class pointer would be copied preventing concurrent training and testing. I believe a final solution will also involve being able to "set" (change) the context of a copied model. It would be ideal to have the flexibility to train on the GPU and concurrently test a model on the CPU using both compute resources. Similarly you would probably want to train on a GCP TPU and perhaps offload testing to another GCP CPU node, etc..

With the emphasis on doing something in time, I am currently working on the modifications to Layer.swift for your review.

My intuition is to make any copying of Context be explicit, but I could be wrong.  When a layer passes a context to a sublayer, semantically it should be borrowed, not copied.

I've checked the changes into my forked execution-context branch, however it doesn't fully build yet because valueWithPullback is being used by BatchNorm and Dropout, so I can't simply remove them as previously suggested. I can create a pull request so that you have access to my changes, however I didn't know if that is acceptable since it doesn't cleanly build yet?


[SPARK-33405][BUILD][3.0] Upgrade commons-compress to 1.20

What changes were proposed in this pull request?
This PR aims to upgrade commons-compress from 1.8 to 1.20.
Why are the changes needed?

https://commons.apache.org/proper/commons-compress/security-reports.html

Does this PR introduce any user-facing change?
No.
How was this patch tested?
Pass the CIs.

Test build #130814 has started for PR 30305 at commit 608c29f.

Test build #130814 has finished for PR 30305 at commit 608c29f.

This patch fails build dependency tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test FAILed.

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

The Jenkins failure is due to the broken Maven directory and is irrelevant to this one.
sing `mvn` from path: /home/jenkins/tools/hudson.tasks.Maven_MavenInstallation/Maven_3.6.3/bin/mvn
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-install-plugin:3.0.0-M1:install (default-cli) on project spark-launcher_2.12: ArtifactInstallerException: Failed to install metadata org.apache.spark:spark-launcher_2.12/maven-metadata.xml: Could not parse metadata /home/jenkins/.m2/repository/org/apache/spark/spark-launcher_2.12/maven-metadata-local.xml: in epilog non whitespace content is not allowed but got > (position: END_TAG seen ...</metadata>\n>... @13:2) -> [Help 1]

Seems like master has the same issue though, this PR targets at branch-3.0? Upgrading it looks fine.

@maropu .

Thank you, @maropu !

Kubernetes integration test starting
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/35423/

Kubernetes integration test status failure
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/35423/

Merged build finished. Test FAILed.

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

Merged to branch-3.0.

Thank you, @HyukjinKwon !


added binding AWS SES

Description
New binding AWS SES
Issue reference
We strive to have all PR being opened based on an issue, where the problem or feature have been discussed prior to implementation.
Please reference the issue this PR will close: https://github.com/dapr/components-contrib/issues/1019
Checklist
Please make sure you've completed the relevant tasks for this PR, out of the following list:

[x] Code compiles correctly
[x] Created/updated tests
[x] Extended the documentation / Created issue in the https://github.com/dapr/docs/ repo: dapr/docs#1667

@fjvela ping


Test for deadlock

According to https://github.com/greenplum-db/gpdb/pull/9985#issuecomment-618426312

Request for test cancelled.


CLI Debugging instructions

For those that want to debug a stand alone file. Write some simple unit test and debug it. Great to just see how the language behaves if you're new to it.

This definitely is a nice addition, but I would rather have it as a launch config parameter so it can be triggered by F5. I don't really get why you have to set the IDE key - it is completely ignored by the adapter...

TBH I'm not completely sure why it works, but I know it didn't work without the "SET XDEBUG_CONFIG="VSCODE". But having it in the launch config would be the way to go I agree. I just don't have any experience with creating extensions so I didn't think about that (I created a task for myself that runs a batch file with the code).

So for the record, it should work fine if you simply listen for connections and then run your script from the command line (or from a task, if you prefer).


Handle asset price in teaser

Stop using ddo.price in the asset teasers. Find a better way to fetch the price for multiple assets

current state floating around: order of things is kinda outlined in #497, and #540 adds more helpers for subgraph price fetching on top of what we already did in feature/compute


V0.4.1

Merging v0.4.1 to main. The PR has the following features:

Installation package
S3 opt-out option
Test cases
Group by projects

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by: leihchen
The full list of commands accepted by this bot can be found here.

Needs approval from an approver in each of these files:

OWNERS

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

[APPROVALNOTIFIER] This PR is APPROVED
Approval requirements bypassed by manually added approval.
This pull-request has been approved by: leihchen
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment


OATS testing of all combinations

As we did last time with scp/rclone instead of git tags, let's get the following combinations tested with OATS:

no o11y software (monitored app only)
agent enabled, new gem not even present
agent enabled, new gem present but disabled
agent enabled, new gem enabled in mode 1
agent enabled, new gem enabled in mode 2

NOTE for future GA work: these perf tests are only needed for non-dedicated-security environments that are expected to operate at production levels.

As mentioned previously this work is only needed for production environment based scenarios, which we do not currently have short term plans for. Wontfixing this one to help clear up the backlog.


MultiLevel Menu not working on minified sidebar

(Sorry for my bad english)
When you try to open the second level of a menu in the minified sidebar the menu automatically closes.

Already fixed that, will be available with the next update.

In the meantime could we have the snippet to solve this bug?

@antonioaltamura take a look at #492 ticket, will solve your issue.

nop, it doesn't solved.
This is my menu

 Home

 item1

subitem

subsubitem1

Hi, @antonioaltamura Andrei referenced wrong issue is the #490 not the 492.
The fix is this: https://github.com/puikinsh/gentelella/issues/490#issuecomment-310226241

Ah that's right, thank you @William-H-M and @antonioaltamura #490 will solve your issue this time :)

thanks


refactor: do not add the recommended ruleset fallback when there is a config

What/Why/How?
Currently we provide the default fallback with the recommended ruleset if there's no extends explicitly set up in a Redocly config file or there's no config file at all.
We put a deprecation message some time ago, and now it's the highest time to finally change the approach: to extend with the default ruleset ONLY when there's no config provided.
Also it would be great to remove the deprecated suggestions (like apiDefinitions &c.).

[x] change default fallback behaviour
[x] check configs for braking changes

Reference
Testing
Screenshots (optional)
Check yourself

[x] Code is linted
[x] Tested with redoc/reference-docs/workflows
[x] All new/updated code is covered with tests

Security

[x] Security impact of change has been considered
[x] Code follows company security practices and guidelines

Migration guide
The migration guide applies to 1.0.0-beta.113 and newer.
If you have an explicit extends declaration in your Redocly configuration file, you can skip this guide.
extends:
  - recommended

No configuration file
If you do not have a Redocly configuration file, then the prior behavior for running the lint command is as follows:

From the CLI: defaults to recommended configuration.
From Redocly Workflows: defaults to minimal configuration.

Actions to take
Create a Redocly configuration file named redocly.yaml and place it in the root of your repo.
To use the recommended configuration, add this to your Redocly configuration file
extends:
  - recommended

To use the minimal configuration, add this to your Redocly configuration file:
extends:
  - minimal

Configuration file missing extends
If you have a Redocly configuration file, it is missing an explicit extends declaration that selects a default configuration.
The behavior prior to 1.0.0-beta.113 is as follows:

From the CLI:  TODO
From Redocly Workflows:  TODO

Actions to take
To use the recommended configuration, add this to your Redocly configuration file
extends:
  - recommended

To use the minimal configuration, add this to your Redocly configuration file:
extends:
  - minimal


Cluster Manager: Endpoint for creating a table config and schema json, given the input fields

This is to assist the Cluster Manager UI with building the table config, without having to know about the exact json structure

Can you provide more information! because I guess there is an endpoint for creating a schema, and table config will be created automatically with creating the table, correct me if I'm wrong.

Correct. There are endpoints for both. This item was more with respect to the cluster manager. We wanted to avoid the cluster manager having to create a complex json on the UI.
But we have managed completing the UI without making it too complicated. So this item is not relevant anymore.
Are you looking for issues to contribute to? Please ping me or @kishoreg and we can find you something :)


Bootstrap header overlaps the Datepicker

Hi mates.
I am using the "navbar-static-top" header. When the datepicker is unde it, it is not visible:

Any idea?

I found a way to fix it
$.fn.datepicker.defaults.zIndexOffset = 1031