[Broker] Change the default number of namespace bundles to 32

Motivation
Currently, the default number of namespace bundles is 4. This leads to cases where a lot of topics can reside in just 1 or 2 brokers in 3 broker cluster.
Side note:
A good rule of thumb rule for defining the number of shards is to have at least 10x more shards than there are nodes (this 10x rule of thumb comes from Akka Cluster documentation). In Pulsar a "namespace bundle" behaves like a shard. In addition to this, there are some recommendations to use a power of 2 for the number of shards (reference to this recommendation not found).
From these rules, you could get that a 3 broker node cluster should use 32 bundles, a 4-6 node cluster 64 bundles and 7-12 node cluster should use 128 bundles.
This might not be the best advice, but I haven't seen better rule of thumb rules for choosing the number of namespace bundles.
Modifications
Change the defaultNumberOfNamespaceBundles to 32.

defaultNumberOfNamespaceBundles is a configurable param and it can be configured  with different values for different use cases. Having large number of bundles come with its cost and it should not be large enough by default for every namespace. We still have kept 4 by default which should be more than enough. if specific usecase require 16/32/64 bundles then user should update configuration file in the system and we should avoid changing default values based on specific user's usecase,

defaultNumberOfNamespaceBundles is a configurable param and it can be configured with different values for different use cases. Having large number of bundles come with its cost and it should not be large enough by default for every namespace. We still have kept 4 by default which should be more than enough. if specific usecase require 16/32/64 bundles then user should update configuration file in the system and we should avoid changing default values based on specific user's usecase,

That's true that it's configurable, but the default value 4 leads often to a case where a broker in a 3 broker cluster doesn't get bundles assigned and is completely idling while the other 2 brokers take all of the load. I can provide a repro for this case if that helps describing the problem.

user can always enable auto bundle unloading in loadbalancer. and default-bundle =4 is not defined for test cluster with 1 namespace but it considers a normal cluster that is serving multiple namespaces with considerable traffic. again, higher number of bundles comes with cost specially for znodes and default behavior unnecessarily will add more bundles for users who are using default conf file.

user can always enable auto bundle unloading in loadbalancer. and default-bundle =4 is not defined for test cluster with 1 namespace but it considers a normal cluster that is serving multiple namespaces with considerable traffic. again, higher number of bundles comes with cost specially for znodes and default behavior unnecessarily will add more bundles for users who are using default conf file.

I have a test cluster on GCP/GKE where the auto bundle unloading never happens. It's using the default settings which contains
loadBalancerBrokerOverloadedThresholdPercentage=85
loadBalancerAutoUnloadSplitBundlesEnabled=true
loadBalancerNamespaceBundleMaxSessions=1000

The test load is created with this type of pulsar-perf command (using 2.7.3 pulsar-perf since current 2.8.0 contains a bug that is fixed in master, the bug causes partitions to stop consuming in pulsar-perf).
# create a 100 partition topic
pulsar-admin topics create-partitioned-topic -p 100 persistent://public/default/perftest

# produce messages
PULSAR_EXTRA_OPTS="-Xms1500M -Xmx1500M -XX:MaxDirectMemorySize=768M" /pulsar/bin/pulsar-perf produce -u pulsar+ssl://pulsar-broker:6651/ -ioThreads 4 -s 512 -r 50000 persistent://public/default/perftest

# consume messages
PULSAR_EXTRA_OPTS="-Xms1500M -Xmx1500M -XX:MaxDirectMemorySize=768M" /pulsar/bin/pulsar-perf consume -u pulsar+ssl://pulsar-broker:6651/ -s sub persistent://public/default/perftest

(these are run on a pod which has 2CPU + 4GB RAM requested/limits, using pulsar-perf from Pulsar 2.7.3 docker image)
The traffic can go on for hours and the CPU load will be very low. Since the threshold never happens.
In this case, the GKE cluster has a nodepool with 6 n2-standard-32 VMs (32 cores, 128GB RAM). Storage for bookies in on SSD.
The impact of this is that one of the brokers will never get any real load on it.
After changing to a namespace with 32 bundles, the load was evenly distributed. This is the reason why I think that defaultNumberOfNamespaceBundles=4 is not a good default.

user can always enable auto bundle unloading in loadbalancer. and default-bundle =4 is not defined for test cluster with 1 namespace but it considers a normal cluster that is serving multiple namespaces with considerable traffic. again, higher number of bundles comes with cost specially for znodes and default behavior unnecessarily will add more bundles for users who are using default conf file.

I have a test cluster on GCP/GKE where the auto bundle unloading never happens. It's using the default settings which contains
loadBalancerBrokerOverloadedThresholdPercentage=85
loadBalancerAutoUnloadSplitBundlesEnabled=true
loadBalancerNamespaceBundleMaxSessions=1000

The test load is created with this type of pulsar-perf command (using 2.7.3 pulsar-perf since current 2.8.0 contains a bug that is fixed in master, the bug causes partitions to stop consuming in pulsar-perf).
# create a 100 partition topic
pulsar-admin topics create-partitioned-topic -p 100 persistent://public/default/perftest

# produce messages
PULSAR_EXTRA_OPTS="-Xms1500M -Xmx1500M -XX:MaxDirectMemorySize=768M" /pulsar/bin/pulsar-perf produce -u pulsar+ssl://pulsar-broker:6651/ -ioThreads 4 -s 512 -r 50000 persistent://public/default/perftest

# consume messages
PULSAR_EXTRA_OPTS="-Xms1500M -Xmx1500M -XX:MaxDirectMemorySize=768M" /pulsar/bin/pulsar-perf consume -u pulsar+ssl://pulsar-broker:6651/ -s sub persistent://public/default/perftest

(these are run on a pod which has 2CPU + 4GB RAM requested/limits, using pulsar-perf from Pulsar 2.7.3 docker image)
The traffic can go on for hours and the CPU load will be very low. Since the threshold never happens.
In this case, the GKE cluster has a nodepool with 6 n2-standard-32 VMs (32 cores, 128GB RAM). Storage for bookies in on SSD.
The impact of this is that one of the brokers will never get any real load on it.
After changing to a namespace with 32 bundles, the load was evenly distributed. This is the reason why I think that defaultNumberOfNamespaceBundles=4 is not a good default.

I agree that 16 or 32 are better defaults that would avoid many surprises out of the box. That has been the config I have set in prod for the past many years.
The case of having a huge namespaces with limited load on each is far less common and it can always be adjusted in the config, where it poses a problem.
The default should be a good setting for ~80% of users.

I agree that 16 or 32 are better defaults that would avoid many surprises out of the box. That has been the config I have set in prod for the past many years.

@merlimat  Is 32 fine as a default, or should I change it to 16 in this PR?

I now realised that public/default gets always created with 16 bundles, regardless of what the configuration of defaultNumberOfNamespaceBundles is.
Bundles is hard coded to 16 when public/default gets created in cluster metadata setup:
https://github.com/apache/pulsar/blob/9905a9debd82ccb2f408faf32db2858166a4fff7/pulsar-broker/src/main/java/org/apache/pulsar/PulsarClusterMetadataSetup.java#L304
this gets called from this location:
https://github.com/apache/pulsar/blob/9905a9debd82ccb2f408faf32db2858166a4fff7/pulsar-broker/src/main/java/org/apache/pulsar/PulsarClusterMetadataSetup.java#L265-L266
The root cause of the problem where one of the servers was idling must have been caused by something else than the default bundles of 4 since public/default has 16 by default. I now checked with pulsar-admin namespaces bundles public/default and there's 44 for public/default in this perf testing environment.

I now checked with pulsar-admin namespaces bundles public/default and there's 44 for public/default in this perf testing environment.

Yes, they should be getting split when the load increases, still it takes some time to converge to a reasonable number

Note also that the LoadManager implementation (and in the case the LoadManager is the ModularLoadManagerWrapper, the LoadSheddingStrategy implementation) will affect bundle distribution across brokers. In some implementations, a broker's bundles will not be unloaded if it is not overloaded, even though there might be "underloaded" brokers in the cluster. (I've already discussed this with @lhotari in separate channels. Posting here for any other readers that might want come across this PR.)

Should this be considered for a PIP since we are changing a default value that can potentially impact users that would create a lot of namespaces?

I'm closing this since the public/default is currently created without using the defaultNumberOfNamespaceBundles at all. It's currently hard code to 16 as explained in https://github.com/apache/pulsar/pull/12137#issuecomment-925695116 . Therefore there isn't a real need to change defaultNumberOfNamespaceBundles since public/default has 16 in every case.
I had done the analysis of the problem incorrectly and the actual problem that load didn't get balanced was caused by the behavior of the Pulsar load balancer.


Link to generic is broken in the README

The following link - https://tomasvotava.github.io/fastapi-sso/sso/generic.html does not exist (404)

Hi @tombeteende, thanks for the issue! Could you please also give me a link to where the link currently is? I cannot find where the broken link is 😬

Sure, here - https://github.com/tomasvotava/fastapi-sso/blob/87d6c4426defff30a37a332d567a5200fc49c0e0/README.md?plain=1#L52

Thanks a lot! Will be fixed in #105


Add setters/getters for near/far clipping planes to GVRCameraRig

We keep hitting this on one of our internal projects, so I'm creating a convenience function.  It'd be nice to set the near/far clipping planes for all the cameras attached to the camera rig from the camera rig itself.  So that's what this does.
GearVRf-DCO-1.0-Signed-off-by: Tom Flynn
<EMAIL_ADDRESS>

Looks good to me.


publish fails silently if not package uploader

I had this problem trying to upload a fix for:
http://pub.dartlang.org/packages/csslib

This issue has been moved to dart-lang/pub#457.


Enumerate External Reference Types

