SPARK-16478 graphX (added graph caching in strongly connected components)

What changes were proposed in this pull request?
I added caching in every iteration for sccGraph that is returned in strongly connected components. Without this cache strongly connected components returned graph that needed to be computed from scratch when some intermediary caches didn't existed anymore.
How was this patch tested?
I tested it by running code similar to the one  on databrics. Basically I generated large graph  and computed strongly connected components with changed code, than simply run count on vertices and edges. Count after this update takes few seconds instead 20 minutes.
statement
contribution is my original work and I license the work to the project under the project's open source license.

Can one of the admins verify this patch?

You have introduced a new problem though -- you're not unpersisting the RDDs you cache, and, you're doing a needless count (minor). Of course it's faster to operate on the final RDD at the end: you did the work as you went instead of at the end. It's actually slower overall though. Right? I'm not yet clear what this is solving

Let me introduce some data first:

SCC run computed on randomly generated graph just like one provided by me on databrics notebook takes about 120s
When doing sccGraph.vertices.count on computed graph it takes about 20 min

After caches i proposed scc run is few second longer but count takes few seconds.
In total original scc and count takes about 22 min (depending on graph generated) and with caches it takes about 2 min 10 seconds. With graph on real world data I work with materializing of returned RDD took so much time I never managed to do it (waiting hours without effect).
About introducing problems:

Original SCC doesn't unpersist workGraph and the problem already exists, but I agree  I added another RDDs that are not unpersisted
I tried to unpersist RDDs in original SCC, but it only added computing time (I had to materialize every time reference was going to be lost) but it didn't solve the problem

There is lot's of materialization going on in original SCC implementation (numVetices), and none of it (outside of Pregel) is not unpersisted. When operating on large graph with limited memory and lot's of iterations it causes intermediary (workGraph) RDDs to be removed in LRU fashion. At the same time sccGraph that is returned is not persisted, and when I take some action like count outside of scc after run, there are no RDD's in cache that it depends on.
I tried few different solutions but only the one I'm proposing worked.
Check out code I provided on databrics. It should take more then 20 mins to compute. If instead my implementation would be used it would take about less then 3 mins total. I can provide runnable databrics notebook with both solutions.

You are right, the code already had a .cache() call without .unpersist(). It eventually gets cleaned up, but not good form and probably didn't actually do much either. Except perhaps break the lineage.
The problem with cache and unpersist is that if nothing materializes the RDD between the two calls, it does nothing. Yes, I know that's why you forced materialization with an extra call to count.
The thing is, caching by itself can't make the underlying computation faster and none of the RDDs that are now cached are used a second time (right?). I think something else is at work here.
One guess is that the current calls to cache(), which don't seem quite right, are the problem. It computes the whole lineage at once and attempts to persist all RDDs at once, competing with others and evicting them and generally wasting time because the RDDs aren't reused at all (I think). If that's true then actually removing all the caching should also help a lot. If not, then, that's not it.
(PS sccGraphCountVertices here is superfluous, you can omit it)

Whole computation is iterative and depends on previous state of sccWorkGraph. It iterates on sccWorkGraph.numVertices which is action under the hood and without caching whole algorithm would be extremely slow, because with every iteration sccWorkGraph  would be computed all over again. Before I came up with this solution I tried to unpersist intermediary sccWorkGraphs, and colleague of mine tried to remove caches. Non of it worked, because of the reasons mentioned above.
Initially i thought that caching should be removed but there are two reasons that is not the case:

Scc algorithm requires knowledge of data (numVertices) that requires action in spark
Every iteration is depended on previous state of graph