⚠  This is a breaking change ⚠
As discussed in the cohort meeting of Dec 6th, the external reference types should be enumerated instead of a free-form string. This PR addresses it
Fixes https://github.com/bom-squad/protobom/issues/148
This PR also removes some of the legacy functions from the ExternalReference object that now are incompatible and to better conform to the design principle that dictates that format-specific logic should live only in the serializers/unserializers.
I added new tests to cover the functionality that was moved into the native objects.
The mapping of the reference types can be looked up in this spreadsheet. I will document in markdown in a follow up PR.
Signed-off-by: Adolfo García Veytia (Puerco<EMAIL_ADDRESS>

And what about cdx?

I just discovered that external references are not implemented in cdx, I'm about to open a PR for that :+1:

Allright, thanks this helps a lot. Let me know if you find something wrong in your tests. Thank you!


Simplify ArcHost usage

The overall goal here is to provide a usage pattern that avoids the
need for developers to worry about handle managers, schedulers, etc.

A number of overridable parameters were used only to create handle
manager stores. Remove them in favor of just providing a
HandleManagerProvider as a constructor argument.

Create HandleManagerProvider for standard JVM, Android, and Test
configurations.

AbstractArcHost is now usable on its own, so remove abstract
keyword from declaration.

I've submitted this as a draft pull request because I don't expect to submit this as-is, and it's likely that I'll break it up into smaller stages:
(1) Creating the HandleManagerProvider interface and implementations, and using them without changing the current class structure of ArcHosts
(2) Modifying the ArcHost contract as is done in this PR

Now that Jason landed his big scheduler refactor, you can probably revisit this.


Problem with  JSON

Please provide dev environment versions of your system
node -v
( xmysql requires node >= 7.6.0 )
npm -v
mysql --version
xmysql --version

Provide steps to reproduce this issue
or
Provide minimum code to reproduce this issue
or
HTTP request,response,error snapshot of this issue

Mark issue with suitable label if it is clear what this issue is.

Whats the problem if I may know?


Error: Check JWT token error: Get JWT token error:

I'm also seeing this JWT token error in Homebridge logs and no response in Homekit.   This started fairly recently.
homebridge-enphase-envoy.log (9).txt

Are you sure You have correct credentials data and serial number set in config?

try 9.5.2-beta.7 and let me know please

still the issue exist with latest release ?


Batch desktop visdiff rendering

This change makes visdiff render multiple components onscreen at the
same time, allowing us to render many small components in parallel.
 Closing for now.


Improved and more general residual networks

don't rebase, because we already ran experiments with it, so hashes should be kept


Zod: only generates 200 response bodies

What are the steps to reproduce this issue?

Use an input target with a path that has multiple responses.

Example
paths:
  /foo:
    get:
      responses:
        "200":
          $ref: "#/components/responses/Success"
        "202":
          $ref: "#/components/responses/SuccessAsync"
        "400":
          $ref: "#/components/responses/Error"

Generate using Zod client.

What happens?
Only one Zod schema for the 200 response body is generated.
What were you expecting to happen?
Zod schemas for all possible responses to be generated.
Any logs, error output, etc?
None.
Any other comments?
Appears to be hard-coded:
const response = spec?.[verb]?.responses?.['200'] as

What versions are you using?
Operating System: MacOS 14.4.1
Package Version: 6.28.2
Browser Version: N/A

Similar to this issue: https://github.com/anymaniax/orval/issues/1280

Isn't this https://orval.dev/reference/configuration/output#generateeachhttpstatus
The setting to generate for each HTTP status?

@melloware That is a config option for the mocks, and it does not affect zod generation.

Reopened i thought it did it for mocks and zod.  I see now its just mocks.

You are right the code is only doing 200
const response = spec?.[verb]?.responses?.['200'] as
    | ResponseObject
    | ReferenceObject;

@Priddles is it just a matter of looping over the responses array and generating for each?

@Priddles is it just a matter of looping over the responses array and generating for each?

Yes, I'd say so.
Some level of deduplication would be good, but definitiely a nice-to-have.

@melloware I have a fix for this locally and will put a PR in tomorrow.

Ok assigned the ticket to you.

@melloware @TommoLeedsy Thanks for the quick turnaround!
I saw it got released so I tried it out, but having some issues. Wasn't sure whether to open a new issue or not so putting it here.
I have a minimal reproducible example here.
The issues are:

It seems to be reading the config from the wrong object.
It generates a lot of MSW and Faker related code that has nothing to do with Zod.

I would open a new ticket.

@Priddles Sorry yeah that's my mistake, I didn't realise I needed to add a new config option and just used an existing one instead. I have now added generateEachHttpStatus to the zod options. This should sort it. I can put a PR in today?

Yes @TommoLeedsy PR would be great.

@melloware Do you know when the fix might be released?

Let me find out

Working in latest release. Thanks! 🎉


Allow sidebar to restrict what files it reads from

@TomasHubelbauer

I am using the local history extension to keep backups of my files in a .history directory within the work place.. every time a backup is created, this extension reads the backup file and shows all the TODOs from it as well, quickly filling up the sidebar!
Irrespective of that, there are plenty of times when I keep TODO lists in different files for tasks that I have or have had.. and would only like to focus on the TODO list(s) for the current tasks, so I would greatly appreciate the ability to filter what files your extension looks at for TODO lists.
Love the plugin.
Rob
:)

Thanks for the feature request, I'll take a look at it as soon as time allows. 🙂

Hi again! I will take a look at this in earnest, soon, but meanwhile, you might be able to use the search.exclude setting. In any case, I am thinking of adding a setting for excludes which will be specific for this extension - implement your idea.


[feature] allow Slack @usergroups to be parsed as human-friendly names

We accomodate Slack !variables like @here and @channel (Related: ), but @usergroups are currently unhandled. Should be simple. Creating stub to track for later.
Docs: https://api.slack.com/docs/message-formatting#variables

Probably added support for this, please try the latest binaries at https://bintray.com/42wim/nightly/Matterbridge/v1.8.0-29-g0bc9c70#files
Also, there has been a lot of code refactoring, which could've triggered old bugs

Ah, pushed the new binaries (nice logs!), but seems it's still not working: https://imgur.com/JWuXypq
Hm.. i recalled how the old parsing worked, but I'll have to catch up on refactored code and see if i can make sense of what's happening. Thanks for trying @42wim!

ok, so it seems that we should be working in replaceVariable not replaceMention groups show in UI as starting with "@", but they are actually "!" variables.
https://github.com/42wim/matterbridge/blob/master/bridge/slack/slack.go#L364
This regex seems to do the trick: <!((?:subteam\^)?[a-zA-Z0-9]+)(?:\|(.+?))?>
Can test it here with these strings:
https://regex101.com/
<!here>
<!channel|channel>
<!subteam^S012345|happy-peeps>

There are two captured groups, which represent "command" and "label". The Slack docs say "use the label when it's there, and otherwise fall back on command string" (for backward compat).

So in your screenshot there is no label ? so what should it return ? @subteam^S517M0H29 ?

Hm. I think that change might have actually introduced a regression:

So in your screenshot there is no label ? so what should it return ? @subteam^S517M0H29 ?

The groups won't ever exist across instances, so best to just copy to label from <!command|label> format and prefix it with "@".
Also, to clarify, the screenshots are not showing label because the existing replaceVariable command just pulls out the "command" portion of <!command|label> from the underlying markup going over the wire. This works fine for <!here|here> and <!channel|channel>, but not <!subteam^S517M0H29|steering-committee>

Not sure about the regression, but this should fix the original variable replacement
// @see https://api.slack.com/docs/message-formatting#variables
func (b *Bslack) replaceVariable(text string) string {
	results := regexp.MustCompile(`<!((?:subteam\^)?[a-zA-Z0-9]+)(?:\|(.+?))?>`).FindAllStringSubmatch(text, -1)
	for _, r := range results {
		// pls doublecheck -- i don't know golang!
		name, isset := r[2]
		if !isset {
			name = r[1]
		}
		text = strings.Replace(text, r[0], "@"+name, -1)
	}
	return text
}

@patcon can you test https://bintray.com/42wim/nightly/Matterbridge/v1.8.0-32-g79c4ad5#files ?

Unfortunately the regression still exists:

Confirmed that going back to v1.8.0 resolved
Logs: https://gist.github.com/patcon/1b2010f2266f098ef1881e4c41449560

Also, confirmed that usergroups are suffering same issue of identifier being used instead... hm..

I'll create a new ticket for regression, as I feel that will confuse this issue until resolved :)

Related to the extra "@" in the usergroup labels (which seems to be undocumented?), this regex should address it:
<!((?:subteam\^)?[a-zA-Z0-9]+)(?:\|@?(.+?))?>

Ok, thanks for looking into the regex so that I didn't have to :-)
The binary is building, will be in https://bintray.com/42wim/nightly/Matterbridge/v1.8.0-39-ab94b5c#files in a couple of minutes

Confirmed working great now :tada:


Update sql-database-recovered-finalize.md

Updated for freshness and removed Azure Selector. The selector didn't make sense in the context of this article.

Hi @elfisher, I'm your friendly neighborhood Azure Pull Request Bot (You can call me AZPRBOT). Thanks for your contribution!

This seems like a small (but important) contribution, so no contribution license agreement is required at this point. Real humans will now evaluate your PR.

TTYL, AZPRBOT;


Storybook >Components>Email>Default>Hide form content

Describe the bug

Email>Default>Hide form content and add email address validation.
Apply for position - small & large mobile view label stick on impute box
Api scope basic resource - small & large mobile view label stick on inputs box small view button issue

To Reproduce
Steps to reproduce the behavior:

Go to 'Components'
Click on 'Email'
Click on 'Default'

Screenshots

Desktop (please complete the following information):
-OS: [Windows 10 Enterprise]
-Browser [ edge]
-Version [ 125.0.2535.92]
Smartphone (please complete the following information):NA

Device: [e.g. iPhone6]
OS: [e.g. iOS8.1]
Browser [e.g. stock browser, safari]
Version [e.g. 22]

Additional context
Add any other context about the problem here.

Completed -

Button alignment is changed overall application please check all button small and large mobile view -

Expected -


There is a mistake in the example.

https://github.com/jamespacileo/django-pure-pagination
in this page, "Usage example"
try:
    page = request.GET.get('page', 1)
except PageNotAnInteger:
    page = 1

It's not going to cause an anomaly here.
I think this should be done in the following examples
        page = request.GET.get('page', 1)
        p = Paginator(all_article, 8)

        try:
            all_article_page = p.page(number=page)
        except PageNotAnInteger:
            # page = 1
            all_article_page = p.page(number=1)
        except EmptyPage:
            # page = p.num_pages
            all_article_page = p.page(number=p.num_pages)

This is exactly what I've noticed. Hope this fix will be merged soon.

great, this helps to fix my error. Tks.


Minor correction to SQLQueryFactory's Javadoc

Minor correction to Javadoc based on #1581

This looks good to me.

Thanks for the PR, @robertandrewbain.


Api Stopped working

Api has stopped working we're not able to use it anymore
Isuues:
{
"timeStamp":<PHONE_NUMBER>253,
"status": 500,
"errno": -2,
"syscall": "open",
"code": "ENOENT",
"path": "/app/codes/c1e8d4c9-d328-438a-a450-dfbde74f4681.java"
}
it shows errorcode:500
please fix it

or you can try this
https://github.com/Jaagrav/CodeX-API/issues/55


error mariadb/paper 1.11.2

logs
https://gist.github.com/mat41997/c91c4efe5b379cd7582057449434758b
config
https://gist.github.com/mat41997/d7d4cc10cdd75883a8afac256b2f0564
timigns
https://timings.aikar.co/?id=6664b7c17b5542339a8bebf7b2b8be5d
https://gist.githubusercontent.com/mat41997/6b128daf64003689a8ef26d6d62b69c1/raw/b3a0222e99711964cbee7aec2588754588e4042a/gistfile1.txt

You can ignore the error. It just took a little longer than expected to process one of the queries, probably because the server was starting up,


Check if CRG already exists and exit if yes

WIP: If CRG already exists, prevent the cluster creation,
else proceed.
Which issue this PR addresses:

Fixes: https://msazure.visualstudio.com/AzureRedHatOpenShift/_workitems/edit/10029869/
What this PR does / why we need it:

Test plan for issue:

Is there any documentation that needs to be updated for this PR?

I don't think this is something that belongs in the frontend, but rather in the backend during installation.
Our frontend only does static validation, which does not issue any calls to Azure RPs, but rather validates what the user passed in appears to be valid in context with the RP. We try to minimize the amount of time it takes to create the database record by not running any long-running queries or to Azure at all.
Adding in a call to check if the resource group exists within the frontend code is an anti-pattern of what the frontend was originally designed for. Please move this check into it's own function within the backend during the Install portion. I think that's probably a better suited place as well as you will not have to instantiate the resource client as it will already be initialized and exist within the manager interface.

@bennerv I originally suggested putting it inside the frontend since we can then perhaps reduce the amount of create-delete cycles that a user might have to do. The CLI does this role for various other things, but I guess this is a protective instance that would apply more in the case of installs via the Azure Resource Manager?

@bennerv I originally suggested putting it inside the frontend since we can then perhaps reduce the amount of create-delete cycles that a user might have to do. The CLI does this role for various other things, but I guess this is a protective instance that would apply more in the case of installs via the Azure Resource Manager?

The problem lies with how we have historically architected stuff like this.  If we look at the frontend code, it's all static validation which just checks that values appear sane, but doesn't actually make any requests to other Azure Resource providers.  We do see a call to talk to our cosmosdb instance, but that's it from restful or other service call(s).
If we decide to allow this within the frontend, it's going to raise the question of where future changes for installation validation happen, in the frontend or the backend.
Or we could add a new "intermediary" where we do one-time validation of cluster creation that should fail prior to the cosmos record being created so the customer does not have to delete the record to recreate their cluster.  I'd be curious on @m1kola 's thoughts but I don't know how I feel about this to be honest.  We'd have to ensure the decision was well-documented to give devs an easy understanding of where to put future validation code.
I think the easy choice, but not necessarily the best customer experience, would be to just add the validation to the backend installation steps based on the current structure of validation and the frontend/backend.

Agree with Ben - this belongs to the dynamic validator/backend.
Yes, this means that in case of existing cluster resource group (wrong input from the customer) the customer will have to delete the cluster object and create it again. This is consistent with rest of validations which we do in the dynamic validator (e.g. vnet validations or permissions).
In addition to the RP side validation we can look into adding AZ CLI validation. In Az CLI we can check - if cluster resource group already exists - don't even create a request to ARO RP. But I'm not convinced that implementing this on AZ CLI side worth the effort.

Moved the logic to the backend as suggested, since we already have validation in the az-aroclient, mimicked the same error message in the output and tested. Thanks

Adding on as stated before - you can't modify the ManagedBy field on an existing resource group so we can use that in ensureResourceGroup instead of the extra function.
Bad Request({"error":{"code":"ResourceGroupManagedByMismatch","message":"The managed by property of the resource group cannot be changed from its current value '/subscriptions/<sub-id>/resourceGroups/tschneid'."}})

Adding on as stated before - you can't modify the ManagedBy field on an existing resource group so we can use that in ensureResourceGroup instead of the extra function.
Bad Request({"error":{"code":"ResourceGroupManagedByMismatch","message":"The managed by property of the resource group cannot be changed from its current value '/subscriptions/<sub-id>/resourceGroups/tschneid'."}})

Added the suggest change, please review.

Testing results:
$ az group show -g srini-aro-crg-manual
{
"id": "/subscriptions/xxxx/resourceGroups/srini-aro-crg-manual",
"location": "yyyy",
"managedBy": null,
"name": "srini-aro-crg-manual",
"properties": {
"provisioningState": "Succeeded"
},
"tags": {
"createdAt": "xyxyxyxyxyx"
},
"type": "Microsoft.Resources/resourceGroups"
}
$ az aro create   --resource-group $RESOURCEGROUP   --name $CLUSTER   --vnet srini-aro-vnet   --master-subnet srini-master-subnet   --worker-subnet srini-worker-subnet   --cluster-resource-group srini-aro-crg-manual
(ClusterResourceGroupAlreadyExists) Resource group /subscriptions/xxxxx/resourcegroups/srini-aro-crg-manual must not already exist.
Code: ClusterResourceGroupAlreadyExists
Message: Resource group /subscriptions/xxxx/resourcegroups/srini-aro-crg-manual must not already exist.


Store state (nonce) locally

User Story
As Chris, I want to store my state locally, so that I am able to send a valid balance proof with the next available nonce.
Acceptance criteria
Tasks
Story Points

Done here as part of #171


Bug Going Back to Grocery List

Describe the bug
Sometimes going back to grocery list is bugged and app has to be restarted.
To Reproduce
Steps to reproduce the behavior:

Open app
Use 'Add Item' on Grocery List
Click 'Add Item' in Items List
Create new item
Click 'Grocery List'

Expected behavior
Should go back to Grocery List
Actual behavior
Grocery List shows being clicked, but nothing happens

Able to reliably reproduce now, original description updated with steps

Might also be reproducible just by click both 'New' buttons


Improved explanation of embedding sub-resources

This PR does the following:

moved embedding to performance chapter
removed custom media type for embedding
added link to json-field (to make embedding symmetric to filtering)
added example for embedding

Fixes #67

@whiskeysierra Thanks for the feedback. I addressed your comments.

:+1:

@ePaul @codekultur @tkrop please have a look at this :)

:+1:


Extract FilePattern to its own library

Shake's FilePattern seems like a useful module. It should be extract into a library so it can be shared by other tools.
This has been mentioned before:
https://github.com/ndmitchell/shake/issues/499
https://github.com/ndmitchell/shake/issues/485
https://github.com/ndmitchell/hlint/issues/402
https://github.com/ndmitchell/hlint/pull/334

Are you going to give this a try?

One thing to note is that Shake supports // patterns mostly as a legacy feature. I suggest the new filepattern package also supports that, but perhaps behind a useLegacyPatterns function, just so Shake can migrate more slowly.

I'm going to give it a go.

First pass to extract the necessary modules:
https://github.com/eborden/filepattern

I've done the work to provide FilePattern and FilePattern.Legacy. As well as opening #551 to begin relying on that library. There is a bit more work in filepattern getting CI running and re-enabling some tests, but should be enough draft work for you to review.

Oh also not sure how you want to handle the filepattern repo. Totally fine to hand it over to you if you'd rather keep maintainer-ship.

Thanks for all the work, I’ll review later. What do you prefer/hope in terms of maintainership? You, me or both seems the possible options.

I think a dual maintainership sounds good. This lib is integral to shake so it is probably good for you to at least have one hand on the wheel.

Popping in here to see if you've had a chance to review.

Alas, not yet - I've penciled in a train journey tomorrow morning to do a thorough review!

Completed - thanks to your help and constant enthusiasm. https://hackage.haskell.org/package/filepattern is the result, and it's vastly better than the stuff in Shake.

Awesome!

Plan is to wait until filepattern is used in HLint, ideally extensively (there are a few good places it could fit) and then we can sanity test it before turning it loose in Shake.
Once we do turn it lose the plan is make a release with everything but this. Then make a 0.1 bump with just the change to filepattern.

As it happened, for #642 I needed to use exactly the nice clean and optimised functions that were in filepattern, so I added the dependency. Most FilePattern values are the internal Shake implementation, but this particular one for --lint-watch is the new style. Given it's a debug only feature it shouldn't hurt too much.


feat: redirect on login/sign up

Consider these:

Putting auth in pages in full protection
Putting auth in layouts prevent flashing, but no actual protection
Maintain state of the signing in action (callback url, etc.) requires plaguing every page in auth flow (sign in, sign up, email verification) with callback props => a lot of prop drilling


system crash when inferencing model with enable GpuAcc on Mali T860

Hi All,
I use a development board with a ARM Mali-T860MP4 GPU, running with mobilenet v2(tensorflow model).
CpuAcc and CpuRef goes very good, but when I use GpuAcc, system frozen after running about 10sec ~ 5min(randomly).
I can found some error message in kernel message like
mali ff9a0000.gpu: GPU Fault 0x00000088 (UNKNOWN) at 0x00000000a5d7a240
I known this could be a OpenCL driver issue, does there any suggestion to find out problem is ?
Greatly appreciated.

Hi @noinhome ,
Apologies for the delayed reply.
Using the following set-up:
Firefly RK3399
Firefly Linux 16.04 image
Mobilenet_V2_1.0_224.pb
ArmNN: https://review.mlplatform.org/#/c/ml/armnn/+/619/
We have been able to reproduce the GPU fault but not consistently, it occurs at times but this does not seem to be caused by ArmNN.
We have been unable to reproduce the freeze/hang. I'm still looking into it and will report back if I get it.
Telmo

Hi @TelmoARM
Thanks for your clarification on this freeze issue. It is seem this issue much more of a openCL driver issue not a ArmNN bug.
I will try if I can report this GPU issue to Rockchip. If there have any progress, I will report back too.

Hi ARMNN Team,
I got reply from Rockchip, and they gave me a big (about 134 files...) kernel patch file for the GPU frozen issue. They said this frozen issue maybe caused by some known mali-deivce driver bugs on their own kernel.
I think this issue can be classified into vendor kernel issue not ARMNN bug and close.

Thanks @noinhome good luck.

Hi, can I get the solution Rockchip gave you? I'm having the same problem.


Webiste/Notebook Updates

Description
This PR aims to update the tutorial notebooks and website with the latest changes
➤ Notebook Links:

BigBench
LogiQA
asdiv
Disinformation Test

Parameter
Description

task
Task for which the model is to be evaluated (text-classification or ner)

model
Specifies the model(s) to be evaluated. This parameter can be provided as either a dictionary or a list of dictionaries. Each dictionary should contain the following keys: model (mandatory): 	PipelineModel or path to a saved model or pretrained pipeline/model from hub.hub (mandatory): Hub (library) to use in back-end for loading model from public models hub or from path

data
The data to be used for evaluation. A dictionary providing flexibility and options for data sources. It should include the following keys: data_source (mandatory): The source of the data.subset (optional): The subset of the data.feature_column (optional): The column containing the features.target_column (optional): The column containing the target labels.split (optional): The data split to be used.source (optional): Set to 'huggingface' when loading Hugging Face dataset.

config
Configuration for the tests to be performed, specified in the form of a YAML file.

@ArshaanNazir Should we change the Harness parameters table with the above one in the notebooks


static compilation

Hi,
Building a binary using libvirt-go adds a bunch of dependencies to shared objects.
Is it possible to build statically to remove all these dependencies ?
Just to be clear I first installed libvirt-devel package.
So, when I build my project without using libvirt-go:
go build -v -ldflags '-s -w -extldflags "-static"' ./cmd/project/main.go
ldd main
	linux-vdso.so.1 =>  (0x00007ffc6af7f000)
	libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fa091f86000)
	libc.so.6 => /lib64/libc.so.6 (0x00007fa091bb8000)
	/lib64/ld-linux-x86-64.so.2 (0x00007fa0921a2000)

using libvirt-go:
go build -v -ldflags '-s -w' ./cmd/project/main.go
ldd main
	linux-vdso.so.1 =>  (0x00007ffd109ba000)
	libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f306fa18000)
	libvirt-lxc.so.0 => /lib64/libvirt-lxc.so.0 (0x00007f306f814000)
	libvirt-qemu.so.0 => /lib64/libvirt-qemu.so.0 (0x00007f306f610000)
	libvirt.so.0 => /lib64/libvirt.so.0 (0x00007f306f031000)
	libc.so.6 => /lib64/libc.so.6 (0x00007f306ec63000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f306fc34000)
	libcap-ng.so.0 => /lib64/libcap-ng.so.0 (0x00007f306ea5d000)
	libyajl.so.2 => /lib64/libyajl.so.2 (0x00007f306e853000)
...
	libffi.so.6 => /lib64/libffi.so.6 (0x00007f30666f8000)
	libssl.so.10 => /lib64/libssl.so.10 (0x00007f3066486000)
	libcrypto.so.10 => /lib64/libcrypto.so.10 (0x00007f3066023000)
	libelf.so.1 => /lib64/libelf.so.1 (0x00007f3065e0b000)
	libbz2.so.1 => /lib64/libbz2.so.1 (0x00007f3065bfb000)

(around 70 lines, but I shortened the content)
When I try to compile statically, I get:
go build -v -ldflags '-s -w -extldflags "-static"' ./cmd/project/main.go
# command-line-arguments
/usr/lib/golang/pkg/tool/linux_amd64/link: running gcc failed: exit status 1
/usr/bin/ld: cannot find -lpthread
/usr/bin/ld: cannot find -lvirt-lxc
/usr/bin/ld: cannot find -lvirt-lxc
/usr/bin/ld: cannot find -lvirt-qemu
/usr/bin/ld: cannot find -lvirt-qemu
/usr/bin/ld: cannot find -lvirt
/usr/bin/ld: cannot find -lc
collect2: error: ld returned 1 exit status

I'm stuck here, I can't find any static version of libvirt ?
I currently work with a CentOS Linux release 7.7.1908 (Core)
Thank you and have a good day :)

Libvirt does not support being built as a static library I'm afraid.