What is more pregel itself is implemented with caching and immediate materialization.
If I cannot remove caches (I think I can't) additional ones have to be added. I tested few other solutions and that is the one that turned to be the best in terms of performance. I hope to find an optimal solution.

I don't think that's true. Each iteration makes a new RDD that depends on the previous iteration's RDD. The execution is actually just a long chain of RDDs if you 'unrolled' it. That's why I think caching actually doesn't do anything here, since no RDD is used more than once. It's also possible I've missed something just reading the code but not seeing it yet.
Still if you're saying it doesn't work well with no caching, then there must be some subtle reason the intermediate RDDs do benefit from caching. I'd probably appeal to the author of this code to weigh in in that case.

That's how i see it:
First you have workGraph defined and marked to cache:
var sccWorkGraph = graph.mapVertices { case (vid, _) => (vid, false) }.cache()
then it is materialized
var numVertices = sccWorkGraph.numVertices
It is also materialized every iteration of both loops:
while (sccWorkGraph.numVertices > 0 && iter < numIter) {
and
while (sccWorkGraph.numVertices < numVertices)
Now looking inside the loop:
sccWorkGraph is defined upon it's previous "version"
sccWorkGraph = sccWorkGraph.outerJoinVertices(sccWorkGraph.outDegrees) {           (vid, data, degreeOpt) => if (degreeOpt.isDefined) data else (vid, true)         }.outerJoinVertices(sccWorkGraph.inDegrees) {           (vid, data, degreeOpt) => if (degreeOpt.isDefined) data else (vid, true)         }.cache()
Let's assume we don't have cache(). We end up here
while (sccWorkGraph.numVertices < numVertices)
numVertices is graph.vertices.count()
With first iteration sccWorkGraph is just computed and we go on.
With second iteration we have to compute sccWorkGraph that was created in first iteration and then copmute second that is based on the first one and so on.
It looks to me like that (in brackets there is iteration from which RDD is):
0: sccWorkGraph[0].vertices.count()
1: sccWorkGraph[0]->sccWorkgraph[1].vertices.count()
2: sccWorkGraph[0]->sccWorkGraph[1]->sccWorkGraph[2].vertices.count()
3:...
If I understand it correctly with each iteration and no cache, count forces to compute whole lineage whereas if we have previous sccWorkgraph cached, only last few stages have to be computed.
With caches it looks like this
0: sccWorkGraph[0].cache().vertices.count()
1: sccWorkGraph[0]->sccWorkgraph[1].cache().vertices.count()
2: sccWorkGraph[0]->sccWorkGraph[1]->sccWorkGraph[2].cache().vertices.count()
The same story goes for sccGraph that depends on previous' iteration sccGraph that depends on finalVertices that depends on sccWorkGraph. If I had infinite memory I would have all intermediary sccWorkGraph RDDs cached and materializing sccGraph would be quite quick, but since I don't it is extremely slow.
The problem is not seen inside run() method directly because sccGraph is not materialized inside.
I hope that clarifies something. Without some kind of fix current version of strongly connected components is sufficient only for small graphs relative to available memory.

Oh good point, it does get materialized after cache() already because numVertices will call count. That does mean there's more than one call to evaluate the RDD, and that quite changes things. I see why sccWorkGraph works that way.
I'm still a little hazy on sccGraph because the same isn't true of it in the current code. I agree that the dependency on finalVertices is relevant. As you say, the underlying sccWorkGraphs are cached. I think there does end up being a problem because it still means all of the lineage of cached sccWorkGraph evaluate at once and try to cache.
I think your change is probably the right thing, then. What we should really do is add unpersist calls in the right places for sccGraph and sccWorkGraph, which is tricky. That would fully optimize this.
(No my point was that the variable sccGraphCountVertices itself doesn't do anything. You don't need to store this value. .count does something of course.)

Great we're on the same page finally. I can try to add unpersists however it is indeed tricky and at first try I wasn't able to unpersist every RDD and at the return had few RDD still in cache.

Yes, elsewhere in graphx I remember trying this and it was tricky because you had to hold a reference to the old RDD, evaluate and persist the next one that depends on it, and then unpersist the old RDD.

I added unpersists to additionally created caches and checked performance. scc.run is slightly longer, but returned graph is cached (both vertices and edges).
To fully optimize it and remove all unused graphs I'd have to carefully check everything on large graph since sometimes it's easy to remove cache to early and in this case effect will be seen after some materialization on graph outside scc.
I hope to get it accepted in current state (that is much more performant at least for larger graphs).
Later on I'll try to further optimize it(it is tricky to do it elegantly because sccWorkGraph gets overwritten twice before it is materialized, and one loop get's executed at least once).

Is it now not necessary to cache the 'work graph' as well?

'work graph' is already cached and it is indeed necessary.
To summarize - do you propose to replace sccGraph.triplets.take(1) with sccGraph.vertices.count() and sccGraph.edges.count()?
Do you agree to leave two vars for previous instance of sccGraph to distinguish where the caching took place?

Ack right I mean does it need to be explicitly materialized? I suppose the new code also has the effect of materializing the last work RDD, but then I imagine we need to unpersist it too.

I don't know if I understand you correctly. Last work RDD is explicitly materialized because iteration's depend on number of vertices left in graph.
My aim with latest solution was to leave algorithm with persisted graph at the and and not to add any additional unpersisted unwanted rdds. I would be nice to have everything cleaned, but since it is tricky I'd like to work on it some time later.

I was thinking it should be perfectly possible to unpersist scWorkGraph RDDs that are persisted along the way in the same way? it should be the same pattern. It's possible to leave the final result persisted, yes.

I agree it is possible however quite hard in this case. You loose reference to workGraph few times before materialization occurs, and then few graphs get materialized at the same time. Testing is also troublesome, because you have to actually check if something didn't get unpersisted too early and that requires big graph (and long running program) or sophisticated code to check it.

I removed counts at the end of outside loop. I added it before because without it I still encountered problems, but I guess something else must have been wrong. I reasoned that despite the fact that sccGraph is persisted it can be evicted before it is used again. It was quite strange, because it doesn't happen much between sccGraph reuse and this additional counts. I tested it once again and it works with current version.
I added change that saves some computing time in some cases - if while loop leaves because iter>maxIter Pregels are useless.

I don't think you can reason about whether something's evicted as it's up to the runtime. Here the RDD has to be materialized before the method returns because its predecessors will have been unpersisted, but that is already done in the loop.
What's the reason the final loop iteration doesn't need to compute this? it wasn't obvious to me; a comment would be useful for future readers.

Added comment explaining if.

Is it sufficient right now or should I do something more?

Jenkins retest this please

LGTM, will leave open for a bit for comments

Test build #62464 has started for PR 14137 at commit 84a8363.

Test build #62464 has finished for PR 14137 at commit 84a8363.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

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


Services UI grab bag

Feature Request
Desired behaviour

[x] Refresh individual service
[x] Sync organization services
[x] Add back plus button
[x] Get rid of shared services
[x] Modal for register services
[x] Add sync next to manage github
[x] Services description version
[x] Change Register service to managed on GitHub
[x] Change refresh button (single service) to sync
[x] Load entry-specific action buttons at same time (Publish, View Public, Refresh, etc)
[x] Hide share with me
[ ] ~Change to GitHub icon for desktop, dropdown for mobile~
[ ] Investigate validation per file
[ ] ~Need a better message for missing version description~
[ ] Weird tooltip when there's no services "Requires source control token" overlaps with the button tooltips

Possibly going to split some of these out
┆Issue is synchronized with this Jira Story
┆Issue Type: Story
┆Fix Versions: Dockstore 1.7
┆Sprint: Seabright Sprint 15 Outrigger
┆Issue Number: DOCK-828
┆Epic: Dockstore  My Services

Sync button is added, but non-functional. However, Charles ticket to hook it up to the UI will have it's own review so I think this can be considered done.
Issues that are checkmarked working on staging API - 1.7.0-beta.1
UI - 2.4.0-beta.1.
Created another ticket for the other two #2707


External Deployments Role Policies

Adds policies to allow deploying to sagemaker within the same AWS account

@miguelhar This is working in my testing, could you give me some initial feedback on the changes?
Of note I have 3 outstanding issues I need to address:

Add a flag/option to enable/disable granting the policies to enable deployments in the AWS account
Add another flag/option to enable/disable granting the blanket assume role permission for other AWS accounts/role
Fix whatever is broken with the upgrade test

Reworked in favor of the approach in https://github.com/dominodatalab/terraform-aws-eks/pull/272
closing this without merging


Display stats by authority in the web and CLI

For services external to the mesh, we collect stats by authority in prometheus, but we don't display them anywhere. Add these to the web and CLI so that we have a more comprehensive view of traffic.

Some thoughts:

As a first implementation, I wouldn't try to distinguish between internal and external names. Let's just make this a way to query/view traffic by the authority (so, for instance, authority/foo.bar.svc.cluster.local and svc/foo in the bar namespace will have identical stats).

We shouldn't worry about normalization yet.  This means that foo and foo.bar.svc.cluster.local and foo:80 may all be different values of authority that represent the same logical endpoint. The proxy should (eventually) handle this normalization.

Here are some example conduit stat commands demonstrating how I think we might use authority:
$ conduit stat authority web-svc.emojivoto:80 -n emojivoto
NAME                    MESHED   SUCCESS      RPS      LATENCY_P50   LATENCY_P95   LATENCY_P99   SECURED
web-svc.emojivoto:80    2/2      100.00%      1.0rps           5ms          10ms          10ms        0%

$ conduit stat deploy/web -n emojivoto --to-authority voting-svc.emojivoto:8080
NAME   MESHED   SUCCESS      RPS   LATENCY_P50   LATENCY_P95   LATENCY_P99   SECURED
web       2/2    86.07%   2.0rps           5ms          10ms          10ms        0%

$ conduit stat authority -n emojivoto --from deploy/web
NAME                         MESHED   SUCCESS      RPS   LATENCY_P50   LATENCY_P95   LATENCY_P99   SECURED
voting-svc.emojivoto:8080       2/2   100.00%   2.1rps           5ms          10ms          10ms        0%
emoji-svc.emojivoto:8080        2/2   100.00%   2.1rps           5ms          10ms          10ms        0%

API proto changes needed to add Authority to the stat request and to the --to filters:
message Authority {
  // The authority that receives traffic
  // Can only receive traffic, not send it.
  string name = 1;
}

message StatSummaryRequest {
  oneof selector {
    ResourceSelection resource = 1;
    Authority authority = 7;
  }

  string time_window = 2;

  oneof outbound {
    Empty none = 3;
    Resource to_resource   = 4;
    Resource from_resource = 5;
    Authority to_authority = 6;
  }
}

@rmars What do you think about treating "authority" as a special, virtual resource type, rather than handle it as a separate API entity?  Are there advantages to modelling it separately?

I was just thinking about that myself! The initial concern I had was that we designed Resource to be specific to a k8s resource, and I was worried about shoving a non-k8s-resource into that same model, since you can have authorities not in k8s.
An authority could just be a resource of type "authority" though.

Unless someone (hi @grampelberg) tells me this is a terrible idea, i'm partial to carving out some additional reserved resource types.

This would be my proposal for the Resource documentation if so:
message Resource {
  // The namespace the resource is in.
  //
  // If empty, indicates all namespaces should be considered.
  string namespace = 1;

  // The type of resource.
  // This can be
  // - a Kubernetes resource, e.g. pod, deployment, service, ...
  // - a non-Kubernetes resource such as an Authority
  //
  // If `all` refers, to all Kubernetes resource types only.
  string type = 2;

  // An optional resource name.
  string name = 3;
}

@rmars i like it!
I might phrase it like this:

  // The type of resource.
  //
  // This can be:
  // - "all" -- includes ALL resource types
  // - "authority" -- a special resource type derived from request `:authority` values
  // - Otherwise, the resource type may be any Kubernetes resource (e.g. "namespace", "deployment").
  string type = 2;

It would be my preference to include authorities with all

conduit stat --to authority/www.google.com:80

That gets me excited.


Add docs for Microsoft.OData.Extensions.Migration

Docs Build status updates of commit a7a35be:
:warning: Validation status: warnings

File
Status
Preview URL
Details

Odata-docs/extensions/migration.md
:warning:Warning
View
Details

Odata-docs/extensions/Images/FormatterFlow.png
:white_check_mark:Succeeded
View

Odata-docs/extensions/Images/RequestBody.PNG
:white_check_mark:Succeeded
View

Odata-docs/extensions/Images/ResponseBody.PNG
:white_check_mark:Succeeded
View

Odata-docs/extensions/migration.md

[Warning] Missing attribute: author. Add the current author's GitHub ID.
[Warning] Missing attribute: title. Add a title string to show in search engine results.
Line 5: [Suggestion] Multiple H1s are not allowed. You can only have one top-level heading. NOTE: This Suggestion will become a Warning on 11/25/2019.
Line 111: [Suggestion] Multiple H1s are not allowed. You can only have one top-level heading. NOTE: This Suggestion will become a Warning on 11/25/2019.
Line 254: [Suggestion] Multiple H1s are not allowed. You can only have one top-level heading. NOTE: This Suggestion will become a Warning on 11/25/2019.
Line 259: [Suggestion] Multiple H1s are not allowed. You can only have one top-level heading. NOTE: This Suggestion will become a Warning on 11/25/2019.

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

@xuzhg , can this be merged?

@madansr7 The migration has not released yet. Maybe postpone it.

Docs Build status updates of commit 3c3fcdc:
:warning: Validation status: warnings

File
Status
Preview URL
Details

Odata-docs/extensions/migration.md
:warning:Warning
View
Details

Odata-docs/extensions/Images/FormatterFlow.png
:white_check_mark:Succeeded
View

Odata-docs/extensions/Images/RequestBody.PNG
:white_check_mark:Succeeded
View

Odata-docs/extensions/Images/ResponseBody.PNG
:white_check_mark:Succeeded
View

Odata-docs/extensions/migration.md

[Warning] Missing attribute: author. Add the current author's GitHub ID.
[Warning] Missing attribute: title. Add a title string to show in search engine results.
Line 5: [Suggestion] Multiple H1s are not allowed. You can only have one top-level heading. NOTE: This Suggestion will become a Warning on 02/03/2020.
Line 111: [Suggestion] Multiple H1s are not allowed. You can only have one top-level heading. NOTE: This Suggestion will become a Warning on 02/03/2020.
Line 254: [Suggestion] Multiple H1s are not allowed. You can only have one top-level heading. NOTE: This Suggestion will become a Warning on 02/03/2020.
Line 259: [Suggestion] Multiple H1s are not allowed. You can only have one top-level heading. NOTE: This Suggestion will become a Warning on 02/03/2020.

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

Docs Build status updates of commit f273d14:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

Odata-docs/TOC.yml
:white_check_mark:Succeeded
View

Odata-docs/extensions/Images/FormatterFlow.png
:white_check_mark:Succeeded
View

Odata-docs/extensions/Images/RequestBody.PNG
:white_check_mark:Succeeded
View

Odata-docs/extensions/Images/ResponseBody.PNG
:white_check_mark:Succeeded
View

Odata-docs/extensions/migration.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

Docs Build status updates of commit f3c84e5:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

Odata-docs/TOC.yml
:white_check_mark:Succeeded
View

Odata-docs/extensions/Images/FormatterFlow.png
:white_check_mark:Succeeded
View

Odata-docs/extensions/Images/RequestBody.PNG
:white_check_mark:Succeeded
View

Odata-docs/extensions/Images/ResponseBody.PNG
:white_check_mark:Succeeded
View

Odata-docs/extensions/migration.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

Docs Build status updates of commit a291b01:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

Odata-docs/TOC.yml
:white_check_mark:Succeeded
View

Odata-docs/extensions/Images/FormatterFlow.png
:white_check_mark:Succeeded
View

Odata-docs/extensions/Images/RequestBody.PNG
:white_check_mark:Succeeded
View

Odata-docs/extensions/Images/ResponseBody.PNG
:white_check_mark:Succeeded
View

Odata-docs/extensions/migration.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

Docs Build status updates of commit 31fc115:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

Odata-docs/TOC.yml
:white_check_mark:Succeeded
View

Odata-docs/extensions/Images/FormatterFlow.png
:white_check_mark:Succeeded
View

Odata-docs/extensions/Images/RequestBody.PNG
:white_check_mark:Succeeded
View

Odata-docs/extensions/Images/ResponseBody.PNG
:white_check_mark:Succeeded
View

Odata-docs/extensions/migration.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

Docs Build status updates of commit 21efdd5:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

Odata-docs/TOC.yml
:white_check_mark:Succeeded
View

Odata-docs/extensions/Images/FormatterFlow.png
:white_check_mark:Succeeded
View

Odata-docs/extensions/Images/RequestBody.PNG
:white_check_mark:Succeeded
View

Odata-docs/extensions/Images/ResponseBody.PNG
:white_check_mark:Succeeded
View

Odata-docs/extensions/migration.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


Update workflow-syntax-for-github-actions.md

Corrected the faulty inline comments describing the behaviour
Why:
Closes #8807
What's being changed:

From:
on:
  push:
    # Sequence of patterns matched against refs/heads
    branches-ignore:
      # Push events to branches matching refs/heads/mona/octocat
      - 'mona/octocat'
      # Push events to branches matching refs/heads/releases/beta/3-alpha
      - 'releases/**-alpha'
    # Sequence of patterns matched against refs/tags
    tags-ignore:
      - v1.*           # Push events to tags v1.0, v1.1, and v1.9

To:
on:
  push:
    # Sequence of patterns matched against refs/heads
    branches-ignore:
      # Do not push events to branches matching refs/heads/mona/octocat
      - 'mona/octocat'
      # Do not push events to branches matching refs/heads/releases/beta/3-alpha
      - 'releases/**-alpha'
    # Sequence of patterns matched against refs/tags
    tags-ignore:
      - v1.*           # Do not push events to tags v1.0, v1.1, and v1.9

Check off the following:

[x] I have reviewed my changes in staging (look for the latest deployment event in your pull request's timeline, then click View deployment).
[x] For content changes, I have completed the self-review checklist.

Writer impact (This section is for GitHub staff members only):

[ ] This pull request impacts the contribution experience

[ ] I have added the 'writer impact' label
[ ] I have added a description and/or a video demo of the changes below (e.g. a "before and after video")

@theriverman
Thanks so much for opening a PR! I'll get this triaged for review :zap:


Add badge for coverage

@choldgraf you might want to enable codecov and then this should just work

how do I enable it? I've got a CODECOV_TOKEN...do I need to add it to the circle build?

you need to go to codecov website to enable it: https://codecov.io/
and after that nothing to do. I can make a dummy push to make sure it's working.

I'll merge this and let's spot-check it if it doesn't seem to be working :-)


ui polish for release

https://github.com/rancher/dashboard/issues/1907

This was from an errant rule elsewhere that made the grid 4 columns wide instead of two that I've since removed..


how to get bootstrap gateway routes list

how to get dynamic gateway  routes from bootstrap file and nacos config file?
i tried to get routes by the spring boot enviroment variable,but it works not very well ,in this case ,i do not know how many routes .when i recurrence it .it blocks.. if  any surggests useful?
thanks

define yourself RouteDefinitionRepository  maybe helpful.

Are you asking how to get routes from service discovery? If so, set spring.cloud.gateway.discovery.locator.enabled=true

If you would like us to look at this issue, please provide the requested information. If the information is not provided within the next 7 days this issue will be closed.

Closing due to lack of requested feedback. If you would like us to look at this issue, please provide the requested information and we will re-open the issue.


Tabs interface needs better way to get to panel content

When used with NVDA it is difficult to get from the tabs on https://design-system.service.gov.uk/components/tabs/ to the corresponding panel. Both left / right as well as up / down arrows traverse the tabs in the tablist. I suggest to consider implementing arrow down as a shortcut to move focus to the right panel content. See https://inclusive-components.design/tabbed-interfaces/ , section "A problem reading panels".

@detlevhfisher: hi, thank for adding your suggestions, we took that article into consideration while building the component. have you done any user research around this?

I just tried it using NVDA and Firefox and noticed that left/right arrow did the same as top/down arrow, so that latter is not used (as I believe recommended by Heydon) to move the focus to the panel. Leaving forms mode and trying reading mode to progress to the panel often lands in the wrong one because tab and its panel are not adjacent in the source code, I guess.
I intend o include the gov.uk example in the user tests I am currently conducting and will report back on issues, if there are any.

@detlevhfischer: Both left/right and up/down arrows currently have the same effect of switching between tabs and that is mainly because the non-sighted users don't know how the tabs are being positioned (one next to each other or one under each other - horizontal/vertical tabs).
Feedback from research would be extremely valuable for us and would help us shape the component, thank you!

closing this, as I've reopened the issue in the appropriate repository


Add browserSync key to config.json

As described in #1915 I've added a browserSync key to the resource/assets/config.json where any BrowserSync related options can be set.

Fixed CI bugs in PR #1918.


The attributes doesn't when I change a dataset

Reproduce the bug:
Open the tool
Select Cancer dataset
Move an attribute to not using
Load file
Open followers.csv
The attributes list is still the one from the cancer dataset

Fixed!


[Question] How to enable authentication

Is it supported to enable the authentication?
http://www.asp.net/web-api/overview/security/individual-accounts-in-web-api

Hi @wocar, yes the generated client still uses the standard HttpClient that comes out of the box from Asp.net WebApi, with which it is possible to implement the needed security like the Authorization header for example. You can access it by using the HttpClient property from the derived ClientBase.

Hi @wocar, yes the generated client still uses the standard HttpClient that comes out of the box from Asp.net WebApi, with which it is possible to implement the needed security like the Authorization header for example. You can access it by using the HttpClient property from the derived ClientBase.


Make sure TSI tables are not present in fonts

When a font is hinted with VTT, it adds TSI0, TSI1, TSI2, TSI3 tables. when you compile the font in VTT, these tables are removed. We do not want to ship fonts which have these tables.

done


Update timeseries storage defaults mentioned in operational FAQs

Closes #6328
The default value for timeseries.storage.resolution_10s.ttl is 240h (10 days), not 720h (30 days) as mentioned in docs.
Updated for v21.1, v20.2, and v20.1

This change is

cc @lnhsingh another fixit item

Online preview: http://cockroach-docs-review.s3-website-us-east-1.amazonaws.com/cd198bf610024f6ef6b202f0724a87e73feaac52/
Edited pages:

v20.1/operational-faqs.md
v20.1/show-grants.md
v20.2/operational-faqs.md
v20.2/show-grants.md
v21.1/operational-faqs.md
v21.1/show-grants.md


Dedup completions

@greg1232 I don't seem to have permissions to merge this, but here is the PR for deduping completions!


repo error

im getting this error on hacs:
<Integration albertgranya/Home-Assistant-Dell-Server-Frontend> Repository structure for main is not compliant
how solve it ?
Thanks

Hacs???,
this repo can be installed without hacs,
simple, put files on HA, or merge with yours,
when you are using hacs, to install it?


Incorrect number of rendered components when theme set to light

In client-bundle-example, the number of rendered components when theme is set to dark is 2.

When theme is set to light, the number rendered components is 1.

This seems to have resolve itself.

The problem is async defer in the script tag.


Elemental CAPI upgrades

This issue is about streamlining a workflow for CAPI resources upgrades using the Elemental infrastructure provider.
This is about upgrading the Kubernetes version on the Elemental Hosts, not about upgrades of the Elemental OS itself. This can be managed by other means and it's not strictly related to CAPI.
Documentation: https://cluster-api.sigs.k8s.io/tasks/upgrading-clusters.html
CAPI requires to create new MachineTemplates to trigger a rolling upgrade that will delete the old Machines and create new ones from the new template. From Elemental side this workflow heavily depends on a smooth Elemental Reset workflow.
Take in consideration that a Kubernetes version upgrade may require an update to the shipped components, for example a newer version of kubeadm, kubelet, or rke2, or k3s.
Considering the current bundle proposal (#990), we can expect the end user to create a ElementalMachineTemplate containing an updated (and matching the desired kubernetes version) bundle definition, so it shouldn't be a problem.
Some open questions I have are:

Can we exploit the Reset functionality for upgrades, or do we need to create a new and "softer" workflow? The only drawback of Reset is that it may involve formatting partitions, or even shredding data. It may be a pretty long operation and therefore it may be overkill for a Kubernetes version upgrade.
What exactly is the rollout workflow? I would expect the "old" ElementalMachine to be deleted first. Reconciling the deletion we may decide to trigger a Reset on the underlying ElementalHost. Once the ElementalMachine is actually deleted, I expect a new one to be created using the newly referenced ElementalMachineTemplate, then the assumption is that the previous host would finish reset, register a new ElementalHost and that would be bound to the new ElementalMachine as usual. Still the entire procedure should be tested and proven.

Linking parent epic: #968

Since the bundle proposal (#990) is off due to the k3s and rke2 providers installing their own binaries, this issue could be closed as well.
A new issue can be opened to support CAPI in place upgrades.


[REQUEST] Way to insert group policies into the ISO

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
Having to manually add group policies after installing is kind of a pain. I'm not sure there is a way to do this currently but it'd be nice to have it. (A way to insert group policies directly into the ISO that is)
Describe the solution you'd like
A clear and concise description of what you want to happen.
Something like the registry templates dir.

Group Policies cannot be added in an offline scenario unless you were to directly add the policy changes to the offline Local Machine/Current User registry hives directly, which is not a recommended way to go about keeping policy changes across devices because the GPO MMC plugin will not reflect those changes.
A better option would be to create a back-up of the Group Policy you wish to transfer (or use across devices), add them to 'Setup' and have the SetupComplete.cmd script copy the policies after the OOBE setup pass has completed. This can be done using Microsoft's LGPO.exe or Robocopy.

I see, thanks!


⚠ Minecraft has degraded performance

In c02b300, Minecraft (https://www.minecraft.net) experienced degraded performance:

HTTP code: 200
Response time: 1389 ms

Resolved: Minecraft performance has improved in 9de4ea8.


[Issue]: WSL not found after install

Describe the issue
I opened the project in VS Code, and it prompted me to reopen the folder in a dev container. After I clicked "Reopen in Container", it notified me that the container requires Docker and offered to install Docker in WSL. After I clicked "Install", it displayed an error message stating that WSL was not found after the installation.
I also tried to install the WSL extension manually. However, after closing VS Code and reopening the project, the same error persisted.
Steps to reproduce
1.Open Vs code.
2.Click "Reopen in Container".
3.Click "Install".
Screenshots and logs

Additional Information
No response

@emooreatx @evandavid1 anyone of you could you help take a look at this? Thank you!

Sure @qingyun-wu
Hi @highyield3011
can you please paste higher rez screenshots, i can't see your command line args.  From what you've reported, VS code cannote locate WSL on your system.
Did you already install WSL on your machine before running the Autogen project operations above?  If not, this might be the issue.  I believe installing the WSL extension in VS Code does not install WSL on your system itself.
Run the following command to confirm whether WSL is installed:
open powershell:
wsl --list --verbose
this should indicate if installed.
If it is not, below are the install instructions:  (it's very straightforward, a single command)
https://learn.microsoft.com/en-us/windows/wsl/install
Best,
Evan

Thanks @qingyun-wu for the coordination.
Hi @evandavid1 , It's my first time to touch WSL on windows so I'm not sure if it has been installed. Below is the snapshot of powershell after running the command:

Hi @highyield3011
Thanks for providing your screenshot.  It looks like WSL is not installed on your system.  The PowerShell output you shared only shows the help text for wsl.exe.  When WSL is installed, running the command wsl --list --verbose should produce output similar to this:
NAME            STATE           VERSION
* Ubuntu-20.04    Running         2

To get started, you’ll need to install WSL by following the official Microsoft installation guide:
Install WSL on Windows
Begin by opening PowerShell as Administrator and running the command:
wsl --install
After completing the initial installation, follow the remaining steps in the guide and verify that WSL 2 is running properly.
Once you’ve successfully installed WSL and confirmed installation, you’ll also need Docker Desktop for Windows if it isn’t already installed. You can find Docker's installation guide here:
Install Docker Desktop on Windows
Please go through the installation steps and let us know if you encounter any specific issues.
If you do run into further issues, it might be helpful to provide more details about the specific AutoGen project you're attempting to run.
Best regards,
Evan

Hi @highyield3011 Wanted to check in with you and see how this is going.  I'd like to go ahead and close the issue, since it doesn't appear to be an AutoGen specific problem.  If you believe otherwise, please let me know.
Thanks,
Evan

@qingyun-wu @evandavid1 Hi Qingyun and Evan, thanks a lot for your kind help. Please close this issue. I need to investigate the environment setup myself first.


added response getter for maskedPan and authentication status

Coverage remained the same at 100.0% when pulling<PHONE_NUMBER>f1b6fda37e1517a4da814ff2f601da on moreResponseGetters into 1e4ac415bd0412ca4be1710426621f1a3efbee16 on master.


revert: not using parallel --workdir (#328)

This actually overrides TMPDIR in the called bash functions.

Coverage: 84.335%. Remained the same when pulling 77c842ff2b0cb76756e944620772477c3afdda76 on revert-parallel-workdir into 5a4c39b73f1e89814ba82b0293cf8c5349faa117 on main.


Status.byIndex and StatusEntry

Getting this started, but something weird is going on with the deltas.
1) StatusList gets status with deltas:
     AssertionError: "���\u000f\u0013\u0017" == "my-new-file-that-shouldnt-exist.file"
      at /Users/steve/github/nodegit/test/tests/status_list.js:46:18
      at /Users/steve/github/nodegit/node_modules/nodegit-promise/lib/core.js:64:15
      at flush (/Users/steve/github/nodegit/node_modules/nodegit-promise/node_modules/asap/asap.js:27:13)
      at process._tickCallback (node.js:419:13)

Ok, I'm happy with this current implementation. StatusEntries get more context than the statuses we get from Status.forEach. With the latter, we only get a status bit and a path. With the StatusEntry we get not only the status bit, but the deltas from head-to-index and index-to-workdir, including old and new file info. This makes identifying renames possible, along with lots of other stuff.
I was thinking we might want to add a convenience method like Repository.getExtendedStatuses to grab this info. Does that sound good?

Sound great, do it up.
On Mon, Mar 2, 2015, 7:24 AM Steve Smith<EMAIL_ADDRESS>wrote:

Ok, I'm happy with this current implementation. StatusEntries get more
context than the statuses we get from Status.forEach. With the latter, we
only get a status bit and a path. With the StatusEntry we get not only the
status bit, but the deltas from head-to-index and index-to-workdir,
including old and new file info. This makes identifying renames possible,
along with lots of other stuff.
I was thinking we might want to add a convenience method like
Repository.getExtendedStatuses to grab this info. Does that sound good?
—
Reply to this email directly or view it on GitHub
https://github.com/nodegit/nodegit/pull/448#issuecomment-76719541.

Convenience method added as Repository.getStatusExt. I'll wait for a plus-one before merging.

:+1:


add a different home page

I feel there must be home page (of course different from the main component which is already there).
So we make a home page describing about Manthan and what its all about. We keep it static and make it attractive. And when someone logs in he/she can see the main one which I think is kind of dashboard or personal area for each user.
Please allow me to work on this and help make Manthan better by assigning this issue. I would love to contribute to it.

@mis-coder Please proceed and add screenshots of UI changes in the pull request.

@mis-coder Please proceed and add screenshots of UI changes in the pull request.

Sure!

@aavishkarmishra  Please check discord! I have sent the prototype.


loading a number of nodes too low

Hi, I use your network component in my project. but I have a trouble when  the nodes more than 7000。I will draw the graph very long  and the whole page is very carlton. How to optimize the interface ？

Hi, this question is more related to Vis itself rather than this wrapper. Please open an issue/question on Vis repository.
Regards,

ok . thanks


Models with blend shape are not rendered correctly on Android

Godot version: Godot Engine v3.2.1.stable

OS/device including version: OnePlus G1910 GPU:Adreno(TM) 640 GLES3

Issue description:
I created a test scene

head model with about 50+ blend shapes

cube model with 2 simple blend shapes

On my PC(OpenGL ES 3.0 Renderer: Intel(R) UHD Graphics 620）
It looks like this

But on my android phone ,it looks like this

I can't capture any useful logs on my phone
And this is my phone info in OpenGl ES CapsViewer
http://opengles.gpuinfo.org/displayreport.php?id=4388

Steps to reproduce:

open project
export android apk
run

I tested on 3 different phones, and each phone had rendering issues.
Minimal reproduction project:
I compressed with 7z and changed the suffix to zip
3D_Android_model.zip

Note that the current GLES3 renderer is expected to have trouble on most Android devices.

I had the same problem with my XIAOMI 8 phone. It seems that godot-3.2.1 doesn‘t support the FBX model with blender shape well on the android side but not on the Windows side. So who can tell me what to do next...

Note that the current GLES3 renderer is expected to have trouble on most Android devices.

If I want to modify the engine source code, are there any suggestions?

@xhk1992 There really isn't anything simple that can be done about it.  Unfortunately, mobile devices often have bugs in their GLES3 drivers.

@xhk1992 There really isn't anything simple that can be done about it.  Unfortunately, mobile devices often have bugs in their GLES3 drivers.
The GLES2 renderer doesn't support blend shapes: #37804

Okay, I still want to try it myself. And I hope this problem will be solved in version 4.0. thank you very much!

I can confirm something like in desktop version too:

The "?" crate is a base scene
The UpArrow crate is inherited from this crate
so they both has blend shapes, when its activated this bug happens
OS: Ubuntu 20.04
Godot: Stable 3.2 stable

I Know Opengl3.0 blendshape using transformfeedback
Some android sample using
glGenTransformFeedbacks
glBindTransformFeedback
but 3.4 godotengine glad.h doesn't have that function and not using
When I created glad.c including gles3.0, the function existed.
https://glad.dav1d.de/generated/tmp42xg8frgglad/src/glad.c
How about using glGenTransformFeedbacks?

Some Android EGL3.0 Sample using
glGenTransformFeedbacks
glBindTransformFeedback
but godot 3.4 doesn't have functions in glad and doesn't use it
how about using it


[Stable7.4] Cherry pick autocomplete field to arcade stable

I want this for a few extensions... Most notably, this will make arcade-sprite-data way easier to use! See https://github.com/microsoft/pxt/pull/8861 for a demonstration GIF

@pelikhan here's it being added for datalogger: https://github.com/microsoft/pxt-microbit/pull/4688

I am good with the port. However lets wait till we test end to end in micro:bit and arcade beta before shipping this.


Improve error message for unsupported kubeconfig encoding

Currently when a kubeconfig file is loaded that has a unsupported encoding, e.g. Windows Powershell's "Out-File" default UTF-16 LE BOM, Headlamp will return the very vague error message "Load a valid kubeconfig".
This makes it hard to understand what's wrong with the file given that the syntax of the file itself will be perfectly fine.
Headlamp should either support different encodings or at very least report back that an encoding error occurred.
Steps to reproduce:

Take a working kubeconfig my-working-kubeconfig.yaml and load it in Headlamp making sure it is accepted as valid kubeconfig
Run the Powershell snippet Get-Content my-working-kubeconfig.yaml -Raw | Out-File my-failing-kubeconfig.yaml
Try to load my-failing-kubeconfig.yaml

P.S.: I noticed that other encoding formats do get loaded but then the connection to the cluster will fail. The headlamp dev console shows an "non whitespace character" error for the kubeconfig json passed to the headlamp server.
So there seem to be multiple issues with the encoding, not just the one I explicitly pointed out above with UTF-16- LE BOM. Might be worth re-designing the hole kubeconfig loading processes: if the file is loaded it should be possible to use it. If it's unable to be loaded a clear error message what's wrong with the file should be returned to the user.


Issue with resource tag

Error: Could not retrieve catalog from remote server: Error 500 on SERVER: Server Error: Evaluation Error: Error while evaluating a Resource Statement, Invalid tag 'mcollective_agen
t_shell/job_server' at /etc/puppetlabs/code/environments/services/modules/mcollective/manifests/module_plugin.pp:130 at /etc/puppetlabs/code/environments/services/modules/mcollectiv
e_agent_shell/manifests/init.pp:24 on node test01

closing old issue that has a fix merged


select and dropdown not work if just import correspond css file

i wanna just import a dropdown component  in my react project, but it not work,
if  just  import 'semantic-ui-css/components/dropdown.css'
it would not work like this (click it and the item list would  not show)

if import 'semantic-ui-css/semantic.css'

it worked now , but the other style would been changed ,i don't like this,
i tried to import some compoents ,but also not work

so , how can fix it ? thanks

Please use SO questions. Dropdown also requires CSS from Transition.

i have soluted it :)
the dropdown component need three css file : dropdown.css transition.css and reset.css


Doesn't seem to work on Iphone X

HI, We implemented vh-check in our webapp and tried it on iphone 8 and iphone X.  It seems to work on iphone8 Safari but on iphoneX the height doesnt seem to adjust.   I am not very familiar with the js used here but the fact that we are seeing it work on iphone8 tells me that we have implemented it correctly on our side.  Any ideas why iphoneX is behaving differently?

@Badhumvee Unfortunately not.
Maybe it's linked with those caveats?

@Hiswe, thanks for your response.  Have you noticed this problem on your end as well?  It would help if others can confirm something similar.

Confirmed.
Not related to the caveats since it's evident on both Safari and Chrome.

Any updates to this issue with Safari?  How do we account for the notch in IphoneX?

It’s not working on iPhone 11 Pro or iPad Pro 11 inch either


Type checker doesn't reject parametrised shared functions

with 0.7.1

doing silly generic tests and
my god our life would be easier if this could work :)

Fatal error: exception "Assert_failure mo_types/typ_hash.ml:123:27"
Raised at Mo_types__Typ_hash.go.(fun) in file "mo_types/typ_hash.ml", line 123, characters 27-53
Called from Stdlib__list.iter in file "list.ml", line 110, characters 12-15
Called from Mo_types__Typ_hash.go in file "mo_types/typ_hash.ml", line 123, characters 4-58
Called from ExpGraph.unfold.go in file "lang_utils/expGraph.ml", line 92, characters 22-28
Called from Stdlib__list.map in file "list.ml", line 92, characters 20-23
Called from Stdlib__list.map in file "list.ml", line 92, characters 32-39
Called from Stdlib__list.map in file "list.ml", line 92, characters 32-39
Called from Stdlib__list.map in file "list.ml", line 92, characters 32-39
Called from Stdlib__list.map in file "list.ml", line 92, characters 32-39
Called from Stdlib__list.map in file "list.ml", line 92, characters 32-39
Called from ExpGraph.unfold.go in file "lang_utils/expGraph.ml", line 93, characters 18-34
Called from ExpGraph.unfold in file "lang_utils/expGraph.ml", line 97, characters 10-17
Called from Mo_types__Typ_hash.typ_hash in file "mo_types/typ_hash.ml", line 164, characters 11-25
Called from Stdlib__list.map in file "list.ml", line 92, characters 20-23
Called from Mo_types__Typ_hash.typ_seq_hash in file "mo_types/typ_hash.ml" (inlined), line 167, characters 19-41
Called from Codegen__Compile.BumpStream.name_for in file "codegen/compile.ml", line 4648, characters 50-74
Called from Codegen__Compile.MakeSerialization.serialize in file "codegen/compile.ml", line 5838, characters 15-43
Called from Codegen__Compile.compile_prim_invocation in file "codegen/compile.ml", line 9023, characters 6-36
Called from Codegen__Compile.compile_exp in file "codegen/compile.ml", line 9120, characters 4-54
Called from Codegen__Compile.compile_exp_as in file "codegen/compile.ml", line 9253, characters 24-44
Called from Codegen__Compile.FuncDec.compile_local_function.(fun) in file "codegen/compile.ml", line 6900, characters 20-37
Called from Codegen__Compile.Func.of_body in file "codegen/compile.ml", line 764, characters 6-18
Called from CamlinternalLazy.force_lazy_block in file "camlinternalLazy.ml", line 31, characters 17-27
Re-raised at CamlinternalLazy.force_lazy_block in file "camlinternalLazy.ml", line 36, characters 4-11
Called from Lib.AllocOnUse.use in file "lib/lib.ml", line 527, characters 13-28
Called from Codegen__Compile.StackRep.materialize_const_v in file "codegen/compile.ml", line 6574, characters 58-69
Called from Lib.Promise.lazy_value in file "lib/lib.ml", line 469, characters 14-18
Called from Codegen__Compile.StackRep.adjust.(fun) in file "codegen/compile.ml", line 6612, characters 51-78
Called from Stdlib__list.map in file "list.ml", line 92, characters 20-23
Called from Codegen__InstrList.concat_map in file "codegen/instrList.ml" (inlined), line 133, characters 43-58
Called from Codegen__Compile.StackRep.adjust in file "codegen/compile.ml", line 6612, characters 6-82
Called from Codegen__Compile.compile_exp_as in file "codegen/compile.ml", line 9254, characters 14-46
Called from Codegen__Compile.compile_prim_invocation in file "codegen/compile.ml", line 8245, characters 9-60
Called from Codegen__Compile.compile_exp in file "codegen/compile.ml", line 9120, characters 4-54
Called from Codegen__Compile.compile_exp_as in file "codegen/compile.ml", line 9253, characters 24-44
Called from Codegen__Compile.FuncDec.compile_const_message.(fun) in file "codegen/compile.ml", line 6938, characters 6-21
Called from Codegen__Compile.Func.of_body in file "codegen/compile.ml", line 764, characters 6-18
Called from Codegen__Compile.FuncDec.closed.(fun) in file "codegen/compile.ml", line 6948, characters 13-80
Called from Codegen__Compile.compile_dec.(fun) in file "codegen/compile.ml", line 9523, characters 33-44
Called from Codegen__Compile.compile_dec.(fun) in file "codegen/compile.ml", line 9513, characters 29-41
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.go.(fun) in file "codegen/compile.ml", line 9574, characters 44-62
Called from Codegen__Compile.compile_decs_public.(fun) in file "codegen/compile.ml", line 9577, characters 39-61
Called from Codegen__Compile.main_actor.(fun) in file "codegen/compile.ml", line 9813, characters 4-21
Called from Codegen__Compile.Func.of_body in file "codegen/compile.ml", line 764, characters 6-18
Called from CamlinternalLazy.force_lazy_block in file "camlinternalLazy.ml", line 31, characters 17-27
Re-raised at CamlinternalLazy.force_lazy_block in file "camlinternalLazy.ml", line 36, characters 4-11
Called from Lib.AllocOnUse.use in file "lib/lib.ml", line 527, characters 13-28
Called from Codegen__Compile.E.built_in in file "codegen/compile.ml" (inlined), line 452, characters 4-49
Called from Codegen__Compile.IC.export_init.(fun) in file "codegen/compile.ml", line 3842, characters 20-43
Called from Codegen__Compile.Func.of_body in file "codegen/compile.ml", line 764, characters 6-18
Called from Codegen__Compile.IC.export_init in file "codegen/compile.ml", line 3839, characters 18-228
Called from Codegen__Compile.compile in file "codegen/compile.ml", line 9928, characters 6-24
Called from Pipeline.compile_files in file "pipeline/pipeline.ml", line 690, characters 19-56
Called from Diag.bind in file "lang_utils/diag.ml", line 32, characters 27-30
Called from Diag.bind in file "lang_utils/diag.ml", line 32, characters 27-30
Called from Dune__exe__Moc.process_files in file "exes/moc.ml", line 203, characters 49-94
Called from Dune__exe__Moc in file "exes/moc.ml", line 298, characters 4-23

real    0m18.818s
user    0m18.562s
sys     0m0.412s

Possible repro:
actor {

   type Bad<T> =  Nat;

   public query func foo<T>() :async Bad<T> { loop {}};

}

@borovan are you sure your example doesn't compile? Can you provide a self-sufficient example like above?

shared ({ caller = owner }) actor class Service(playerPrincipal : Principal) = this {

  type GenericType<T> = {
    thing : Nat;
  };

  // test
  public shared ({ caller }) func asplode<T>() : async GenericType<T> {
    return {
      thing = 1;
    };
  };

};

this crashes for me

shared ({ caller = owner }) actor class Service() = this {

  type GenericType<T> = {
    thing : Nat;
  };

  // test
  public shared ({ caller }) func asplode<T>() : async GenericType<T> {
    return {
      thing = 1;
    };
  };

};

``` same

while you're here, do you have any code that uses typ-params?  I was trying to figure out what it does as part of the new subtype system? :)

~/.cache/dfinity/versions/0.12.0-beta.3/moc --version
Motoko compiler 0.7.1 (source i0kp307y-xrdvn6np-f7lvsab8-l4qgrg4a)

hmm i dunno then... its not like i need it to work at all

I can't reproduce it either (on linux)

Ok, I think I can reproduce it with an empty main actor that imports the class above.

https://github.com/dfinity/motoko/pull/3522 contains the repro (not a fix)

#3522 now contains a fix

@borovan thanks for reporting this!

Resolved via https://github.com/dfinity/motoko/pull/3522 and https://github.com/dfinity/motoko/pull/3525.


chore: Refactor serialisation functions and sibling paths

This PR moves some serialisation functions from circuits.js to foundation and sibling path to types.

Benchmark results
Metrics with a significant change:

note_successful_decrypting_time_in_ms (8): 308 (-25%)

Detailed results
All benchmarks are run on txs on the Benchmarking contract on the repository. Each tx consists of a batch call  to create_note and increment_balance, which guarantees that each tx has a private call, a nested private call, a public call, and a nested public call, as well as an emitted private note, an unencrypted log, and public storage read and write.
This benchmark source data is available in JSON format on S3 here.
Values are compared against data from master at commit 6356d94b and shown if the difference exceeds 1%.
L2 block published to L1
Each column represents the number of txs on an L2 block published to L1.

Metric
8 txs
32 txs
128 txs

l1_rollup_calldata_size_in_bytes
45,444
179,588
716,132

l1_rollup_calldata_gas
221,028
866,408
3,447,896

l1_rollup_execution_gas
934,172
3,968,882
24,791,432

l2_block_processing_time_in_ms
1,321 (-1%)
5,067 (-2%)
20,947

note_successful_decrypting_time_in_ms
:warning: 308 (-25%)
929 (-4%)
3,361

note_trial_decrypting_time_in_ms
16.0 (-21%)
55.0 (-42%)
136 (+3%)

l2_block_building_time_in_ms
14,842
59,085
236,934

l2_block_rollup_simulation_time_in_ms
10,498
41,896
168,365

l2_block_public_tx_process_time_in_ms
4,314
17,114
68,306

L2 chain processing
Each column represents the number of blocks on the L2 chain where each block has 16 txs.

Metric
5 blocks
10 blocks

node_history_sync_time_in_ms
14,955 (-1%)
28,700 (-1%)

note_history_successful_decrypting_time_in_ms
2,161 (-4%)
4,225 (-4%)

note_history_trial_decrypting_time_in_ms
108 (-26%)
159 (-11%)

node_database_size_in_bytes
3,618,886
3,733,732

pxe_database_size_in_bytes
29,923
59,478

Circuits stats
Stats on running time and I/O sizes collected for every circuit run across all benchmarks.

Circuit
circuit_simulation_time_in_ms
circuit_input_size_in_bytes
circuit_output_size_in_bytes

private-kernel-init
212
44,681
25,561

private-kernel-ordering
164 (-1%)
43,753
14,809

base-rollup
1,066
128,338
881

root-rollup
80.7 (-2%)
4,088
709

private-kernel-inner
289
71,208
25,561

public-kernel-private-input
204
31,863
25,561

public-kernel-non-first-iteration
202
31,905
25,561

merge-rollup
8.37
2,608
881

Tree insertion stats
The duration to insert a fixed batch of leaves into each tree type.

Metric
1 leaves
2 leaves
8 leaves
16 leaves
32 leaves
64 leaves
128 leaves
512 leaves
1024 leaves
2048 leaves
8192 leaves

batch_insert_into_append_only_tree_ms
11.1
108 (+22%)
13.4 (-3%)
17.7 (-4%)
23.6
49.7
88.4 (-4%)
242
466 (-2%)
910 (-1%)
3,553

batch_insert_into_indexed_tree_ms
N/A
N/A
N/A
63.7
N/A
59.4
109 (-8%)
358 (-2%)
727 (-2%)
1,397 (-1%)
5,551 (-3%)

Miscellaneous
Transaction sizes based on how many contracts are deployed in the tx.

Metric
0 deployed contracts
1 deployed contracts

tx_size_in_bytes
15,455
32,224

Transaction processing duration by data writes.

Metric
0 new commitments
1 new commitments

tx_pxe_processing_time_ms
370 (-3%)
1,076

Metric
1 public data writes

tx_sequencer_processing_time_ms
534


Support compiling blog os

https://github.com/phil-opp/blog_os/

[ ] Support -Zbuild-std (https://github.com/bjorn3/rustc_codegen_cranelift/issues/1207)
[ ] Use elf as object file format for targets using x86_64-unknown-none as llvm target
[ ] Support rust-lld as linker in toolchain.rs
[x] Fix linker errors

[x] Add NOTYPE symbols to archive symbol table (8714be0ad3cb416e146c4bc5f674d49a7d13af68)

[ ] Don't use puts on bare-metal targets
[ ] Don't emit .eh_frame section on bare-metal targets
[ ] "x86-interrupt" ABI
[ ] Enable -Zfunction-sections by default

Got the version as of post 3 working with a bunch of local hacks, including compiling the bootloader with cg_llvm as cg_clif produces a too big binary for the first stage of the bootloader to load.

Pushed some wip changes to the blog_os_fixes branch.


Expanding of New Issue Textarea Causes Scroll Jumping

Hi there @bfred-it ! 👋 Hope you are well.
There is an issue with long textareas (first added in https://github.com/sindresorhus/refined-github/pull/1871 ) and scroll jumping when entering a newline with enter / return.
Repro steps:

Go to https://github.com/sindresorhus/refined-github/issues/new?assignees=&labels=bug&template=bug_report.md
Copy all of the text and paste 20 or so times, creating a very long textarea
Click to the end of one of the lines and press Return (enter)
The scroll position will jump so that the cursor is at the very top of the viewport 😫

Browser: Chrome latest 88.0.4324.182
OS: macOS latest (Big Sur 11.2.1)
I can't reproduce this on https://fregante.github.io/fit-textarea/

I can't reproduce this on Firefox with RGH 21.1.9, what browser are you using?

Ah sorry, forgot to add the browser info - added it now above. Chrome latest + macOS latest.

In case there is no logic in Refined GitHub itself, wonder if this is related to the Scroll Anchoring behavior that Chrome has that is supposed to keep the page from shifting:
https://blog.chromium.org/2017/04/scroll-anchoring-for-web-developers.html

This feels like an error in GitHub’s own logic for bulled point lists. fit-textarea does not affect the cursor and I don’t remember any other feature that handles the enter key.

bulled point lists

Hmm... do you think that it still applies though when it's not a bullet list? I was not in a bullet point list there...

bulled point lists

Hmm... do you think that it still applies though when it's not a bullet list? I was not in a bullet point list there...

I can confirm this has nothing to do with the actual content of the textarea. As OP said this is probably caused by a scrolling behavior specific to Chrome.

It’s not super clear from the gif due to the repeating content, but due to how fit-textarea works, it might actually be its fault.
I thought that only the cursor was changing position (index) in the field, but actually the whole page scrolls.
Normally fit-textarea takes care of that and always tries to restore the scroll afterwards.
Just try disabling the feature in Refined GitHub to ensure its the culprit.

Just try disabling the feature in Refined GitHub to ensure its the culprit.

I did this before submitting the issue - GitHub itself does not have the "endlessly expanding" textareas. They even have a max-height to prevent resizing of the textarea.

If I disable the extension and then manually disable the max-height and expand the textarea horizontally, it doesn't appear to happen...

But not sure if it would maybe be intermittent...

Just try disabling the feature in Refined GitHub to ensure its the culprit.

I did this before submitting the issue

So that means you’re sure that fit-textarea is the culprit here. I’ll have to look into it

It seems like it, but I guess it's not 100% certain that it's not something with Chrome that needs to be worked around separately...

I can replicate it in Chrome, without Refined GitHub:

I'm pretty sure it's what my first comment said 😁 because it only happens for some content, like the numbered lists present in the new issue template.

Jokes apart, no worries, and thanks for opening a detailed issue. By the way now I'm @fregante, not @bfred-it 😁

Hmm... then how is it happening with the first example (which is not in a list)? Is it detecting that the cursor is inside a comment?

And, if this is an issue with GitHub itself, would it be possible to fix this in Refined GitHub? That would make the extension even more useful...

Hmm... then how is it happening with the first example (which is not in a list)?

Probably they see the hyphen and are trying to handle it as a list. There are other situations where it seems the enter key is mishandled. For example if I select this paragraph and press enter the test is not deleted like you’d expect.

And, if this is an issue with GitHub itself, would it be possible to fix this in Refined GitHub? That would make the extension even more useful...

Fixing this would require us to rewrite the whole “press enter to continue list” logic which I’d rather leave to GitHub. I suggest reporting both of these issues to them.

I suggest reporting both of these issues to them.

When I first read this a few days ago, I agreed with this.
But I was about to report just now, and thinking about it more, it will probably be a wontfix for them, because it only happens when a user is using the Refined GitHub extension (the textarea does not get a super large height applied ever in normal GitHub).
So I guess since Refined GitHub won't do this change since it's potentially a bit bigger, and I don't think GitHub is going to change their code for an extension, I guess this will just stay as a "known issue".

it only happens when a user is using the Refined GitHub extension (the textarea does not get a super large height applied ever in normal GitHub).
No it doesn’t. Look at the last gif I posted. There’s no Refined GitHub installed. This is 100% unrelated to this extension.

As I said when I closed the issue, it doesn’t. Look at the last gif I posted, there’s no Refined GitHub.

Ah, I must have missed / forgotten that detail, sorry. Then maybe it does make sense to still report it. Although the UX isn't as bad when the textarea is smaller...

Ok, at first I was unable to reproduce this without Refined GitHub enabled, but then I was able to narrow down the behavior a bit:

As I demonstrate at the start of the video, the bug does not appear right away. I hit enter at the end of some lines, and no scroll position change can be observed.
To reliably trigger the buggy scroll jumping behavior, you need to add a list to the issue text (I only tested a numbered list). Add one list item with some text after it, and then hit enter to create a second empty list item. Click to the end of the first line with something in it, scroll so that the list is flush with the bottom of the textarea, and then hit enter. This will create a new line item and trigger the buggy scroll behavior.
From this point on, until you delete the list items, the buggy scroll behavior can be observed when hitting enter at the end of any line with content in it (also just on ordinary paragraphs outside of list items)
To disable the buggy behavior again (I show this at the end of the video), delete the numbered list, and TWICE go to the end of some line and hit enter. The first time, it will show the buggy scroll behavior, but after the second time it will go back to normal.

Here's a video of the behavior: https://www.youtube.com/watch?v=3FrtTNYXMvI
I'll submit a support request to GitHub.


Third party billing services implementation

Changed Events:

nothing

New Events:

in substrate-node/pallets/pallet-smart-contract/src/lib.rs

        /// A Service contract is created
        ServiceContractCreated {
            service_contract_id: u64,
        },
        /// A Service contract is approved
        ServiceContractApproved {
            service_contract_id: u64,
        },
        /// A Service contract is canceled
        ServiceContractCanceled {
            service_contract_id: u64,
            cause: types::Cause,
        },

@renauter Please list the Changed / new events here

@renauter Please list the changed / new events above

done
it should stay like this but I ll update if there are new changes


Image Optimization

Is your feature request related to a problem? Please describe.
Hi there,I came across your open source project and noticed that the images are not well-optimized, primarily in PNG and JPG formats.
Describe the solution you'd like
In terms of file size and loading speed, WebP works better for images on websites than JPEG or PNG. I'd like to contribute by optimizing these images to the more efficient WebP format. Could you please consider assigning me to this project so I can actively contribute to its optimization?Looking forward to your response.
Additional context
Add any other context or screenshots about the feature request here.

@akshitagupta15june could I work on it?

Please assign it to me

This can be easily done with next js, 've done it before in some projects.
Would love to improve this project.


use match?

if there's no backreference in use, we can optimize it https://github.com/fastruby/fast-ruby#stringmatch-vs-stringmatch-vs-stringstart_withstringend_with-code-start-code-end
rebased https://github.com/mikel/mail/pull/1231

Nice, should be a good speed bump, can you please add a changelog for this and the previous PR as a "performance improvement" change under your name to this PR?

done, but tests are completely broken, probably due to a new psych release, maybe we should lock the previous version for now?

@ahorek The Psych issue has now been resolved (see #1522).


chore: add engine logs for failed queries

This can be massively helpful for debugging - especially when debugging weird failures.
The errors are only added as debug level, since these errors generally aren't actually critical to the server.

I think I was seeing weird differences in error messages between dagger run go run main.go and go run main.go - and just ended up wanting the full error in the dagger logs.
At some point, I think we can also recover the stack traces in the dagger engine, which we can't do in the client (I think, since the error is already formatted at that point), though I got a little stuck with doing that - so this was a fine stopgap till then.


Adds Blackbird quantum instruction language

Adds the Blackbird quantum instruction language used by Xanadu (licensed under Apache 2.0).

thanks for the contribution @josh146


Capture screenshot without playing video

Hi, I noticed that this package has screenshot function, I was wondering if there is any possibility to capture a screenshot from a video without necessarily playing the video?
The use case is to generate a thumbnail image for a given video file. In my project I cannot generate thumbnails on back end because we use end to end encryption, so need to do it client side.
Thanks!

As far as I understand, only attaching VideoController to Player will allow you to capture screenshots.

Regardless, I only target video & audio playback at the moment.


issues while using in Mobile

I found peerjs able to connect but not able to send data to other peers.
here i am only include mobile related issues. It's working pretty good at laptops, pc.

Hi @ttejas123
I'm able to get it working right now on:

Chrome 88.0.4324.93 / Android 11  <-> same
Firefox 84.1.4 / Android 11 <-> same (this was a bit finicky with 2 tabs on the same device)
Chrome 88.0.4324.93 / Android 11<-> Firefox 84.0.2 / Windows 10 Pro 20H2
Firefox 84.1.4 / Android 11 <-> Firefox 84.0.2 / Windows 10 Pro 20H2

I'm happy to help debug a bit further if I can, but this issue might be more pertinent over on the peers/peerjs repo.
In either case, it would be helpful to provide some more info about what browser / OS combos you're trying.

Hi @ttejas123
I'm able to get it working right now on:

Chrome 88.0.4324.93 / Android 11  <-> same
Firefox 84.1.4 / Android 11 <-> same (this was a bit finicky with 2 tabs on the same device)
Chrome 88.0.4324.93 / Android 11<-> Firefox 84.0.2 / Windows 10 Pro 20H2
Firefox 84.1.4 / Android 11 <-> Firefox 84.0.2 / Windows 10 Pro 20H2

I'm happy to help debug a bit further if I can, but this issue might be more pertinent over on the peers/peerjs repo.
In either case, it would be helpful to provide some more info about what browser / OS combos you're trying.


imposible to find long path files to diff with

Imposible to find long path files to diff with.
Due to the select list width , file path can not be read
https://freeimage.host/i/Jnp6yXa
A solution can be show
"file name - relative path"
like
"main.js - /assets/js/control/..."

im experiencing this too

As of v2.1 if you set "diff.showFoundRelativeFiles": true you'll see relative paths in the selector too. Potentially other kinds of paths can be disabled also.
Does this address the problem? If not how would you like the extension to address this?


Get TLS certs from Amazon Certificate Manager

It should be pretty doable actually. We should be able to transparently fetch certs from the ACM API when tools config container is ran.

You can't use acm for non aws services.
https://aws.amazon.com/certificate-manager/faqs/
Q: Can I use certificates on Amazon EC2 instances or on my own servers?

No. At this time, certificates provided by ACM can only be used with specific AWS services. See With which AWS services can I use certificates provided by ACM?.

Fyi You'd want to use let's encrypt


FI-1869: Fix smart IG links in EHR launch with patient scopes

Some links in the EHR Launch with Patient Scopes Group went to the incorrect IG version (see #389).

STU 1 things generally don't specify their version in their filenames or ids because that would have been a breaking change. The EHR Patient Launch came later so it could have included STU 1, but then it wouldn't have been consistent with the other smart tests.


Add copy method to record macro.

This allows a copy of a record to be made, specifying properties that should be changed.
It's useful to be able to do this when there are more than a couple of properties and you want a new record identical to the old one but with one or two properties changed. It maintains immutability while improving usability.
Example:
record Point, x : Int32, y : Int32, z : Int32
p1 = Point.new(3, 4, 5)
p1.copy y: 9 # => #<Point(@x=3, @y=9, @z=5)>

The inspiration for this comes from Scala case class copy: https://docs.scala-lang.org/tour/case-classes.html

My first intuition would be to call this copy_with, as I think it reads better. I really like the idea though, I used groovy's copyWith a fair bit.
Please allow the rest of the team to weigh in on the design before making any changes though. Right now, the formatter is failing (please use make crystal followed by bin/crystal format to format your PR)

I could live with copy_with, but how about update?

IMO, update carries a notion of mutability, or is ambiguous. copy is a bit more explicit; regardless of whether the receiver is mutable or not, you understand a copy is being made.

The primary contract for this method is not copying though, it's creating a new instance with some values changed. For copying with have dup and clone already. I would tend to argue that the copy is "just" a (necessary) side effect of changing values on an immutable object.
update's heritage would be Hash#update.

Scala calls such a method as clone.

I'm happy with update. clone implies there's nothing actually modified about the clone, same with copy.

We don't even need dup, because a record is a struct; just b = a; b.y = 9 copies the record and updates a field.
Honestly, I don't see the benefit of a copy with some new values in a mutable, non functional language.
Furthermore, why should the feature be restricted to record? What about structs and classes ?

@ysbaddaden with the difference that record defines attributes as getters, thus making it immutable.

Yes, this is exactly the point. Records are immutable objects and this is a nice and clean abstraction for "mutating" them.

Records are just structs (sugar definition), they can have methods that mutate instance variables; they're not immutable.

@ysbaddaden but by default they are immutable. People typically use them as immutable, or they would just define a struct with property macros, as it's shorter than a record when it's mutable.
Please consider the typical usecase.

What I'm saying is that nothing is immutable in Crystal, and that records are just sugar for defining pseudo-immutable structs. Crystal doesn't know about them being records, hence doesn't treat records differently than structs, and documents them as structs, because this is what they really are. Shall we specialize records under these conditions?
If we add that one method only, I guess it's okayish and fits into the concept, but it's one step that makes it harder to change a record into a struct —because someone may rely on the copy method, even thought the concept doesn't stand anymore (or never did).
BTW: #update is confusing (feels like it's mutating the object), better keep #copy or specialize #dup to accept arguments, which would fit better and avoid adding a new concept.

@ysbaddaden sure it doesn't enforce immutability per-se but it means you have to go out of your way to mutate the struct in-place.
Regarding the substitutability of a record and a struct with getters, that's a really good point. Perhaps it would be possible to add a def_copy_with method which would work on any class or struct (as long as it has the right ctor).

Have formatted the code. About the naming, I couldn't find many other functional languages that have a named method for this:
groovy: copyWith
kotlin, scala: copy
elm, haskell, erlang, elixir: don't have a function, it's done with syntactic sugar though the process is generally referred to as "update"
My personal favourite is still copy.

Personally I'd favor to instead create a dup that takes an argument, ie record.dup(y: 4). Easier to remember, and doesn't really create any ambigousness that I can see.

So is that a consensus that this should be called dup then? Would be happy to make the change to get this merged. I still think this is a useful feature and have wanted to use it in code.

I don't think it should be called dup. Maybe dup_with...

Why not just with? I don't think it necessarily needs a verb.
point = Point.new(3, 4, 5)
point.with(y: 9)

I've renamed it to copy_with and rebased. Anything else I can do to get this merged?

Apart from the docs, it's a big +1 from me

Ok, I've updated docs

I still think merge should be the name of the method. If we don't then named tuples and records will have different api.
Changing a variable from NamedTuple(x: Int32, y: Int32) to a record(x: Int32, y: Int32) will requiere extra changes.
Yes, they do have a different API since reader are different tuple[:foo] vs record.foo. That difference is to capture which properties exists or not. Maybe it could go away, or not. But making merge and copy_with different is an unnecessary IMO. And is also consistent with Hash#merge.
The fact that a merge in tuple can return a tuple with more components and that the merge in records prevents extra properties does not change that the operation is merging self with subset.

I completely disagree. Named tuples and records's APIs are different because they're two different data structures: one is an immutable Hash, and the other is an immutable OO struct with it's own class and can be inherited and have methods. Working to make the APIs the same makes no sense: you can restrict for NamedTuple and be sure whatever you're operating on has an update because it's a named tuple, but no such type restriction exists for "all records". You'll never be operating on "all records" the same way you can write a method that operates on all named tuples. That's because a named tuple is a collection, and a record is not, it's just a plain class.
These classes and usecases are so different that making the APIs the same doesn't make sense. If you want to do that, lets have that discussion in another PR.

And thinking about it more, this PR is the first instance of record adding any API which is specific to records. Records don't have an API because they're just a shortcut for defining a struct.
So we should add a includeable module that adds copy_with for any class or struct, and then use that in record, to avoid giving records any special API.

@RX14 I generally agree.

Records don't have an API

I'd consider the constructor receiving named arguments a API method specific to records. And copy_with is just a variant of that: It creates a new instance with self's properties as defaults.
We could certainly discuss a generalized copy_with, but I'm not sure how that's supposed to work as a re-usable module method, because the implementation is very specific to record and only works with it's special constructor.
But, I'd rather just merge this PR as is, adding `copy_with´ to the record macro. Then we can talk how this could be fit in a re-usable module.


Remove life cycle decorators

This PR removes the life cycle decorators in favor of deprecation warnings. If merged this will close issue #1916. A simple implementation of deprecation warnings was used with python's native warnings library. It is possible there is a more elegant solution to handling these warnings, I'm open to suggestions.
Please complete the following checklist:

[x] I have read the contribution guidelines.

[x] I have documented all public-facing changes in the changelog.

[ ] This pull request includes code, documentation, or other content derived from external source(s). If this is the case, ensure the external source's license is compatible with scikit-bio's license. Include the license in the licenses directory and add a comment in the code giving proper attribution. Ensure any other requirements set forth by the license and/or author are satisfied.

It is your responsibility to disclose code, documentation, or other content derived from external source(s). If you have questions about whether something can be included in the project or how to give proper attribution, include those questions in your pull request and a reviewer will assist you.

[x] This pull request does not include code, documentation, or other content derived from external source(s).

Note: This document may also be helpful to see some of the things code reviewers will be verifying when reviewing your pull request.

@wasade This PR follows your suggestion of removing API lifecycle decorators. Does this look good to you?

Unless I’m mistaken, it will raise an exception unless patched, right?On Mar 13, 2024, at 10:40, Qiyun Zhu @.***> wrote:
@qiyunzhu commented on this pull request.
In skbio/diversity/alpha/_base.py:

@@ -819,10 +807,11 @@ def observed_otus(counts):
observed_otus is an alias for sobs.

 """

warn("observed_otus is deprecated as of 0.6.0.", DeprecationWarning)

@wasade Thanks! Do you mean that q2-diveristy-lib will print lots of warnings which are unfavorable, or that it will just fail to run?
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you were mentioned.Message ID: @.***>

…once merged, releasedOn Mar 13, 2024, at 10:49, Daniel McDonald @.> wrote:Unless I’m mistaken, it will raise an exception unless patched, right?On Mar 13, 2024, at 10:40, Qiyun Zhu @.> wrote:
@qiyunzhu commented on this pull request.
In skbio/diversity/alpha/_base.py:

@@ -819,10 +807,11 @@ def observed_otus(counts):
observed_otus is an alias for sobs.

 """

warn("observed_otus is deprecated as of 0.6.0.", DeprecationWarning)

@wasade Thanks! Do you mean that q2-diveristy-lib will print lots of warnings which are unfavorable, or that it will just fail to run?
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you were mentioned.Message ID: @.***>

Looks good! Let me merge.


Feature/defenders fixes

Fixes multiple small things/bugs. Branched from #277 so merge that first.

Is ready for review, but there's still problems with the pass implementation. I need @RobZelluf 's help a bit.