Ok, now it's clear :)
thank you for your fast response, I close the ticket as it's not possible as is

@berrange

Libvirt does not support being built as a static library I'm afraid.

What would it take to make this possible? It's a pain point for https://github.com/purpleidea/mgmt/ because we need to build a different golang binary for each distro because of this, since they all have a different version of libvirt libraries that's packaged there.


Remove CLIENT_GEN_VERSION and CONTROLLER_GEN_VERSION from devel image

It is better to leave each repo to set CLIENT_GEN_VERSION and CONTROLLER_GEN_VERSION and simply use k8s-test-infra as a base image

Hmm. I don't think we necessarily need to remove these tools from this Dockerfile. If we know a specific pinned version of these tools works across all of our projects for a given golang version, then we should perfer to pull in this image. If this image doesn't work for a specific repo, it should have a fallback to be able to build a local image until a suitable image can be created here.


[Bug]: F1 adaptive threshold and confidence value

Describe the bug
Once I finish the training, I would like to understand the threshold the model used for distinguishing the normal vs anomalous data.
If I print the F1adaptive threshold value, it says
Threshold set during training
F1AdaptiveThreshold() (value=13.60)

I do have good performance metrics and the anomaly maps kind of correlates well with the confidence displayed. But I cant understand the threshold score. What does it mean when the threshold is 13.6?
Is there a way we can set the confidence param of the model during training and inference, because I want to have  separate workflows based on confidence value.
Thanks, would really appreciate the help.
Dataset
Folder
Model
PatchCore
Steps to reproduce the behavior
Train patchcore model and do  engine.threshold to see the threshold value used during training and testing.
OS information
OS information:

OS: [e.g. Ubuntu 20.04]
Python version: [e.g. 3.10.0]
Anomalib version: [e.g. 0.3.6]
PyTorch version: [e.g. 1.9.0]
CUDA/cuDNN version: [e.g. 11.1]
GPU models and configuration: [e.g. 2x GeForce RTX 3090]
Any other relevant information: [e.g. I'm using a custom dataset]

Anomalib version 1.0.1
Python 3.10
Custom dataset: Folder
Expected behavior
I am expecting the threshold is between 0 to 1
Screenshots
No response
Pip/GitHub
pip
What version/branch did you use?
1.1.0
Configuration YAML
NA

Logs
Threshold set duirng training
F1AdaptiveThreshold() (value=13.60)

Code of Conduct

[X] I agree to follow this project's Code of Conduct

I am expecting the threshold is between 0 to 1

Anomaly detection models do not have their final scores bounded to the [0, 1] range. Instead, they have an anomaly score. In many models, a higher score indicates the likelihood of anomaly in the image. The threshold is the value set to draw a boundary between normal and anomalous image/pixel decision.
In your case, the adaptive threshold that achieves the highest anomaly detection performance is computed as 13.60. This means that any prediction score that is higher than this value would indicate anomaly, and normal otherwise.
Hope that makes sense.


Navigation in text (up/down/left/right) becomes sluggish when Rust syntax highlighting enabled

Performance is notably worse than with a non-syntax highlighted file, and compared to other syntax highlightings.

I can't confirm this, although it's been a while since I last used Sublime Text. See #55

Can't confirm

@315234 I can't confirm this either, could you tell us your Sublime version, OS version etc
Thanks

Closing


feat(26)!: Update model

BREAKING CHANGE

SVD model updated (breaking change)

dotnet: done
typescript: in progress

Added summary docs for all model properties
Updated tests
Updated example
Updated documentation

Some minor comments. Feel free to resolve without fixing :)

Comments are totally valid and nice catch. I'll update


Make pub a pub package

This issue was originally filed by @financeCoding

In https://github.com/dart-gde/discovery_api_dart_client_generator we have a dart script  that automatically versions and commits code to github. Later the script uploads to pub via Process.run() commands. What we have works but a solution where we could import some 'package:pub/...'  to handle this for us would be great. I also find that pub has a lot of common and reusable code that others might want to depend on. Pub's design is nice since everything is a library. I have ripped code out of pub for other projects.
https://github.com/financeCoding/discovery_api_dart_client_generator/blob/d263122e29774bc69ab9b84da58837026a6ec88e/tool/update.dart

This issue has been moved to dart-lang/pub#498.


Extra lines in  Ajatar_Translator.cpp

There are extra lines of code  , which must be removed.

Well , I will accept your  offer .


Implemented rate-limiting

AWESOME JOB! Thanks for doing this :) where did you find the library?

Oh I searched up rate-limiting for Express.js and this one was commonly used. https://github.com/nfriedly/express-rate-limit


Wrap up redesigns for public site

Part of https://github.com/microsoft/typespec/issues/2151. Finalize phase 1 design work for public TypeSpec website.
Tasks

[ ] Refine designs based on feedback from team
[ ] Review with Foundations design team for alignment
[ ] Hand off to development (design files, illustration assets)

Resources
Design files

Also needed: Style updates to existing Docusaurus pages so that they align better with incoming designs.

Background / foreground colors
Accent colors
Corner radius
Font family
Footer


INJECTION_III_APP not defined

when I tried add HotReload as a swift package in my own demo I found INJECTION_III_APP is not defined, thus device injection with InjectionIII app does not work

Hi, What was the exact error message? You should be able to add HotReloading as a Swift package to your app and then use the last binary 4.3.0 version of the InjectionIII app to manage the recompiles and inject if you set the user default the README mentions.

from console log, i can see that HotReloading is trying to connect to localhost: 8899, but InjectionIII app on my mac is listening to port 8898

I reinstalled InjectionIII app and now it works fine after config host name to my local ip address.
Thanks for this great project!
going to close this issue


Setup AMI

@TECH7Fox the integration is able to connect with the add-on now. This is how I configured the integration:

Where host is the hostname that supervisor shows for Asterisk add-on.

And what do you use for password?

You set it in the addon configuration

Ah, you maybe update the readme with an example, usefull for everyone then

Definitely, but I would prefer to have a full working scenario... later I will try to make SIP calls to see if they work. There are a lot of things to shave after that...

I only see below in options

Thnx, clear

Guys, don't forget to delete the whole /config/asterisk folder before re-installing the add-on. Otherwise the new configuration will not be applied.


Have trouble to register plugin method handler with uncertain string, example is file_picker plugin use __CUSTOM_x

Function Custom Format of Plugin file_picker https://github.com/miguelpruivo/plugins_flutter_file_picker
pass a uncertain string and I have trouble to register method handler in InitPlugin
x is file type, such as txt, svg, doc, xls
channel.HandleFunc("__CUSTOM_x", p.custom)

File_Picker Dart
static Future<dynamic> _getPath(String type, bool multipleSelection) async {
	try {
	  dynamic result = await _channel.invokeMethod(type, multipleSelection);
...

static String _handleType(FileType type, String fileExtension) {
	switch (type) {
	 ...
	  case FileType.CUSTOM:
		return '__CUSTOM_' + (fileExtension ?? '');
	  default:

File_Picker resolve file type in Android with string.split
private String resolveType(String type) {

	final boolean isCustom = type.contains("__CUSTOM_");

	if(isCustom) {
	  final String extension = type.split("__CUSTOM_")[1].toLowerCase();
	  String mime = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension);
	  mime = mime == null ? "unsupported" : mime;
	  Log.i(TAG, "Custom file type: " + mime);
	  return mime;
	}

method-channel.go line 77,78
// When no handler is registered for a method, it will be handled silently by
// sending a nil reply which triggers the dart MissingPluginException exception.

Error Message
go-flutter: no method handler registered for method '__CUSTOM_svg' on channel 'file_picker'
flutter: [FilePicker] Unsupported operation. Method not found. The exception thrown was: MissingPluginException(No implementation found for method __CUSTOM_svg on channel file_picker)
[ERROR:c:\b\s\w\ir\k\src\flutter\lib\ui\ui_dart_state.cc(148)] Unhandled Exception: MissingPluginException(No implementation found for method __CUSTOM_svg on channel file_picker)

Thanks

Having variables in a method name doesn't make sense. I have never seen it in another plugin. I think the file type should've been an argument. I don't feel like we should add much complexity to go-flutter, but a simple catch-all handler could let you implement the matching manually.

@chunhunghan, you can use:
p.channel.CatchAllHandleFunc(fallBack)

func fallBack(methodCall interface{}) (reply interface{}, err error) {
	method := methodCall.(plugin.MethodCall)
	// return the randomized Method Name
	return method.Method, nil
}

The CatchAllHandleFunc functionality will be added to the next release of go-flutter.
If you want to try it out use: hover run -b '@master'.


Allow for Options to be passed to split-window

I like to have splits open in the current working directory.
split-window -h -c "#{pane_current_path}"
Not everyone might like that so I made it an option @modal-split-opts , and made the configuration copy and paste for others in case they like it. Also this keeps the configuration backwards compatible with no breaking changes.

Thank you for the pull the request!
I can see that people might want to configure the commands executed by tmux-modal. As you mention, everyone has their own preference and  therefore we should maybe generalize this idea?
We could have a file "commands.conf" that will have a 1-1 mapping to the keybindings in "keybindings.conf". In "commands.conf" users could override the commands to their liking. In your case, it might look something like this:
CMD_WIN_SPLIT_RIGHT='split-window -h -c "#{pane_current_path}"'
CMD_WIN_SPLIT='split-window -c "#{pane_current_path}"'
This more scalable and customizable. I can start working on that this weekend (shouldn't be that hard to implement). What do you think?

I like your idea 100xs better than what I came up with! By the way I just started using this plugin today. It is really fantastic, ty for all your hard work!

This has been implemented on master now (see https://github.com/whame/tmux-modal#custom-commands). Please update and try it out!
For your case, make a copy of commands.conf. Make the following change to your newly copied configuration command file:
--- commands.conf       2023-01-01 19:11:34.195419427 +0100
+++ bradfordwagner-cmd.conf       2023-01-01 19:06:58.098918423 +0100
@@ -114,10 +114,10 @@
 ## Split command prefix.

 ### Split window pane right.
-CMD_WIN_SPLIT_RIGHT='split-window -h'
+CMD_WIN_SPLIT_RIGHT='split-window -h -c "#{pane_current_path}"'

 ### Split window pane down.
-CMD_WIN_SPLIT_DOWN='split-window'
+CMD_WIN_SPLIT_DOWN='split-window -c "#{pane_current_path}"'

 ## Move command prefix.

Finally, tell tmux-modal to load it. Thus, in your .tmux.conf:
set -g @modal-commands-conf /path/to/bradfordwagner-cmd.conf

Thanks for the idea! I actually use the custom split command myself now :)


GDScript: typed VM

This adds many instructions to the GDScript VM with type specifiers. This allows typed code to be faster since it can make some assumptions instead of checking at runtime. In my tests the typed instructions are always faster (with varying degrees of performance gain).
Naturally this includes the changes in the compiler to make use of the new instructions. There's also a change in VariantInternal to properly initialize Variants and get pointers when the type is unknown (which is used in function arguments, since adding instructions for each combination of argument types is not practical).
I threw in a bug fix at the end that I found when writing benchmarks, since it's only a single line change (and I expect this to be merged soon).
This change should not break anything, it's mostly adding new instructions. Typed code should just work faster and untyped code will not have any performance loss.

Since variables with type will be faster, I would add configurable warning which would report every single usage of dynamic typed variable.
It would help users to improve performance by adding type to variables without needing to check manually usage of every single script.

@qarmin There are already warnings for this in the Project Settings ("unsafe" category), but they're disabled by default.

Yes, and also the green lines in the editor tell you what are the optimized paths. I do want to improve the tooling to help you make more informed decisions about optimization, but this can be done later.

https://github.com/qarmin/RegressionTestProject/
crashes with this backtrace:
[1] /mnt/Miecz/qq/godot-gdscript-typed-vm/bin/godot.linuxbsd.tools.64.llvms() [0x2f55e5b] (/mnt/Miecz/qq/godot-gdscript-typed-vm/platform/linuxbsd/crash_handler_linuxbsd.cpp:54)
[2] /lib/x86_64-linux-gnu/libc.so.6(+0x46210) [0x7f40ab83f210] (??:0)
[3] CowData<Variant>::_unref(void*) (/mnt/Miecz/qq/godot-gdscript-typed-vm/./core/safe_refcount.h:114)
[4] CowData<Variant>::_ref(CowData<Variant> const&) (/mnt/Miecz/qq/godot-gdscript-typed-vm/./core/cowdata.h:355)
[5] Vector<Variant>::operator=(Vector<Variant> const&) (/mnt/Miecz/qq/godot-gdscript-typed-vm/./core/vector.h:126)
[6] Array::_assign(Array const&) (/mnt/Miecz/qq/godot-gdscript-typed-vm/core/array.cpp:116)
[7] Array::operator=(Array const&) (/mnt/Miecz/qq/godot-gdscript-typed-vm/core/array.cpp:157)
[8] PtrToArg<TypedArray<Node> >::encode(TypedArray<Node>, void*) (/mnt/Miecz/qq/godot-gdscript-typed-vm/./core/typed_array.h:133)
[9] void call_with_ptr_args_retc_helper<Node, TypedArray<Node>>(Node*, TypedArray<Node> (Node::*)() const, void const**, void*, IndexSequence<>) (/mnt/Miecz/qq/godot-gdscript-typed-vm/./core/binder_common.h:250)
[10] void call_with_ptr_args_retc<Node, TypedArray<Node>>(Node*, TypedArray<Node> (Node::*)() const, void const**, void*) (/mnt/Miecz/qq/godot-gdscript-typed-vm/./core/binder_common.h:472)
[11] MethodBindTRC<Node, TypedArray<Node>>::ptrcall(Object*, void const**, void*) (/mnt/Miecz/qq/godot-gdscript-typed-vm/./core/method_bind.h:562)
[12] GDScriptFunction::call(GDScriptInstance*, Variant const**, int, Callable::CallError&, GDScriptFunction::CallState*) (/mnt/Miecz/qq/godot-gdscript-typed-vm/modules/gdscript/gdscript_function.cpp:3113)
[13] GDScriptInstance::call(StringName const&, Variant const**, int, Callable::CallError&) (/mnt/Miecz/qq/godot-gdscript-typed-vm/modules/gdscript/gdscript.cpp:1321)
[14] ScriptInstance::call(StringName const&, Variant const&, Variant const&, Variant const&, Variant const&, Variant const&) (/mnt/Miecz/qq/godot-gdscript-typed-vm/core/script_language.cpp:314)
[15] Node::_notification(int) (/mnt/Miecz/qq/godot-gdscript-typed-vm/scene/main/node.cpp:58)
[16] Node::_notificationv(int, bool) (/mnt/Miecz/qq/godot-gdscript-typed-vm/./scene/main/node.h:45)
[17] Node3D::_notificationv(int, bool) (/mnt/Miecz/qq/godot-gdscript-typed-vm/./scene/3d/node_3d.h:?)
[18] Object::notification(int, bool) (/mnt/Miecz/qq/godot-gdscript-typed-vm/core/object.cpp:806)
[19] SceneTree::_notify_group_pause(StringName const&, int) (/mnt/Miecz/qq/godot-gdscript-typed-vm/scene/main/scene_tree.cpp:818)
[20] SceneTree::idle(float) (/mnt/Miecz/qq/godot-gdscript-typed-vm/scene/main/scene_tree.cpp:447)
[21] Main::iteration() (/mnt/Miecz/qq/godot-gdscript-typed-vm/main/main.cpp:2426)
[22] OS_LinuxBSD::run() (/mnt/Miecz/qq/godot-gdscript-typed-vm/platform/linuxbsd/os_linuxbsd.cpp:240)
[23] /mnt/Miecz/qq/godot-gdscript-typed-vm/bin/godot.linuxbsd.tools.64.llvms(main+0x6bf) [0x2f5460f] (/mnt/Miecz/qq/godot-gdscript-typed-vm/platform/linuxbsd/godot_linuxbsd.cpp:58)
[24] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf3) [0x7f40ab8200b3] (??:0)
[25] /mnt/Miecz/qq/godot-gdscript-typed-vm/bin/godot.linuxbsd.tools.64.llvms(_start+0x2e) [0x2ea97be] (??:?)

Also when opening in editor and closing project https://github.com/qarmin/The-worst-Godot-test-project/ then I got this memory leaks
Indirect leak of 207648 byte(s) in 721 object(s) allocated from:
    #0 0x2f21efd in malloc (/mnt/Miecz/qq/godot-gdscript-typed-vm/bin/godot.linuxbsd.tools.64.llvms+0x2f21efd)
    #1 0x1972be8a in Memory::alloc_static(unsigned long, bool) /mnt/Miecz/qq/godot-gdscript-typed-vm/core/os/memory.cpp:76:14
    #2 0x1972bc84 in operator new(unsigned long, char const*) /mnt/Miecz/qq/godot-gdscript-typed-vm/core/os/memory.cpp:41:9
    #3 0x7946b2f in GDScriptParser::BinaryOpNode* GDScriptParser::alloc_node<GDScriptParser::BinaryOpNode>() /mnt/Miecz/qq/godot-gdscript-typed-vm/modules/gdscript/gdscript_parser.h:1166:13
    #4 0x78a0966 in GDScriptParser::parse_binary_operator(GDScriptParser::ExpressionNode*, bool) /mnt/Miecz/qq/godot-gdscript-typed-vm/modules/gdscript/gdscript_parser.cpp:2030:28
    #5 0x789a911 in GDScriptParser::parse_precedence(GDScriptParser::Precedence, bool, bool) /mnt/Miecz/qq/godot-gdscript-typed-vm/modules/gdscript/gdscript_parser.cpp:1890:22
    #6 0x7879410 in GDScriptParser::parse_expression(bool, bool) /mnt/Miecz/qq/godot-gdscript-typed-vm/modules/gdscript/gdscript_parser.cpp:1897:9
    #7 0x7888f0c in GDScriptParser::parse_if(String const&) /mnt/Miecz/qq/godot-gdscript-typed-vm/modules/gdscript/gdscript_parser.cpp:1526:20
    #8 0x7885d66 in GDScriptParser::parse_statement() /mnt/Miecz/qq/godot-gdscript-typed-vm/modules/gdscript/gdscript_parser.cpp:1340:13
    #9 0x787bde8 in GDScriptParser::parse_suite(String const&, GDScriptParser::SuiteNode*) /mnt/Miecz/qq/godot-gdscript-typed-vm/modules/gdscript/gdscript_parser.cpp:1272:21
    #10 0x78727fb in GDScriptParser::parse_function() /mnt/Miecz/qq/godot-gdscript-typed-vm/modules/gdscript/gdscript_parser.cpp:1168:19
    #11 0x7920123 in void GDScriptParser::parse_class_member<GDScriptParser::FunctionNode>(GDScriptParser::FunctionNode* (GDScriptParser::*)(), GDScriptParser::AnnotationInfo::TargetKind, String const&) /mnt/Miecz/qq/godot-gdscript-typed-vm/modules/gdscript/gdscript_parser.cpp:665:14
    #12 0x786b8a0 in GDScriptParser::parse_class_body() /mnt/Miecz/qq/godot-gdscript-typed-vm/modules/gdscript/gdscript_parser.cpp:708:5
    #13 0x7864792 in GDScriptParser::parse_program() /mnt/Miecz/qq/godot-gdscript-typed-vm/modules/gdscript/gdscript_parser.cpp:557:2
    #14 0x78622e0 in GDScriptParser::parse(String const&, String const&, bool) /mnt/Miecz/qq/godot-gdscript-typed-vm/modules/gdscript/gdscript_parser.cpp:359:2
    #15 0x7308cd8 in GDScriptParserRef::raise_status(GDScriptParserRef::Status) /mnt/Miecz/qq/godot-gdscript-typed-vm/modules/gdscript/gdscript_cache.cpp:59:22
    #16 0x72b8bde in GDScriptAnalyzer::reduce_identifier(GDScriptParser::IdentifierNode*, bool) /mnt/Miecz/qq/godot-gdscript-typed-vm/modules/gdscript/gdscript_analyzer.cpp:2314:26
    #17 0x724c2d6 in GDScriptAnalyzer::reduce_expression(GDScriptParser::ExpressionNode*) /mnt/Miecz/qq/godot-gdscript-typed-vm/modules/gdscript/gdscript_analyzer.cpp:1387:4
    #18 0x72a8b84 in GDScriptAnalyzer::reduce_call(GDScriptParser::CallNode*, bool) /mnt/Miecz/qq/godot-gdscript-typed-vm/modules/gdscript/gdscript_analyzer.cpp:1878:3
    #19 0x724bebc in GDScriptAnalyzer::reduce_expression(GDScriptParser::ExpressionNode*) /mnt/Miecz/qq/godot-gdscript-typed-vm/modules/gdscript/gdscript_analyzer.cpp:1375:4
    #20 0x725d49d in GDScriptAnalyzer::resolve_node(GDScriptParser::Node*) /mnt/Miecz/qq/godot-gdscript-typed-vm/modules/gdscript/gdscript_analyzer.cpp:830:4
    #21 0x7269d6e in GDScriptAnalyzer::resolve_suite(GDScriptParser::SuiteNode*) /mnt/Miecz/qq/godot-gdscript-typed-vm/modules/gdscript/gdscript_analyzer.cpp:938:3
    #22 0x7268f55 in GDScriptAnalyzer::resolve_if(GDScriptParser::IfNode*) /mnt/Miecz/qq/godot-gdscript-typed-vm/modules/gdscript/gdscript_analyzer.cpp:946:2
    #23 0x725c870 in GDScriptAnalyzer::resolve_node(GDScriptParser::Node*) /mnt/Miecz/qq/godot-gdscript-typed-vm/modules/gdscript/gdscript_analyzer.cpp:779:4
    #24 0x7269d6e in GDScriptAnalyzer::resolve_suite(GDScriptParser::SuiteNode*) /mnt/Miecz/qq/godot-gdscript-typed-vm/modules/gdscript/gdscript_analyzer.cpp:938:3
    #25 0x7259d5c in GDScriptAnalyzer::resolve_function_body(GDScriptParser::FunctionNode*) /mnt/Miecz/qq/godot-gdscript-typed-vm/modules/gdscript/gdscript_analyzer.cpp:891:2
    #26 0x725792f in GDScriptAnalyzer::resolve_class_body(GDScriptParser::ClassNode*) /mnt/Miecz/qq/godot-gdscript-typed-vm/modules/gdscript/gdscript_analyzer.cpp:729:3
    #27 0x72e4ac0 in GDScriptAnalyzer::resolve_body() /mnt/Miecz/qq/godot-gdscript-typed-vm/modules/gdscript/gdscript_analyzer.cpp:3340:2
    #28 0x730971c in GDScriptParserRef::raise_status(GDScriptParserRef::Status) /mnt/Miecz/qq/godot-gdscript-typed-vm/modules/gdscript/gdscript_cache.cpp:78:35
    #29 0x72e5321 in GDScriptAnalyzer::resolve_program() /mnt/Miecz/qq/godot-gdscript-typed-vm/modules/gdscript/gdscript_analyzer.cpp:3354:31

Full log - Leak.txt

A small newbie question, will this performance work on exporting as well? Or does it work only when run inside the editor? I'm guessing the performance will be the same after all after exporting?
Correct me if I'm wrong.

A small newbie question, will this performance work on exporting as well? Or does it work only when run inside the editor? I'm guessing the performance will be the same after exporting?
Correct me if I'm wrong.

It should be even faster after exporting.

Right off the bat, I'm getting an error assigning the result of get_children to an array:
var bun = $Trail.get_children()
ERROR: Assignment of arrays of incompatible types.
at: _assign (core/array.cpp:151)
I also get bizarre results from converting get_child_count to a string. I guess I shouldn't open issues yet, since this hasn't been merged yet?

I also get bizarre results from converting get_child_count to a string. I guess I shouldn't open issues yet, since this hasn't been merged yet?

Does this only happen after you merge this or before too? If it happens on current master just open a new issue.

Does this only happen after you merge this or before too? If it happens on current master just open a new issue.

Only after merging this pull. The same project works fine on master.

I solved the issues reported here, except for the leak. This will need some investigation (I think the last commit is the culprit, but if I remove that I get crashes instead, which is worse).

I'm still getting a crash on opening a project (just with this pull).
https://dpaste.com/BM8VLAN7A

@duane-r

I'm still getting a crash on opening a project (just with this pull).
https://dpaste.com/BM8VLAN7A

This is hard for me to debug without a reproduction project.

https://dpaste.com/BM8VLAN7A

This is hard for me to debug without a reproduction project.

I've trimmed it down quite a bit, but it's still not ideal. This will crash on opening with the pull, but open normally with master.
crash-01.zip

@duane-r thanks. This was actually a pre-existing bug, this PR just exposed it. I included a fix anyway.

Regarding the leak I'm still not sure what's the issue. I've had some trouble with lsan build not reporting the proper source location. I think I'll leave it like this for now and check it again later, since I'm a bit burned out by this code and I want to focus on other tasks.

I tried to create minimal project with leak, but each time when I modify script, then editor crash(this crash is also present in master #43031)

I also have no idea how to fix the CI issue.

The compiler is running out of heap memory, so we need to either get access to more memory, or reduce our memory usage.
Some tips from MSDN: https://docs.microsoft.com/en-us/cpp/error-messages/compiler-errors-1/fatal-error-c1060?view=vs-2019
For GCC we could try without -pipe on CI, but that would slow down builds. Or with -j1 instead of -j2, but same issue.
One promising option from the MSDN tips is to try to split the file into several files, that might be worth considering? If a single file makes us run out of heap memory on CI it's definitely a flag that this file is a resource hog (and even if we work it around for CI builds it might fail for users with lower end setups / their own CI).

One promising option from the MSDN tips is to try to split the file into several files, that might be worth considering?

The problem is that the file is pretty much a single jump table, I'm not sure if it can be split. I could try to move the rest of the code to another file, if that could accomplish something.
Given that, I added a commit splitting it in 3 files to test with the CI

It seems like it might not just be the CI's hardware resources (2 cores, 7 GB RAM) to blame, as I seem to hit a similar issue when compiling locally on an i7-8705G with 16 GB RAM.
It builds just with target=debug, but when using target=release_debug (the one which fails on CI for GCC and MSVC), the linking step seems to take ages (still going locally after 20 min) and uses 5 GB of RAM.

I can confirm that the current master branch (a4f70d7e6cb2b83f152717a69c9c042dd9424fc9) builds and links fine with target=release_debug, so the issue is triggered by this PR.

So I did a quite big change here to improve the compilation. Essentially I'm moving code that was inlined multiple times inside every instruction to a single place before every instruction. This decreases the work that the compiler needs to do by a good margin. It also reduces binary size a bit.
This should not have any significant impact in performance, but it also allow us to optimize the addressing modes in the future.

So the latest iteration seems to work for all platforms but MSVC for tools=no target=release.
This build takes 4 hours (!) to generate the obj file for gdscript_vm.cpp on GitHub Actions, and I can reproduce this same issue locally with VS 2019 (didn't wait to see how long it would take on my own machine, but more than 40 min in any case).

There are two problems with this PR

I don't see any situation where you want buffering and not accumulation, or where you would want to turn off accumulation in an OS.
the regular input_event function that was separate from accumulate exists because users often submit custom input events that they expect to take place immediately. Merging both breaks this.

So unfortunately I'll be leaving this here for a while. I'm not sure what's causing the compilation issue and I have no idea how to investigate that (tried some tools like vcperf but couldn't figure it out).
reduz will make a change in Variant that will allow me to reduce this code by a good amount, by removing the need of specific operator instructions (which are almost half of instructions currently). That will hopefully bring the build time down to something manageable.
I also need to change the disassembler to follow my latest changes.
Since this is not good to merge as is, I'll keep it as a draft for now.

Would be better to have some form of JIT compilation?

Wouldn't it be better to have some form of JIT compilation? Even though the performance gain is ok(ish) it can be better. Performance is a major problem for GDScript.

Because JIT isn't allowed on ios devices
On Wed, Nov 4, 2020, 6:14 PM SaberToothObject<EMAIL_ADDRESS>wrote:

Wouldn't it be better to have some form of JIT compilation? Even though
the performance gain is ok(ish) it can be better. Performance is a major
problem for GDScript.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/godotengine/godot/pull/43004#issuecomment-722043873,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABBEIS2XNZW2UHOV3AKC66TSOHU6FANCNFSM4S3F4KIA
.

What about those who have no intention of developing for IOS? For me, I strictly develop games for PC because I hate the mobile platform in general.

Please stay on topic, this PR is not about JIT.

Closing in favor of #43725.


Launching the theme editor can reset the current theme

Describe the bug / feature
When launching the themed.p64 editor, it will default to the last 'Custom' editor session rather than the current theme. This can override the desktop theme in unexpected ways.
Forum post:

... I went on a bit of an expedition and running Themed from FileNav blacks out the entire theme! ...
-- Decidetto

To Reproduce
Steps to reproduce the behavior:

From the Picotron menu (top-left), launch System Settings.
Select 'Custom' and edit the custom theme colours (e.g. add lots of black). Set as Default. Close theme editor.
Now in System Settings, select a new default theme- e.g. biz. Close System Settings.
Using the file browser or Terminal, launch /system/apps/themed.p64
The old Custom theme is loaded rather than the current theme. This changes all the desktop colours. Closing the editor doesn't reset the theme.

Expected behavior
On launching the theme editor, the current theme colours should be loaded- not the last editor session.
Software (please complete the following information):

OS: macOS
Version: v0.1.0b

still on v0.1.0e

Re-tested with release v0.1.0g on macOS. Issue still exists.


fix(middleware): Prevent include on json requests

This PR to only include if request does not expect JSON.
I'm not using $request->excpectsJson or $rquest->wantsJson to work with Livewire (because Livewire only set content-type header to json.)

HI @gaetan-hexadog thanks for your PR. But I can't merge it like this, cause it would make ajax request not to be profiled anymore...

Fair enough. How can we keep ajax requests being profiled without adding the html ling at the end of the response then?

I'll have a look at this the next days...

@gaetan-hexadog as the GUI repo is not really maintained any longer and PRs will not get merged, I for now just recommend to remove or comment out the echo '<a href ... in the public/vendor/xhprof/external/footer.php(19) by hand. I'll point that out in the README...


Can't find interaction point 0

Getting the error Can't find interaction point 0 when I run CornelisRefine

Seems to be coming from here

I think it might be an issue with concurrency, and when the interaction point gets inserted in to the interaction points map in BufferStuff:
data BufferStuff = BufferStuff
  { bs_agda_proc  :: Agda
  , bs_ips        :: Map InteractionId (InteractionPoint Identity)
  , bs_ip_exts    :: Map InteractionId Extmark
  , bs_goto_sites :: Map Extmark DefinitionSite
  , bs_goals      :: DisplayInfo
  , bs_info_win   :: InfoBuffer
  , bs_code_map   :: LineIntervals
  }
  deriving Generic

It also may be that the interaction point state is getting clobbered somehow? If I do CornelisLoad and then CornelisRefine immediately before CornelisLoad has finished, refine seems to work (kind of like buffering a jump in a video game lol)


Include indication of location accuracy

Is your feature request related to a problem? Please describe.
N/A
Describe the solution you'd like
Use Location.getAccuracy() (https://developer.android.com/reference/android/location/Location#getAccuracy()) to store location accuracy alongside coordinates, and transmit to server.
Describe alternatives you've considered
N/A
Additional context
N/A

Resolved in https://github.com/StAResComp/sifids/pull/157
Note necessary changes on server side have not yet been made.


Make srflx gathering configurable

@masterada @trivigy
We need to make srflx gathering only do the 'default' interface by default I think.
While not spec-compliant I have gotten feedback from multiple people about speed regressions. This wouldn't be a problem if we had Trickle ICE from day one, but lots of people have setup their signaling already.
I say we make configurable, and maybe when we do /v3 we can roll back to the 'all interface' behavior.

I propose to introduce a DefaultOnly policy and FullSrflx policy. Don't care about the naming. This way it will also allow us to continue testing and improving the speed of complete server reflexive gathering while there is a standard default-only functionality to address speed issues for the immediate future.

Is this still an issue after https://github.com/pion/ice/pull/56?
Or maybe gather only the default if trickle is false - if some needs all, they should implement trickle (one less config to deprecate in v3 :) )

@masterada it is still a significant issue on my end. I cannot run any of my unittests because of how long it takes to establish each connection. My p2p library has a significant churn of establishing and dropping connections. This collect all really impacts it, especially since due to BUNDLE really only the primary candidates ends up being used anyway.

@trivigy What does slow mean? Is it over 5 seconds? How fast do we want this? Asking because if its over 5 seconds there should still be something slowing it down. If its 5 seconds maybe we can decrease the timeout to 2/3 seconds in https://github.com/pion/ice/blob/a58a281d3a851399f491db2f8815917ea6f46d68/gather.go#L233
Or we could also use different timeout for trickle/non-trickle. Im not against collecting only from primary interface, just looking at alternatives for the full picture :)

@masterada I am with you on making sure to address everyone's concerns. That is why my proposal was to simply add a special type policy. In general I don't have the same issue with chromium which does trickle. I should spend the time and fine the code in the chromium source to see exactly what they are doing but it is much much faster than pion.
In terms of speed, and since I made the it parallel gathering, it is exactly 5s. A simple unittest I have that does 1:1 establishment takes 10.3s. Which means it spends 5s per each connection startup. That is a crazy amount of time. With the old "default only" functionality it took 0.06s. Even if we decrease the timeout to 1s, it will still take about 2s for a simple tests. Those are really not production speeds.
I think the only way to address this is to create a special time policy for now until we keep improving the ice process to equal the chromium performance. Then we can remove it all together.

I see, thanks for the details. That really is a big difference :)
For the tests i suggest you check out these (it wont help in general, but might help you)
vnet: https://github.com/pion/transport/issues/13
dummy stun server: (need to find the link, writing from mobile :D )


Add validator on schema

Coverage remained the same at 100.0% when pulling 81941064dbd83e37764dbab5531d7f26359aa8cd on addValidatorOnSchema into e84cc8b5c8f819dcc21150fea9a02b96fb54a769 on master.

@jacekk Thanks alot for your CR.


Rename nuget feed url key in Nuget.config to something other than NuGet.org

When Nuget.config contains a feed with key named Nuget.org VS nuget tooling seems to disable the public nuget feed due to a known issue : http://nuget.codeplex.com/workitem/4397.
We have seen many people run into this issue. Solution will be to rename the key name in all Nuget.config files to something other than Nuget.org.

The CI needs to be updated before this is done

Do we have redirect even for Nuget.org feed? I thought we redirect only the myget feed, no?

I'm pretty sure we have it for both. It's easy to check tho

Let me check this. I can take this work item.

I verified we don't hack the Nuget.org feed. We should be good to make the change.
$packageShareName = "dev"
$branch = "%teamcity.build.branch%"
if($branch -eq "release") {
$packageShareName = "release"
}
$config = "

<add key="KoreBuild" value="<DropFolder>\Universe\${packageShareName}\latest\build" />
<update key="aspnetvnext" value="<DropFolder>\latest-packages\${packageShareName}" />

"
[IO.File]::WriteAllText("$env:AppData\NuGet\NuGet.redirect.config", $config)


[DRAFT] RFC: i18n

Feature Name: i18n overhaul
Start Date: 2018-09-20
RFC PR:

Summary
Overhaul of the i18n module by:

Supporting multistore scenarios & multilanguage stores
Move all the translations into one JSON file inside the theme, and introduce core/modules/extensions translation keys scoping
Add a mechanism for modules to expose translations keys & add warnings for missing translations keys for enabled languages in development mode
BONUS: better translation key naming

Motivation
As of today, we only support multistore scenarios.
It's impossible to know which translation key is exposed by a module or an extension and it's hard to find them because they are all mixed up.
We have to merge files and convert them from CSV files.
As the translations keys are not in the theme file, I don't know what are the default translations and I don't know which languages are supported. If I want to translate my store in Latin, I have to implement ALL core translations keys.
Translations keys can clash: if I add an extension with an existing core translation key I can override it without knowing it
Guide-level explanation
Example of the new translation files:
{
  "core": {
    "ok": "OK",
    "remove-compare": "Remove from compare",
    "resetting-password": "Resetting the password ...",
    "error-reset-password-email": "Error while sending reset password e-mail"
  },
  "offline-order": {
    "confirm-order-offline": "Your order has been confirmed but you're offline"
  },
  "google-analytics": {
    "cookie-google-analytics": "This website uses Google Analytics"
  },
  "home": {
    "home-page": "This is our home page"
  },
  "about": {
    "introduction": "Introducing our team"
  }
}

How to use them?
t('core.ok')
Each time you add a page, a module or an extension, you add the scoped section inside the JSON file and you add the translations exposed by the module/extension.
Reference-level explanation
Drawbacks
The users who wants to upgrade will have to migrate their CSV files to the new format.
Rationale and alternatives
Prior art
Unresolved questions

Totally agree that it's a good way, now it's such a mess
Regarding extension scoping - extensions will also be a modules so I'm wondering if the separation is needed. H

extension/modules -> they work the same way so if the extension concept disappear, it doesn't impact this :)

I understand this need and why this RFC is proposed but I always was a fan of simple solutions - and these abstract labels are not something I like. The code is a little bit less readable and writing any new feature you must remember to add the translation strings. In exchange you have simpler and more elegant translation files.
For sure, if we decide to implement this, we should have backward compatibility with config option for current users.
I would like to hear others opinion on that as this is pretty massive change @Igloczek @phoenix-bjoern  @qiqqq @mercs600

I haven't finished writing it :sweat_smile:
I hope you're kidding about translations keys. Actual translations keys are unmanageable because some of them takes 3 lines and they'll break with every typo.

And we have to understand users will adapt those strings for their stores, so it's misleading for them if they have a string which translates to another. It's our job to write understandable translations keys (we have ~50 strings in the core, it should be feasible).

I like this idea, for example, Redmine and other RoR based apps translations are done in the same way and I really enjoy working with it.

OK folks, If You like to go with this idea we can do it. The only thing is how to migrate automatically old translation files to new ones?
 Probably just mapping (kind of hash or ... translation file ;P) the old identifiers to new ones + find & replace in files automatically in the theme is a solution.
Or some other way to keep the themes update'able?

How to load only required languages on the site and avoid loading all available files from core/i18n/resource/i18n?

Another thing. After update to 1.3 translations don't work. What are the requirements for them?
My translations are in src/themes/[MYTHEME]/resource/i18n/*.csv. In config it is set
"i18n": {     "defaultCountry": "AT",     "defaultLanguage": "DE",     "availableLocale": ["de-DE", "de-AT"],     "defaultLocale": "de-AT",     "currencyCode": "EUR",     "currencySign": "€",     "dateFormat": "HH:mm D.M.YYYY",     "fullCountryName": "Austria",     "fullLanguageName": "German"   },
But I see the messages in EN only.


Feature Request: Another Type of Channel

Based on this opened discussion on laravel/framework repo https://github.com/laravel/framework/discussions/35569#discussion-59436
How could we implement something similar to that use case?
We want to be able to broadcast to some filtered subscribers.
But the challenge would be
How could lar-websockets determine which subscribed users to broadcast message to.
I checked this file https://github.com/beyondcode/laravel-websockets/blob/89ace081399f197de46c9b5e7466611da62f4add/src/WebSockets/Channels/PresenceChannel.php
And im thinking we could implement another type of channel
Maybe something like DataChannel or QueryChannel
This channel should collect some initial user data when they subscribe
E.g
{
    "userdata": {
        "age": 20,
        "gender": "female"
    }
}

Then during onMessage
There should be an instruction from the broadcaster for which subscribed users to receive the message
E.g
{
    "message": "...",
    "conditions": "Send to subscribed users having age from 20-25 and gender is equal to female"
}

Then based on the instructions received from the onMessage
The message could be sent this way:
array_map(function ($conn){
    if($conn->gender == "female" && in_array($conn->age, [20, ..., 25])){
        // send the message
    }
}, $connections);

Is this a worthy feature we can try to implement?

I am also thinking of an alternative way to pass this limitation.
using Presence channel as an example which stores subscribers info
then before we broadcast a message we could send a request to getUserIds of users subscribed to the message channel
for each userId then filter users that wont be receiving the message,
then message can be broadcasted with array of filtered userId and websocket server should only broadcast to users which id is in the broadcast userIds array.
Demonstration:
public function broadcastFor(array $userIds){
    return User::whereIn('id', $userIds)->whereIn('age',  [20, ..., 25])
    ->whereGender('female')
    ->get('id')->toArray();
}

laravel should provide broadcastFor method with userIds argument
laravel should have made a request to getUserIds of the message channel
From the websocket server message should be broadcasted this way
array_map(function ($conn){
    if(in_array($conn->user_id, $userIds)){
        // send the message
    }
}, $connections);

Would this be a good idea?

I think this would be a worthy feature.
FTR it's possible to do it the other way around, with existent software : instead of filtering server-side, you subscribe each user to all channels that might concern them. I have worked on a websocket-synced calendar : if a user subscribes to a given day, you add them to said day, and also corresponding week, month, plus previous or next month if applicable (calendar overlaps between two months). I think it is generally possible to determine the subscribing conditions in advance. So in your case, you'd be subscribing to 6 channels.
Your solution would be more resource-efficient though. And would account for the times when you cannot determine these conditions.
We might have an advantage here over socket.io, because it's all PHP, so extracting the conditions from the existing software might be easier.

Hello @rennokki
Based on my recent research i found out that we can securely serialize php functions for execution on other server using this library https://github.com/opis/closure
For example we can have a method that accepts a closure that will compute if a connection can receive the broadcast message.
broadcast(new UserCreated)->onlyTo(function($connection) {
    return in_array($connection->age, [20, 21, ..., 25]) && $connection->gender == 'female';
});

The onlyTo method is expected to serialize the closure and send along to the websocket server. then the websocket should unserialize the closure and invoke the method by passing argument of each connection to the closure.
Serialization from laravel server:
use Opis\Closure\SerializableClosure;

SerializableClosure::setSecretKey(config('broadcast.connections.pusher.secret'));

// Here you can serialize closures
$serializedOnlyTo = serialize(new SerializableClosure($onlyTo));

Unserilization from websocket server:
use Opis\Closure\SerializableClosure;

SerializableClosure::setSecretKey(config('websockets.apps.0.secret'));

// Here you can fetch closures from remote and unserialize them
$onlyTo = unserialize($serializedOnlyTo);

array_map(function ($conn){
    if($onlyTo($conn)){
        // send the message
    }
}, $connections);

Please let me no if its a good idea and i will try to implement the feature using this way.

It's an interesting approach, but I thought we could have the code in a predefined folder, like app/Websockets, that the WS server would read upon starting. With some design pattern magic on top of that maybe we'd cover all use cases ? (I don't know enough of design patterns tbh).


[linux] On-screen keyboard doesn't appear on Ubuntu21 (Wayland)

I've tried to use an on-screen keyboard, but it doesn't appear on Ubuntu21 (Wayland default). I've confirmed that I could use the on-screen keyboard with another Wayland sample app (not flutter app) in the same environment.
Sample code
See: https://github.com/flutter/flutter/issues/67785#issuecomment-707033613
Flutter SDK version
Flutter (Channel master, 2.3.0-2.0.pre.239, on Ubuntu 21.04 5.11.0-17-generic, locale en_US.UTF-8)
Flutter version 2.3.0-2.0.pre.239 at /opt/flutter
Upstream repository https://github.com/flutter/flutter.git
Framework revision 7c5857d3b0 (66 minutes ago), 2021-05-16 17:21:18 -0700
Engine revision 193be59942
Dart version 2.14.0 (build 2.14.0-edge.a527411e5100a0a4f48c4009087a1b988aa784af)
Related issues

https://github.com/flutter/flutter/issues/67785

Hi @HidenoriMatsubayashi
Thanks for filing the issue!
Ubuntu 21.04 is so buggy when attempting to reproduce the whole OS glitches for me. I will fix the setup issue and reproduce this tomorrow. Sorry for the inconvenience
Thank you

Thank you for your comment.

Ubuntu 21.04 is so buggy when attempting to reproduce the whole OS glitches for me.
Yes, Ubuntu 21.04 isn't still stable now. I also couldn't break down the issue into tiny parts in order to find the real cause. But, the biggest difference between Ubuntu 21 and Ubuntu 20 is that Wayland backend or x11 backend.

Hi @HidenoriMatsubayashi
I just tried on the updated 21.04 setup, the on-screen keyboard pops up on the latest master channel.

Preview

<img src="

" height="450" />

taha@taha-Lenovo-ideapad-510S-14IKB:~/StudioProjects/master_flutter$ echo $XDG_SESSION_TYPE
wayland
taha@taha-Lenovo-ideapad-510S-14IKB:~/StudioProjects/master_flutter$

neofetch
taha@taha-Lenovo-ideapad-510S-14IKB:~/StudioProjects/master_flutter$ neofetch
            .-/+oossssoo+/-.               taha@taha-Lenovo-ideapad-510S-14IKB
        `:+ssssssssssssssssss+:`           -----------------------------------
      -+ssssssssssssssssssyyssss+-         OS: Ubuntu 21.04 x86_64
    .ossssssssssssssssssdMMMNysssso.       Host: 80UV Lenovo ideapad 510S-14IKB
   /ssssssssssshdmmNNmmyNMMMMhssssss/      Kernel: 5.11.0-17-generic
  +ssssssssshmydMMMMMMMNddddyssssssss+     Uptime: 42 mins
 /sssssssshNMMMyhhyyyyhmNMMMNhssssssss/    Packages: 1634 (dpkg), 7 (snap)
.ssssssssdMMMNhsssssssssshNMMMdssssssss.   Shell: bash 5.1.4
+sssshhhyNMMNyssssssssssssyNMMMysssssss+   Resolution: 1920x1080
ossyNMMMNyMMhsssssssssssssshmmmhssssssso   DE: GNOME 3.38.4
ossyNMMMNyMMhsssssssssssssshmmmhssssssso   WM: Mutter
+sssshhhyNMMNyssssssssssssyNMMMysssssss+   WM Theme: Adwaita
.ssssssssdMMMNhsssssssssshNMMMdssssssss.   Theme: Yaru-dark [GTK2/3]
 /sssssssshNMMMyhhyyyyhdNMMMNhssssssss/    Icons: Yaru [GTK2/3]
  +sssssssssdmydMMMMMMMMddddyssssssss+     Terminal: gnome-terminal
   /ssssssssssshdmNNNNmyNMMMMhssssss/      CPU: Intel i5-7200U (4) @ 3.100GHz
    .ossssssssssssssssssdMMMNysssso.       GPU: Intel HD Graphics 620
      -+sssssssssssssssssyyyssss+-         Memory: 4137MiB / 7794MiB
        `:+ssssssssssssssssss+:`
            .-/+oossssoo+/-.

taha@taha-Lenovo-ideapad-510S-14IKB:~/StudioProjects/master_flutter$

flutter doctor -v
[✓] Flutter (Channel master, 2.3.0-2.0.pre.253, on Ubuntu 21.04
    5.11.0-17-generic, locale en_US.UTF-8)
    • Flutter version 2.3.0-2.0.pre.253 at /home/taha/Code/flutter_master
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision bac5a0db3b (5 hours ago), 2021-05-18 10:19:03 +0800
    • Engine revision 3cda7f5807
    • Dart version 2.14.0 (build 2.14.0-119.0.dev)

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    • Android SDK at /home/taha/Code/SDK
    • Platform android-30, build-tools 30.0.3
    • ANDROID_HOME = /home/taha/Code/SDK
    • Java binary at: /home/taha/Code/android-studio/jre/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.8+0-b944-P17168821)
    • All Android licenses accepted.

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

[✓] Linux toolchain - develop for Linux desktop
    • Ubuntu clang version 12.0.0-1ubuntu1
    • cmake version 3.18.4
    • ninja version 1.10.1
    • pkg-config version 0.29.2

[✓] Android Studio (version 4.2)
    • Android Studio at /home/taha/Code/android-studio
    • Flutter plugin version 56.0.2
    • Dart plugin version 202.8488
    • Java version OpenJDK Runtime Environment (build 11.0.8+0-b944-P17168821)

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

[✓] Connected device (2 available)
    • Linux (desktop) • linux  • linux-x64      • Ubuntu 21.04 5.11.0-17-generic
    • Chrome (web)    • chrome • web-javascript • Google Chrome 90.0.4430.212

• No issues found!

Thank you for checking. It looks like my environmental problem. I'll close the issue. Thank you so much!


fix: editor should not setModelMarkers when allDiagnostics is empty

When set setDiagnosticsOptions with {
noSemanticValidation: true,
noSyntaxValidation: true,
noSuggestionDiagnostics: true,
} to disable default diagnostics,  but  my custom modelMarkers will be cleaned by default diagnostics


When serving as a win local service, A maximum of 27 winword.exe files can be started, using version 1.1.8

将jar包打成windows服务，最多可以启动winword.exe 进程27个，但是直接运行就可以无限启动winword.exe 进程，我怎么才可以在win服务中无限启动

Unfortunately, I cannot read this question. Normally, there should only one process being executed at a time.


Post Callback

Using CordovaHTTP to post to an OAuth endpoint in attempt to receive an access token. In most cases it works fine, but in some cases the connection hangs and no success or error callback is ever called. This seems to happen primarily on the first post attempt after bringing the app back from the background. Has anyone else experienced a similar issue?

@sdoughty did you fix this problem ? Could you show me how to error check post response ?


Add a render method for the Widget trait that takes by reference instead

Description
This PR adds Terminal::render_widget_ref() and (Stateful)Widget::render_ref() functions that take Widgets by reference instead of taking ownership. This allows to call render on a Trait object with unknown size with is useful where the exact object implementing Widget is unknown or depends on some kind of condition. I decided not to change the render_widget() and render() signatures as to keep backwards compatibility but sadly all custom widgets are still broken because they are now required to implement render_ref() instead. This is just a proof of concept PR and I would appreciate any help on getting it up to the standards since this is my first time contributing to a big rust project. I made this to fix issue #526 I posted yesterday and I'm already using this PR in a project of mine.
Checklist

[x] I have read the contributing guidelines.
[ ] I have added relevant tests.
[ ] I have documented all new additions.

Super helpful feature. I'm looking for a way of rendering a dynamic widget.

Would definitely like to see this feature merged! Would make my life so much easier, right now you have to work around so much limitations in that regard.


This is an example how we are going to be merging into master

This is an example how we are going to be merging into master. Someone merge this please.

hello world!


Updated expired SAS token to allow downloading VHD files.

https://github.com/Azure/arc_jumpstart_levelup/issues/14

Tested deployment using updated SAS token and able to download VHD images and setup level up environment.


Use  element rather than role. Provide a label

Rather than adding a role to a <div> let's just use a <nav> element. aria-label added to give screen readers something to distinguish it by.

👍  +1

what is the?

Pretty sure this was handled already. So I'm going to close this PR


Optimizing TreeMap clone

The current implementation of Clone for TreeMap is:
impl<V: Clone> Clone for TreeMap<V> {
    fn clone(&self) -> Self {
        self.iter()
            .map(|(key, value)| (Box::from(key), value.clone()))
            .collect()
    }
}

It's possible this could be made more efficient with a custom function that recurses down to leaves and then clones and overwrites each inner node individually. Needs a benchmark to see.

This was completed by Gabriel in #28, going to resolve

Leaving a note, the implementation of this will need to be changed for the leaf node linked list, since all the sibling pointers would need to update.


Animated screenshot has disappeared from the readme / repo frontpage

The image is not found, it was in the following URL but has broken:
https://camo.githubusercontent.com/14cb88182080bafc71bc1edb74b677282ae58d10/68747470733a2f2f646c2e64726f70626f7875736572636f6e74656e742e636f6d2f752f3536363536302f736c61636b2e676966

fixed! thanks for the reminder.


Better When You're Gone by David Guetta unsupported.

Check if issue with swaglyrics or whether song lyrics unavailable on Genius.

stripper -> David-Guetta-Better-When-Youre-Gone

added support


[WiP] security: draft bug bounty reward program.

This PR drafts the documentation and an accompanying set of Docker images for a future Envoy bug
bounty program.
This PR shold not be merged until we have program funding.
The starting point is a fairly conservative Envoy use case, over time we will grow this.
Signed-off-by: Harvey Tuch<EMAIL_ADDRESS>

CC @envoyproxy/security-team

CC @sirdarckcat

Looks amazing! I think still has some deprecated fields.
/wait

Nice. LGTM though needs another master merge. LMK when this is ready for final review.
/wait

/assign @antoniovicente

This is ready for review Google-side, which is the next actionable thing here.

@sirdarckcat I've resolved or responded to comments, any further feedback? Thanks.


[ci] Manually roll Flutter master

Rolls to the version of Flutter that started enforcing a min iOS version of 11.0 for plugins.
Adds deprecation suppression for pre-iOS-11 codepaths (and in one case a new non-deprecated codepath where the only codepath was deprecated) in plugins that need it.
Fixes https://github.com/flutter/flutter/issues/103912
Pre-launch Checklist

[x] I read the Contributor Guide and followed the process outlined there for submitting PRs.
[x] I read the Tree Hygiene wiki page, which explains my responsibilities.
[x] I read and followed the relevant style guides and ran the auto-formatter. (Unlike the flutter/flutter repo, the flutter/plugins repo does use dart format.)
[x] I signed the CLA.
[x] The title of the PR starts with the name of the plugin surrounded by square brackets, e.g. [shared_preferences]
[x] I listed at least one issue that this PR fixes in the description above.
[x] I updated pubspec.yaml with an appropriate new version according to the pub versioning philosophy, or this PR is exempt from version changes.
[x] I updated CHANGELOG.md to add a description of the change, following repository CHANGELOG style.
[x] I updated/added relevant documentation (doc comments with ///).
[x] I added new tests to check the change I am making, or this PR is test-exempt.
[x] All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel on Discord.

We should make sure to sweep for the pragma, not just @available, when we do the dead code removal.


added readme header and footer files

I'm adding these files to the local repo so we don't need to depend on external hosting for #34

Codecov Report

Merging #35 into master will increase coverage by <.01%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master      #35      +/-   ##
==========================================
+ Coverage   31.12%   31.12%   +<.01%
==========================================
  Files          48       48
  Lines       11920    11919       -1
==========================================
  Hits         3710     3710
+ Misses       8210     8209       -1

Impacted Files
Coverage Δ

lib/facil/http/http_internal.h
0% <0%> (ø)
:arrow_up:

Continue to review full report at Codecov.

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


feat(errors): introduce internal errors package

related to #3581

Related to https://github.com/portainer/portainer/issues/2673

closing as we decided to go in a different direction


Mopidy-Iris: 3.21.3 -> 3.23.0

Motivation for this change
Things done

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

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

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

@GrahamcOfBorg  build mopidy-iris

Success on x86_64-linux (full log)
Attempted: mopidy-iris
Partial log (click to expand)
shrinking RPATHs of ELF executables and libraries in /nix/store/7pc4sh0j5zyi1y165qb2197asplyk3n8-Mopidy-Iris-3.23.0
strip is /nix/store/1hi76hr87bd1y1q1qjk0lv8nmcjip1c8-binutils-2.30/bin/strip
stripping (with command strip and flags -S) in /nix/store/7pc4sh0j5zyi1y165qb2197asplyk3n8-Mopidy-Iris-3.23.0/lib
patching script interpreter paths in /nix/store/7pc4sh0j5zyi1y165qb2197asplyk3n8-Mopidy-Iris-3.23.0
head: error writing 'standard output': Broken pipe
head: error writing 'standard output': Broken pipe
head: error writing 'standard output': Broken pipe
/nix/store/7pc4sh0j5zyi1y165qb2197asplyk3n8-Mopidy-Iris-3.23.0/lib/python2.7/site-packages/mopidy_iris/system.sh: interpreter directive changed from "/bin/bash" to "/nix/store/dkh7l9a4sx7zqh8riqbj3z21sz25p8xy-bash-4.4-p23/bin/bash"
checking for references to /build in /nix/store/7pc4sh0j5zyi1y165qb2197asplyk3n8-Mopidy-Iris-3.23.0...
/nix/store/7pc4sh0j5zyi1y165qb2197asplyk3n8-Mopidy-Iris-3.23.0

Success on aarch64-linux (full log)
Attempted: mopidy-iris
Partial log (click to expand)
shrinking RPATHs of ELF executables and libraries in /nix/store/3z1kgmsa4rab9zm04rbywrbhf54nw158-Mopidy-Iris-3.23.0
strip is /nix/store/zrs21zqcchgyabjf4xfimncdq16njizc-binutils-2.30/bin/strip
stripping (with command strip and flags -S) in /nix/store/3z1kgmsa4rab9zm04rbywrbhf54nw158-Mopidy-Iris-3.23.0/lib
patching script interpreter paths in /nix/store/3z1kgmsa4rab9zm04rbywrbhf54nw158-Mopidy-Iris-3.23.0
head: error writing 'standard output': Broken pipe
head: error writing 'standard output': Broken pipe
head: error writing 'standard output': Broken pipe
/nix/store/3z1kgmsa4rab9zm04rbywrbhf54nw158-Mopidy-Iris-3.23.0/lib/python2.7/site-packages/mopidy_iris/system.sh: interpreter directive changed from "/bin/bash" to "/nix/store/6vqgi9d49smsbr2qxra52yhipg0yxf9f-bash-4.4-p23/bin/bash"
checking for references to /build in /nix/store/3z1kgmsa4rab9zm04rbywrbhf54nw158-Mopidy-Iris-3.23.0...
/nix/store/3z1kgmsa4rab9zm04rbywrbhf54nw158-Mopidy-Iris-3.23.0