Output port as argument in execute method

Hello Ivan,
First of all, thank you very much this repository. Your project perfectly resembles the components that are described in the presentation of Robert C. Martin about clean architecture (https://youtu.be/Nsjsiz2A9mg).
We've set up our first application using this architecture (the version before the mediator was introduced). One of the things we're having discussions about is that it feels a bit magic that the controller executes the use case and then gets the response from the presenter. There is no coupling between the use case interface and the output port interface, which is probably by design, but makes it a bit vague to use. You have to assume that the result of the use case is written to the presenter.
Another approach that we've discussed here is to pass the output port as an argument to the execute method of the use case (considering that we don't use the mediator pattern for executing use cases). This makes explicit that the use case uses the output port to write the results, but of course, couples the use case interface to the output port interface.
What are your thoughts on this?

Hey @dotarj,

First of all, thank you very much this repository. Your project perfectly resembles the components that are described in the presentation of Robert C. Martin about clean architecture

Good to hear that! I fell like mission accomplished :)

There is no coupling between the use case interface and the output port interface, which is probably by design, but makes it a bit vague to use.

Just to clarify there is a coupling set at the DI layer, both Controller and the UseCase instances should use the same Presenter object, The code is similar to this:
services.AddControllers().AddControllersAsServices();
services.AddScoped<DepositPresenter, DepositPresenter>();
services.AddScoped<IOutputPort>(x => x.GetRequiredService<DepositPresenter>());

Another approach that we've discussed here is to pass the output port as an argument to the execute method of the use case (considering that we don't use the mediator pattern for executing use cases)

@unclebob is passing the Presenter as an argument in his sample project, so it should be adherent with his principles:
public interface CodecastSummariesInputBoundary
{
  void summarizeCodecasts(User loggedInUser, CodecastSummariesOutputBoundary presenter);
}

My thoughts are that I prefer Constructor Injection instead of Method Injection when it is possible just because I used to to this way.
Considering that you are working on a team that prefer "passing the presenter as an object", just stick to that because you are already far ahead on the software architecture. You can change it to the constructor injection when the magic behind fade away with time.

I think we will move to method injection as this makes the use case and output port relation a bit more explicit from the controllers perspective.
Thanks for the quick reply!


Load: Always prefer using the symPtr map

This pull request changes the behaviour of the usage of the symPtr map. It will now always try to use the symPtr map if a symbol is found, instead of only using it if a symbol can not be found in the binary. This fixes several issues relating to the runtime in multiple read binaries.

Hmmm, this actually seems to cause a problem for the existing examples. I'm not sure why that happens.


[MAS1.4.11] [Visual Requirements-File] Luminosity Ratio is less than 3:1 for highlighted outline with respective background colour for headers

Actual Result:
Luminosity Ratio is less than 3:1 for highlighted outline with respective background colour for headers i.e. New bot configuration, Open bot, Open recent, Open transcript, Close tab…etc
Expected Result:
Luminosity Ratio should be greater than or equal to 3:1 for highlighted outline with respective background colour for headers
Note: This issue exits for all headers under file menu
Repro Steps:
1.Open the Bot Framework V4 Emulator.
2.Navigate to File menu and select it
3.File menu gets opened
4.Navigate to the “ New bot configuration, Open bot, Open recent, Open transcript, Close tab…etc
5. Open 'Colour Contrast Analyser' application.
6. Verify Luminosity Ratio is less than 3:1 for highlighted outline with respective background colour for headers or not
User Impact:
Users with low vision or colour blindness needs that difference between contrast of text is always high.
Test Environment:
OS Build: Version 1903(OS Build 18362.239)
Application: Bot Framework V4 Emulator
Tool: Colour contrast Analyzer
MAS Reference Link:
https://microsoft.sharepoint.com/:w:/r/teams/msenable/_layouts/15/Doc.aspx?sourcedoc={6CA3BF14-2635-434A-832C-28DD9A18B9FC}&file=MAS 1.4.11 – Non-text Contrast.docx&action=default&mobileredirect=true&cid=c3837dea-3bb1-4c5a-9374-19ec384f14c6

This is another native feature that we have no control over. We would have to write a custom app menu to get around this.

Issue got fixed hence we are closing this bug.


[Docs] Wrong function name

RippleAndroid is actually Ripple

Thanks! I'm now working on a system to import Pull requests to the internal Facebook repo :)

Can you sign the CLA if you haven't already? https://github.com/facebook/react-native/blob/master/CONTRIBUTING.md#contributor-license-agreement-cla

Can you sign the CLA if you haven't already?
https://github.com/facebook/react-native/blob/master/CONTRIBUTING.md#contributor-license-agreement-cla

@mkonicek there was an issue with the bot, he already signed the CLA

Yup, says I signed it.

OK cool! I'm now working on a tool to import PRs into the Facebook Android codebase :)

@facebook-github-bot shipit


Upgrade the animation viewer for demo animations

This is related to https://github.com/cyberbotics/webots-animation-template/pull/3
The tests are done in the following repo:

https://github.com/lukicdarkoo/webots-example-visual-tracking
https://lukicdarkoo.github.io/webots-example-visual-tracking/

:eyes:

But I'm not sure if this problem only occurs on my repo:
https://stefaniapedrazzi.github.io/webots-animation-demo/demo/#tutorial_6
Because here seems correct:
https://lukicdarkoo.github.io/webots-example-visual-tracking/master/#visual_tracking


Strings on Soletta flows: Add overview of the string nodes on the top

Task Description
Page: https://github.com/solettaproject/soletta/wiki/Strings-on-Soletta-flows
Before talking about the build dependency and so on it'd be best to talk about what the string nodes are capable of, giving an overview of what they can do.
Dependencies
None

done


fix(view): several bugfixes

closes #657
closes #656
closes #655

Pull Request Test Coverage Report for Build<PHONE_NUMBER>1
Details

47 of 47 (100.0%)  changed or added relevant lines in 10 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.06%) to 82.347%

Totals

Change from base Build<PHONE_NUMBER>7:
0.06%

Covered Lines:
7030

Relevant Lines:
8537

💛  - Coveralls


Set filter operator to default "=" and show operator properly

#304  👈
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @thisisgoldman and the rest of your teammates on  Graphite


GitHub Enterprise seems to not support ...

Describe the bug
We have updated to the v1.6.3.
This newer version gives the following error
"message": "Field 'dependencyGraphManifests' doesn't exist on type 'Repository'"
We used the following command line options to disable licensing ( --disable-dependency-licensing --disable-dependencies) and got the same error.
We grabbed the GraphQL GRAPHQL_DEPENDENCY_INFO from dependency.py and got the same error calling the GraphQL API directly.
We compared the GitHub Cloud API (https://docs.github.com/en/graphql/overview/schema-previews) with the GitHut Enterprise API (https://docs.github.com/en/enterprise-server@3.6/graphql/overview/schema-previews).
GitHub Cloud API has a section called 'Access to a repositories dependency graph preview'.
GitHub Enterprise API does NOT have this section.
Are we correct in assuming this functionality has not been released for GitHub Enterprise yet?
Is this functionality required for dependabot policy functionality?
If it is, which GitHub Enterprise version will support 'Access to a repositories dependency graph preview'?
To Reproduce
Steps to reproduce the behavior:

Run action with dependabot enabled on GitHub Enterprise @3.6.2

Expected behavior
Dependabot policy functionality works as it already does on GitHub Cloud

@midwestKC-coder Thanks for sharing this, let me do some investigation around this before I give an answer to your question

@midwestKC-coder You are absolutely right. I had a chat with the Product Management team and they are looking into providing this API for GHES users.

@midwestKC-coder This issue will be fixed in an up coming GHES release


cmd: Fix issue reading string map type via config map

Description
As mentioned in below upstream issue, there is a discrepancy in viper
while reading string map string data type i.e. kv pair format was not
supported, only {"k":"v"} format is allowed. This commit is to wrap
GetStringMapString implementation to handle such case. This is backward
compatible change.
Relates https://github.com/spf13/viper/issues/911
Fixes https://github.com/cilium/cilium/issues/18328
Signed-off-by: Tam Mach<EMAIL_ADDRESS>Testing
Testing was done locally as per below

before
$ cat tmp/subnet-tags-filter
k1=v1,k2=v2%

/usr/lib/go-1.17/bin/go build -o /tmp/GoLand/___2go_build_github_com_cilium_cilium_operator github.com/cilium/cilium/operator #gosetup
/tmp/GoLand/___2go_build_github_com_cilium_cilium_operator --config-dir tmp/
level=info msg="Started gops server" address="<IP_ADDRESS>:9891" subsys=___2go_build_github_com_cilium_cilium_operator
level=warning msg="Running Cilium with \"kvstore\"=\"\" requires identity allocation via CRDs. Changing identity-allocation-mode to \"crd\"" subsys=config
...
level=info msg="  --subnet-ids-filter=''" subsys=___2go_build_github_com_cilium_cilium_operator
level=info msg="  --subnet-ids-filter=''" subsys=___2go_build_github_com_cilium_cilium_operator --> THIS IS EMPTY
level=info msg="  --synchronize-k8s-nodes='true'" subsys=___2go_build_github_com_cilium_cilium_operator
...
level=info msg="Cilium Operator  go version go1.17 linux/amd64" subsys=___2go_build_github_com_cilium_cilium_operator

after
/usr/lib/go-1.17/bin/go build -o /tmp/GoLand/___2go_build_github_com_cilium_cilium_operator github.com/cilium/cilium/operator #gosetup
/tmp/GoLand/___2go_build_github_com_cilium_cilium_operator --config-dir tmp/
level=info msg="Started gops server" address="<IP_ADDRESS>:9891" subsys=___2go_build_github_com_cilium_cilium_operator
level=warning msg="Running Cilium with \"kvstore\"=\"\" requires identity allocation via CRDs. Changing identity-allocation-mode to \"crd\"" subsys=config

...
level=info msg="  --subnet-ids-filter=''" subsys=___2go_build_github_com_cilium_cilium_operator
level=info msg="  --subnet-tags-filter='k1=v1,k2=v2'" subsys=___2go_build_github_com_cilium_cilium_operator --> THIS HAS CORRECT VALUE
level=info msg="  --synchronize-k8s-nodes='true'" subsys=___2go_build_github_com_cilium_cilium_operator
...
level=info msg="Cilium Operator  go version go1.17 linux/amd64" subsys=___2go_build_github_com_cilium_cilium_operator

cmd: Fix issue reading string map type via config map

@sayboras did we look at viper's marshaling functionality to accomplish this? https://github.com/spf13/viper#unmarshaling
https://sagikazarmark.hu/blog/decoding-custom-formats-with-viper/
This very well may not work, I'm just used to seeing Go librarys implement Marshal functions when having to deal with arbitrary text values.

did we look at viper's marshaling functionality to accomplish this? https://github.com/spf13/viper#unmarshaling https://sagikazarmark.hu/blog/decoding-custom-formats-with-viper/
This very well may not work, I'm just used to seeing Go libraries implement Marshal functions when having to deal with arbitrary text values.

:wave: I checked the custom marshall and unmarshall, however, it is nice apporach if we have a self-defined struct (e.g. config), which might not work in our case as we are getting value field by field.

Seems like enabling log.Fatal for these map string fields discovers one issue with kvstore-opt, conformance test failure here is related to this PR, I am taking a closer look now.

Force push to address the above comment from Louis
Also, I add hyphen, dot, and forward slash to allowed value as it's common to have tags like kubernetes.io/cluster/cluster-name:owned if cluster is created by eksctl.
Please find below the diff

diff before force push
diff --git a/pkg/command/map_string.go b/pkg/command/map_string.go
index 7fe473340b..decb024ad4 100644
--- a/pkg/command/map_string.go
+++ b/pkg/command/map_string.go
@@ -9,12 +9,13 @@ import (
 	"fmt"
 	"regexp"
 	"strings"
+	"unicode"

 	"github.com/spf13/cast"
 	"github.com/spf13/viper"
 )

-var keyValueRegex = regexp.MustCompile(`((\w+)=(\w+,))*((\w+)=(\w+))$`)
+var keyValueRegex = regexp.MustCompile(`([\w-./]+=[\w-./]+,)*([\w-./]+=[\w-./]+)$`)

 // GetStringMapString contains one enhancement to support k1=v2,k2=v2 compared to original
 // implementation of GetStringMapString function
@@ -44,7 +45,9 @@ func GetStringMapStringE(vp *viper.Viper, key string) (map[string]string, error)
 			}

 			// if the input is starting with either '{' or '[', just preserve original json parsing error.
-			firstIndex := firstNonSpaceCharIndex(s)
+			firstIndex := strings.IndexFunc(s, func(r rune) bool {
+				return !unicode.IsSpace(r)
+			})
 			if firstIndex != -1 && (s[firstIndex] == '{' || s[firstIndex] == '[') {
 				return v, err
 			}
@@ -75,19 +78,3 @@ func isValidKeyValuePair(str string) bool {
 	}
 	return len(keyValueRegex.ReplaceAllString(str, "")) == 0
 }
-
-// firstNonSpaceCharIndex returns the first non-space character index
-func firstNonSpaceCharIndex(str string) int {
-	for i := range str {
-		if !isSpace(str[i]) {
-			return i
-		}
-	}
-	return -1
-}
-
-// isSpace returns true if input is space
-// this is same as the function used in json package
-func isSpace(c byte) bool {
-	return c <= ' ' && (c == ' ' || c == '\t' || c == '\r' || c == '\n')
-}
diff --git a/pkg/command/map_string_test.go b/pkg/command/map_string_test.go
index 42c0644134..0d511aaafd 100644
--- a/pkg/command/map_string_test.go
+++ b/pkg/command/map_string_test.go
@@ -65,6 +65,29 @@ func TestGetStringMapString(t *testing.T) {
 			want:    expectedResult,
 			wantErr: assert.NoError,
 		},
+		{
+			name: "valid kv format with forward slash",
+			args: args{
+				key:   "FOO_BAR",
+				value: "kubernetes.io/cluster/piano-eks-general-blue-01=owned,kubernetes.io/role/internal-elb=1",
+			},
+			want: map[string]string{
+				"kubernetes.io/cluster/piano-eks-general-blue-01": "owned",
+				"kubernetes.io/role/internal-elb":                 "1",
+			},
+			wantErr: assert.NoError,
+		},
+		{
+			name: "valid kv format with hyphens",
+			args: args{
+				key:   "FOO_BAR",
+				value: "cluster=my-cluster",
+			},
+			want: map[string]string{
+				"cluster": "my-cluster",
+			},
+			wantErr: assert.NoError,
+		},
 		{
 			name: "invalid kv format with extra comma",
 			args: args{
@@ -149,6 +172,28 @@ func Test_isValidKeyValuePair(t *testing.T) {
 			},
 			want: true,
 		},
+		{
+			name: "valid format with hyphen in k and v",
+			args: args{
+				str: "k-1=v-1,k-2=v-2",
+			},
+			want: true,
+		},
+		{
+			name: "valid format with multiple hyphens",
+			args: args{
+				str: "Cluster=piano-eks-general-blue-01",
+			},
+			want: true,
+		},
+		{
+			name: "valid format with forward slash",
+			args: args{
+				str: "kubernetes.io/cluster/piano-eks-general-blue-01=owned",
+			},
+			want: true,
+		},
+
 		{
 			name: "valid format with multiple pairs",
 			args: args{

/test

/test-runtime

/test

test-1.22-4.19

/test-1.22-4.19

/test-gke

/test-1.22-4.19

Requested the review from the current tophat.

All CI passed, force push to add example values in cmdref only, please find below the diff

diff
diff --git a/Documentation/cmdref/cilium-agent.md b/Documentation/cmdref/cilium-agent.md
index 9c799098dd..45dcb6b942 100644
--- a/Documentation/cmdref/cilium-agent.md
+++ b/Documentation/cmdref/cilium-agent.md
@@ -131,7 +131,7 @@ cilium-agent [flags]
       --endpoint-status strings                              Enable additional CiliumEndpoint status features (controllers,health,log,policy,state)
       --envoy-log string                                     Path to a separate Envoy log file, if any
       --exclude-local-address strings                        Exclude CIDR from being recognized as local address
-      --fixed-identity-mapping map                           Key-value for the fixed identity mapping which allows to use reserved label for fixed identities
+      --fixed-identity-mapping map                           Key-value for the fixed identity mapping which allows to use reserved label for fixed identities, e.g. 128=kv-store,128=kv-store
       --force-local-policy-eval-at-source                    Force policy evaluation of all local communication at the source endpoint (default true)
       --gops-port int                                        Port for gops server to listen on (default 9890)
   -h, --help                                                 help for cilium-agent
@@ -196,7 +196,7 @@ cilium-agent [flags]
       --kvstore string                                       Key-value store type
       --kvstore-connectivity-timeout duration                Time after which an incomplete kvstore operation  is considered failed (default 2m0s)
       --kvstore-max-consecutive-quorum-errors int            Max acceptable kvstore consecutive quorum errors before the agent assumes permanent failure (default 2)
-      --kvstore-opt map                                      Key-value store options
+      --kvstore-opt map                                      Key-value store options e.g. etcd.address=<IP_ADDRESS>:4001
       --kvstore-periodic-sync duration                       Periodic KVstore synchronization interval (default 5m0s)
       --label-prefix-file string                             Valid label prefixes file path
       --labels strings                                       List of label prefixes used to determine identity of an endpoint
diff --git a/Documentation/cmdref/cilium-health.md b/Documentation/cmdref/cilium-health.md
index fddd7dcc39..889f97de4a 100644
--- a/Documentation/cmdref/cilium-health.md
+++ b/Documentation/cmdref/cilium-health.md
@@ -19,7 +19,7 @@ cilium-health [flags]
   -h, --help                 help for cilium-health
   -H, --host string          URI to cilium-health server API
       --log-driver strings   Logging endpoints to use for example syslog
-      --log-opt map          Log driver options for cilium-health
+      --log-opt map          Log driver options for cilium-health e.g. syslog.level=info,syslog.facility=local5,syslog.tag=cilium-agent

SEE ALSO
diff --git a/Documentation/cmdref/cilium-health_completion.md b/Documentation/cmdref/cilium-health_completion.md
index f1659ff0e7..1f43b61f79 100644
--- a/Documentation/cmdref/cilium-health_completion.md
+++ b/Documentation/cmdref/cilium-health_completion.md
@@ -22,7 +22,7 @@ See each sub-command's help for details on how to use the generated script.
-D, --debug                Enable debug messages
-H, --host string          URI to cilium-health server API
--log-driver strings   Logging endpoints to use for example syslog

 --log-opt map          Log driver options for cilium-health

 --log-opt map          Log driver options for cilium-health e.g. syslog.level=info,syslog.facility=local5,syslog.tag=cilium-agent

### SEE ALSO
diff --git a/Documentation/cmdref/cilium-health_completion_bash.md b/Documentation/cmdref/cilium-health_completion_bash.md
index bf87bc0aa5..a8ced74b28 100644
--- a/Documentation/cmdref/cilium-health_completion_bash.md
+++ b/Documentation/cmdref/cilium-health_completion_bash.md
@@ -45,7 +45,7 @@ cilium-health completion bash
  -D, --debug                Enable debug messages
  -H, --host string          URI to cilium-health server API
      --log-driver strings   Logging endpoints to use for example syslog
-      --log-opt map          Log driver options for cilium-health
+      --log-opt map          Log driver options for cilium-health e.g. syslog.level=info,syslog.facility=local5,syslog.tag=cilium-agent

SEE ALSO
diff --git a/Documentation/cmdref/cilium-health_completion_fish.md b/Documentation/cmdref/cilium-health_completion_fish.md
index 754adc32f6..4ca095722c 100644
--- a/Documentation/cmdref/cilium-health_completion_fish.md
+++ b/Documentation/cmdref/cilium-health_completion_fish.md
@@ -36,7 +36,7 @@ cilium-health completion fish [flags]
-D, --debug                Enable debug messages
-H, --host string          URI to cilium-health server API
--log-driver strings   Logging endpoints to use for example syslog

 --log-opt map          Log driver options for cilium-health

 --log-opt map          Log driver options for cilium-health e.g. syslog.level=info,syslog.facility=local5,syslog.tag=cilium-agent

### SEE ALSO
diff --git a/Documentation/cmdref/cilium-health_completion_powershell.md b/Documentation/cmdref/cilium-health_completion_powershell.md
index 08799f0987..b94e1099d5 100644
--- a/Documentation/cmdref/cilium-health_completion_powershell.md
+++ b/Documentation/cmdref/cilium-health_completion_powershell.md
@@ -33,7 +33,7 @@ cilium-health completion powershell [flags]
  -D, --debug                Enable debug messages
  -H, --host string          URI to cilium-health server API
      --log-driver strings   Logging endpoints to use for example syslog
-      --log-opt map          Log driver options for cilium-health
+      --log-opt map          Log driver options for cilium-health e.g. syslog.level=info,syslog.facility=local5,syslog.tag=cilium-agent

SEE ALSO
diff --git a/Documentation/cmdref/cilium-health_completion_zsh.md b/Documentation/cmdref/cilium-health_completion_zsh.md
index 8d6b926a89..75e5262bc3 100644
--- a/Documentation/cmdref/cilium-health_completion_zsh.md
+++ b/Documentation/cmdref/cilium-health_completion_zsh.md
@@ -43,7 +43,7 @@ cilium-health completion zsh [flags]
-D, --debug                Enable debug messages
-H, --host string          URI to cilium-health server API
--log-driver strings   Logging endpoints to use for example syslog

 --log-opt map          Log driver options for cilium-health

 --log-opt map          Log driver options for cilium-health e.g. syslog.level=info,syslog.facility=local5,syslog.tag=cilium-agent

### SEE ALSO
diff --git a/Documentation/cmdref/cilium-health_get.md b/Documentation/cmdref/cilium-health_get.md
index 1836be8e75..845662b895 100644
--- a/Documentation/cmdref/cilium-health_get.md
+++ b/Documentation/cmdref/cilium-health_get.md
@@ -21,7 +21,7 @@ cilium-health get [flags]
  -D, --debug                Enable debug messages
  -H, --host string          URI to cilium-health server API
      --log-driver strings   Logging endpoints to use for example syslog
-      --log-opt map          Log driver options for cilium-health
+      --log-opt map          Log driver options for cilium-health e.g. syslog.level=info,syslog.facility=local5,syslog.tag=cilium-agent

SEE ALSO
diff --git a/Documentation/cmdref/cilium-health_ping.md b/Documentation/cmdref/cilium-health_ping.md
index 47e16fc579..96eee53119 100644
--- a/Documentation/cmdref/cilium-health_ping.md
+++ b/Documentation/cmdref/cilium-health_ping.md
@@ -20,7 +20,7 @@ cilium-health ping [flags]
-D, --debug                Enable debug messages
-H, --host string          URI to cilium-health server API
--log-driver strings   Logging endpoints to use for example syslog

 --log-opt map          Log driver options for cilium-health

 --log-opt map          Log driver options for cilium-health e.g. syslog.level=info,syslog.facility=local5,syslog.tag=cilium-agent

### SEE ALSO
diff --git a/Documentation/cmdref/cilium-health_status.md b/Documentation/cmdref/cilium-health_status.md
index b9fd254891..0318b20546 100644
--- a/Documentation/cmdref/cilium-health_status.md
+++ b/Documentation/cmdref/cilium-health_status.md
@@ -24,7 +24,7 @@ cilium-health status [flags]
  -D, --debug                Enable debug messages
  -H, --host string          URI to cilium-health server API
      --log-driver strings   Logging endpoints to use for example syslog
-      --log-opt map          Log driver options for cilium-health
+      --log-opt map          Log driver options for cilium-health e.g. syslog.level=info,syslog.facility=local5,syslog.tag=cilium-agent

SEE ALSO
diff --git a/Documentation/cmdref/cilium-operator-alibabacloud.md b/Documentation/cmdref/cilium-operator-alibabacloud.md
index ca33b5a93a..3252288c60 100644
--- a/Documentation/cmdref/cilium-operator-alibabacloud.md
+++ b/Documentation/cmdref/cilium-operator-alibabacloud.md
@@ -49,7 +49,7 @@ cilium-operator-alibabacloud [flags]
--k8s-namespace string                      Name of the Kubernetes namespace in which Cilium Operator is deployed in
--k8s-service-proxy-name string             Value of K8s service-proxy-name label for which Cilium handles the services (empty = all services without service.kubernetes.io/service-proxy-name label)
--kvstore string                            Key-value store type

 --kvstore-opt map                           Key-value store options

 --kvstore-opt map                           Key-value store options e.g. etcd.address=<IP_ADDRESS>:4001
 --leader-election-lease-duration duration   Duration that non-leader operator candidates will wait before forcing to acquire leadership (default 15s)
 --leader-election-renew-deadline duration   Duration that current acting master will retry refreshing leadership in before giving up the lock (default 10s)
 --leader-election-retry-period duration     Duration that LeaderElector clients should wait between retries of the actions (default 2s)

diff --git a/Documentation/cmdref/cilium-operator-aws.md b/Documentation/cmdref/cilium-operator-aws.md
index 37658ec469..1a6299f4bf 100644
--- a/Documentation/cmdref/cilium-operator-aws.md
+++ b/Documentation/cmdref/cilium-operator-aws.md
@@ -53,7 +53,7 @@ cilium-operator-aws [flags]
--k8s-namespace string                      Name of the Kubernetes namespace in which Cilium Operator is deployed in
--k8s-service-proxy-name string             Value of K8s service-proxy-name label for which Cilium handles the services (empty = all services without service.kubernetes.io/service-proxy-name label)
--kvstore string                            Key-value store type

 --kvstore-opt map                           Key-value store options

 --kvstore-opt map                           Key-value store options e.g. etcd.address=<IP_ADDRESS>:4001
 --leader-election-lease-duration duration   Duration that non-leader operator candidates will wait before forcing to acquire leadership (default 15s)
 --leader-election-renew-deadline duration   Duration that current acting master will retry refreshing leadership in before giving up the lock (default 10s)
 --leader-election-retry-period duration     Duration that LeaderElector clients should wait between retries of the actions (default 2s)

diff --git a/Documentation/cmdref/cilium-operator-azure.md b/Documentation/cmdref/cilium-operator-azure.md
index c71e411e02..fe6de3e49b 100644
--- a/Documentation/cmdref/cilium-operator-azure.md
+++ b/Documentation/cmdref/cilium-operator-azure.md
@@ -52,7 +52,7 @@ cilium-operator-azure [flags]
--k8s-namespace string                      Name of the Kubernetes namespace in which Cilium Operator is deployed in
--k8s-service-proxy-name string             Value of K8s service-proxy-name label for which Cilium handles the services (empty = all services without service.kubernetes.io/service-proxy-name label)
--kvstore string                            Key-value store type

 --kvstore-opt map                           Key-value store options

 --kvstore-opt map                           Key-value store options e.g. etcd.address=<IP_ADDRESS>:4001
 --leader-election-lease-duration duration   Duration that non-leader operator candidates will wait before forcing to acquire leadership (default 15s)
 --leader-election-renew-deadline duration   Duration that current acting master will retry refreshing leadership in before giving up the lock (default 10s)
 --leader-election-retry-period duration     Duration that LeaderElector clients should wait between retries of the actions (default 2s)

diff --git a/Documentation/cmdref/cilium-operator-generic.md b/Documentation/cmdref/cilium-operator-generic.md
index 21211ff191..d1af2f9a14 100644
--- a/Documentation/cmdref/cilium-operator-generic.md
+++ b/Documentation/cmdref/cilium-operator-generic.md
@@ -48,7 +48,7 @@ cilium-operator-generic [flags]
--k8s-namespace string                      Name of the Kubernetes namespace in which Cilium Operator is deployed in
--k8s-service-proxy-name string             Value of K8s service-proxy-name label for which Cilium handles the services (empty = all services without service.kubernetes.io/service-proxy-name label)
--kvstore string                            Key-value store type

 --kvstore-opt map                           Key-value store options

 --kvstore-opt map                           Key-value store options e.g. etcd.address=<IP_ADDRESS>:4001
 --leader-election-lease-duration duration   Duration that non-leader operator candidates will wait before forcing to acquire leadership (default 15s)
 --leader-election-renew-deadline duration   Duration that current acting master will retry refreshing leadership in before giving up the lock (default 10s)
 --leader-election-retry-period duration     Duration that LeaderElector clients should wait between retries of the actions (default 2s)

diff --git a/Documentation/cmdref/cilium-operator.md b/Documentation/cmdref/cilium-operator.md
index 8b3d9d9c05..a4442e6abe 100644
--- a/Documentation/cmdref/cilium-operator.md
+++ b/Documentation/cmdref/cilium-operator.md
@@ -58,7 +58,7 @@ cilium-operator [flags]
--k8s-namespace string                      Name of the Kubernetes namespace in which Cilium Operator is deployed in
--k8s-service-proxy-name string             Value of K8s service-proxy-name label for which Cilium handles the services (empty = all services without service.kubernetes.io/service-proxy-name label)
--kvstore string                            Key-value store type

 --kvstore-opt map                           Key-value store options

 --kvstore-opt map                           Key-value store options e.g. etcd.address=<IP_ADDRESS>:4001
 --leader-election-lease-duration duration   Duration that non-leader operator candidates will wait before forcing to acquire leadership (default 15s)
 --leader-election-renew-deadline duration   Duration that current acting master will retry refreshing leadership in before giving up the lock (default 10s)
 --leader-election-retry-period duration     Duration that LeaderElector clients should wait between retries of the actions (default 2s)

diff --git a/Documentation/cmdref/cilium_preflight_migrate-identity.md b/Documentation/cmdref/cilium_preflight_migrate-identity.md
index 2f5b77b6d7..f37bbb632c 100644
--- a/Documentation/cmdref/cilium_preflight_migrate-identity.md
+++ b/Documentation/cmdref/cilium_preflight_migrate-identity.md
@@ -26,7 +26,7 @@ cilium preflight migrate-identity [flags]
--k8s-api-server string        Kubernetes api address server (for https use --k8s-kubeconfig-path instead)
--k8s-kubeconfig-path string   Absolute path of the kubernetes kubeconfig file
--kvstore string               Key-value store type

 --kvstore-opt map              Key-value store options

 --kvstore-opt map              Key-value store options e.g. etcd.address=<IP_ADDRESS>:4001

### Options inherited from parent commands
diff --git a/cilium-health/cmd/root.go b/cilium-health/cmd/root.go
index b04465f7b7..249a31df14 100644
--- a/cilium-health/cmd/root.go
+++ b/cilium-health/cmd/root.go
@@ -59,7 +59,7 @@ func init() {
	flags.StringP("host", "H", "", "URI to cilium-health server API")
	flags.StringSlice("log-driver", []string{}, "Logging endpoints to use for example syslog")
	flags.Var(option.NewNamedMapOptions("log-opts", &logOpts, nil),
-		"log-opt", "Log driver options for cilium-health")
+		"log-opt", "Log driver options for cilium-health e.g. syslog.level=info,syslog.facility=local5,syslog.tag=cilium-agent")
	viper.BindPFlags(flags)

	flags.StringVar(&cmdRefDir, "cmdref", "", "Path to cmdref output directory")
diff --git a/cilium/cmd/preflight.go b/cilium/cmd/preflight.go
index c183d0b88e..c387ce2a0a 100644
--- a/cilium/cmd/preflight.go
+++ b/cilium/cmd/preflight.go
@@ -63,7 +63,7 @@ func init() {
	migrateIdentityCmd.Flags().StringVar(&k8sAPIServer, "k8s-api-server", "", "Kubernetes api address server (for https use --k8s-kubeconfig-path instead)")
	migrateIdentityCmd.Flags().StringVar(&k8sKubeConfigPath, "k8s-kubeconfig-path", "", "Absolute path of the kubernetes kubeconfig file")
	migrateIdentityCmd.Flags().StringVar(&kvStore, "kvstore", "", "Key-value store type")
-	migrateIdentityCmd.Flags().Var(option.NewNamedMapOptions("kvstore-opts", &kvStoreOpts, nil), "kvstore-opt", "Key-value store options")
+	migrateIdentityCmd.Flags().Var(option.NewNamedMapOptions("kvstore-opts", &kvStoreOpts, nil), "kvstore-opt", "Key-value store options e.g. etcd.address=<IP_ADDRESS>:4001")
	preflightCmd.AddCommand(migrateIdentityCmd)

	validateCNP.Flags().StringVar(&k8sAPIServer, "k8s-api-server", "", "Kubernetes api address server (for https use --k8s-kubeconfig-path instead)")
diff --git a/clustermesh-apiserver/main.go b/clustermesh-apiserver/main.go
index 248bfe302b..e206b7dc04 100644
--- a/clustermesh-apiserver/main.go
+++ b/clustermesh-apiserver/main.go
@@ -211,7 +211,7 @@ func runApiserver() error {
	option.BindEnv(option.KVstorePeriodicSync)

	flags.Var(option.NewNamedMapOptions(option.KVStoreOpt, &option.Config.KVStoreOpt, nil),
-		option.KVStoreOpt, "Key-value store options")
+		option.KVStoreOpt, "Key-value store options e.g. etcd.address=<IP_ADDRESS>:4001")
	option.BindEnv(option.KVStoreOpt)

	flags.StringVar(&cfg.serviceProxyName, option.K8sServiceProxyName, "", "Value of K8s service-proxy-name label for which Cilium handles the services (empty = all services without service.kubernetes.io/service-proxy-name label)")
diff --git a/daemon/cmd/daemon_main.go b/daemon/cmd/daemon_main.go
index e0b3a38559..67199f8cd8 100644
--- a/daemon/cmd/daemon_main.go
+++ b/daemon/cmd/daemon_main.go
@@ -449,7 +449,7 @@ func initializeFlags() {
	option.BindEnvWithLegacyEnvFallback(option.DisableEnvoyVersionCheck, "CILIUM_DISABLE_ENVOY_BUILD")

	flags.Var(option.NewNamedMapOptions(option.FixedIdentityMapping, &option.Config.FixedIdentityMapping, option.Config.FixedIdentityMappingValidator),
-		option.FixedIdentityMapping, "Key-value for the fixed identity mapping which allows to use reserved label for fixed identities")
+		option.FixedIdentityMapping, "Key-value for the fixed identity mapping which allows to use reserved label for fixed identities, e.g. 128=kv-store,128=kv-store")
	option.BindEnv(option.FixedIdentityMapping)

	flags.Duration(option.IdentityChangeGracePeriod, defaults.IdentityChangeGracePeriod, "Time to wait before using new identity on endpoint identity change")
@@ -527,7 +527,7 @@ func initializeFlags() {
	option.BindEnv(option.IPAllocationTimeout)

	flags.Var(option.NewNamedMapOptions(option.KVStoreOpt, &option.Config.KVStoreOpt, nil),
-		option.KVStoreOpt, "Key-value store options")
+		option.KVStoreOpt, "Key-value store options e.g. etcd.address=<IP_ADDRESS>:4001")
	option.BindEnv(option.KVStoreOpt)

	flags.Duration(option.K8sSyncTimeoutName, defaults.K8sSyncTimeout, "Timeout for synchronizing k8s resources before exiting")
diff --git a/operator/flags.go b/operator/flags.go
index f34f38c6fb..9dbce08fe6 100644
--- a/operator/flags.go
+++ b/operator/flags.go
@@ -223,7 +223,7 @@ func init() {
	option.BindEnv(option.KVStore)

	flags.Var(option.NewNamedMapOptions(option.KVStoreOpt, &option.Config.KVStoreOpt, nil),
-		option.KVStoreOpt, "Key-value store options")
+		option.KVStoreOpt, "Key-value store options e.g. etcd.address=<IP_ADDRESS>:4001")
	option.BindEnv(option.KVStoreOpt)

	flags.String(option.K8sAPIServer, "", "Kubernetes API server URL")

All reviews are in and all ci jobs were passed before docs update, marking this ready to merge.


Release v3.8

Codecov Report

Merging #471 (7091c2a) into main (3ec4538) will decrease coverage by 0.03%.
The diff coverage is 98.77%.

:exclamation: Current head 7091c2a differs from pull request most recent head 3e57c76. Consider uploading reports for the commit 3e57c76 to get more accurate results

@@            Coverage Diff             @@
##             main     #471      +/-   ##
==========================================
- Coverage   98.99%   98.96%   -0.04%
==========================================
  Files         114      113       -1
  Lines        5784     5906     +122
  Branches        6        8       +2
==========================================
+ Hits         5726     5845     +119
- Misses         58       61       +3


Update rust-toolchain

Motivation
Fix the compilation error that occurs when executing the below step :
cargo install --path language/tools/move-cli
The reason is that some of the packages required a newer version of Rust, but the current one is pinned at 1.65.0 in rust-toolchain.
Hence changed the  rust-toolchain to 1.77.2. It works good.
Have you read the Contributing Guidelines on pull requests?
Yes
Test Plan
Changed the rust-toolchain from 1.65.0 to 1.77.2.
The compilation is successful.

since there is already a PR on the same I canceled my pull request:
Existing PR:  https://github.com/move-language/move/pull/1108


[Backport 1.x] Updating Log4j to 2.11.2 (#1696)

Signed-off-by: Sarat Vemulapalli<EMAIL_ADDRESS>Description
Backport updating Log4j to 2.11.2.
Issues Resolved
[List any issues this PR will resolve]
Check List

[ ] New functionality includes testing.

[x] All tests pass

[ ] New functionality has been documented.

[ ] New functionality has javadoc added

[x] Commits are signed per the DCO using --signoff

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

Looks like we need to go to 2.15

Looks like we need to go to 2.15


cue: Path APIs are verbose and clunky for common scenarios

Background
https://cue-review.googlesource.com/c/cue/+/7441 introduced the concept of the cue.Path type, which is made up of a sequence of selectors. Notably, a selector is typed, and can be one of multiple specific implementations, like:

cue.Str for label strings (identifiers)
cue.Def for definition labels
cue.Index for list indices

New APIs were introduced that use paths, like:
func (v Value) LookupPath(p Path) Value

This is in contrast to the old and deprecated APIs such as:
func (v Value) Lookup(path ...string) Value

The commit message above explains why this API was problematic:

Minimize the possibility of errors when converting strings to either identifiers or quoted strings. For example, what should the Go val.Lookup("3") do? Should it be equivalent to cue.Str("3"), treating it as a label string, or cue.Index(3), treating it as a list index?
Extendability to support CUE's planned query extensions (https://github.com/cue-lang/cue/issues/165).

For the two reasons above, I think this was a good change to make in terms of the base API. However, it did make many common use cases significantly more verbose. For example, from a recent selection in https://review.gerrithub.io/c/cue-lang/cue/+/1194951, we can see that
doc, _ := v.Lookup("info", "title").String()

became the much longer and more complex
doc, _ := v.LookupPath(cue.MakePath(cue.Str("info"), cue.Str("title"))).String()

Alternative: cue.ParsePath
One alternative is using cue.ParsePath as follows:
doc, _ := v.LookupPath(cue.ParsePath("info.title")).String()

Which is simpler and shorter, but as a parse API, it can fail on invalid syntax, and it is noticeably more complex and expensive. I think parsing paths should be used primarily when the path is an arbitrary input string, such as given via the command line or as a URL parameter, and not when the path itself is fairly static in the code.
I also think path parsing suffers from similar pitfalls mentioned before; what should cue.ParsePath("3") do?
Proposal 1: Lookup(...Selector)
In my limited experience with the "path" APIs so far, I've come to realise that in most cases, I don't care about the path value. Nearly every time I am making a path, it only exists so I can use it immediately after and throw it away. In a few times I might make a path and reuse it multiple times, in which case calling the "make" API is fine, but that's usually not the case.
In that spirit, I suggest that we add "inline path" APIs which do the cue.MakePath logic by themselves, reusing the deprecated and hidden APIs like Value.Lookup:
func (v Value) Lookup(selectors ...Selector) Value

This way, our earlier example could be rewritten as:
doc, _ := v.Lookup(cue.Str("info"), cue.Str("title")).String()

I also imagine it could avoid "making" the path entirely, instead using the selectors directly, avoiding any allocations for the path itself.
Note that this solution still keeps the new cue.Str("info") instead of the older "info", due to the problems already listed with the original API.
Note that this solution takes ...Selector rather than Selector as a parameter, so that the example above doesn't have to do two lookups in sequence:
doc, _ := v.Lookup(cue.Str("info")).Lookup(cue.Str("title")).String()

Finally, note that MakePath would remain in place, for the case where one wants to make a path and reuse it many times with e.g. Value.LookupPath, perhaps even as a global variable. ParsePath would also remain in place.
Proposal 2: LookupStr(string)
A variation of the proposal above is to provide single-selector method shortcuts for each kind of selector, or at least for the common ones. For example, v.LookupStr("foo") would be short for v.LookupPath(cue.MakePath(cue.Str("foo"))), and our example from earlier would be:
doc, _ := v.LookupStr("info").LookupStr("title").String()

I personally lean against this variant of the proposal, as it would multiply the number of methods needed for shortcuts: LookupStr, LookupDef, LookupIndex, etc.

Note that if we were to go down the Proposal 1 route, which is my preference, we would need to delete the existing Lookup method, and probably leave it as deleted for a full release cycle, before re-adding it with a new signature and behavior. For example, we could delete the method in v0.10.0, and re-add it in v0.11.0.
Alternatively, since existing valid calls like v.Lookup("foo") cannot possibly compile with the changed signature from ...string to ...Signature, we could repurpose the same signature as a single breaking change in e.g. v0.10.0, without first having a full release cycle with the breaking change of only deleting the func. I would personally opt for this, as long as we have consensus about the new API.

In that spirit, I suggest that we add "inline path" APIs which do the cue.MakePath logic by themselves, reusing the deprecated and hidden APIs like Value.Lookup:

If my memory serves me, this was the original plan: to drop the deprecated cue.Value.Lookup, and then later rename cue.Value.LookupPath -> Lookup.

Correct. The signature for LookupPath is fine for cases where one does want to make use of a parsed or long-lived path, but for most cases, I want to use an "inline" path that I don't want to keep or reuse, hence the Lookup signature with ...Selector.

Paul's comment of the original intent still stands. We first need a way to remove Lookup first, before introducing it as something else. This is quite arduous, as there are probably still many uses of Lookup around. The easiest would be to do a big cleanup as part of a v2 API. An alternative, yet, is to come up with a different name. Either way, the transition is a big part of the proposal and should be addressed.

I also think path parsing suffers from similar pitfalls mentioned before; what should cue.ParsePath("3") do?

I don't think this is nearly as ambiguous. The word Parse clearly indicates it should be an integer index. The confusion with Lookup("3") arises from the fact that the method does not specify whether the label is parsed or taken as is.

, I've come to realise that in most cases, I don't care about the path value.

Paths can be return values as well, in which case having to piece them out as selectors is tedious.
Personally, I think it would be even nicer to have a Lookup function that allows both, so Lookup(path ...X), where X can be a Path or Selector, to be applied consecutively. That way you don't have to jump through hoops if you have a field within a path to look up, which is not uncommon. We could even allow strings and ints, possibly, to make it even more convenient, if we can make it clear that this always signifies a regular field or integer index.
To avoid solving the transition issue now, the signature could be func Lookup(v Value, path ...any) Value, func (v Value) Get(path ...any) Value, or func (v Value) LookupAll(path ...any) Value or something like that.
The body would be:
func Lookup(v Value, path ...any) Value {
	for _, x := range path {
		if !v.Exists() {
			return v // or generate an error if needed.
		}
		switch x := x.(type) {
		case int:
			v = v.LookupPath(MakePath(Index(x)))
		case string:
			v = v.LookupPath(MakePath(Str(x)))
		case Selector:
			v = v.LookupPath(MakePath(x))
		case Path:
			v = v.LookupPath(x)
		}
	}
	return v
}

(In practice this would use the lower-level lookup methods within the loop, of course.)
This allows neat things, like combing parsed and non-parsed component:
type Config struct {
    root cue.Value
    offset cue.Path
}

func (c *Config) selectUser(field string) Value {
    Lookup(c.root, c.offset, field)

    // or, if we do not allow strings:
    Lookup(c.root, c.offset, cue.Str(field))
}

I agree that the first step here is likely to fully phase out the existing Lookup method first, which I describe in

Ah. Missed that. I think that phasing out within the current API is not quite an option. I am not a fan of breaking API backward compatibility in such a hard way, even if we do not have a stability guarantee yet. We have a lot to clean up, so starting a v2 where things are done right makes more sense.

Or, at the very least, make ambiguous or incorrect arguments like Lookup("#foo") fail loudly so the user can switch to Lookup(cue.Def("foo")).

However appealing that would be, it is also weird and dangerous. Consider the following code:
func Foo(v Value, field string) Value {
    return v.Lookup(field)
}

It is legitimate to pass "#foo". But now the implementer would have to remember to either always use cue.Str or handle this case specifically.
I agree with you that the "swap" transition is nice, as I also think it will prevents breaking changes for the most part.
I think, with good documentation, we can make it clear what it means.
Also, we get to try if this is a viable API before fixing this in a v2 of the API.
Once we have this, we could also consider a go fix that wraps arguments in a cue.Str, cue.Index, if possible and if we decide to transition away from allowing this.


Check for valid types in themes.

Fixes https://github.com/javivelasco/react-css-themr/issues/44

Thank you!

@javivelasco Any chance you could merge this into 1.7.2 and do a quick release until https://github.com/react-toolbox/react-toolbox upgrades their version (see https://github.com/react-toolbox/react-toolbox/issues/1335)?

Don't worry, gonna release a new react toolbox version including react-css-themr changes

Wasn't worried ;) I know you're doing great work on this and it's hugely appreciated!


Update Conan.cmake to fix #40

This fixes #40 when building using an alternate compiler like clang.

I can confirm that i still experienced the issue that this PR tries to solve with latest main branch. (Although i wasn't asked)

I can confirm that i still experienced the issue that this PR tries to solve with latest main branch. (Although i wasn't asked)

+1 from me. Running on Linux

I can confirm that i still experienced the issue that this PR tries to solve with latest main branch. (Although i wasn't asked)

+1 from me. Running on Linux

Me too: see https://github.com/cpp-best-practices/cpp_starter_project/pull/175#discussion_r758840060. This PR resolved the issue for me. I must note that this was a very specific situation: [CLion + CMakePresets + Linux + clang}; if I change any one of these variables to anything else, I do not experience the problem.

When #169 is merged, this PR will have less relevance here because the Conan.cmake file will be moved into ProjectOptions.
@aminya, I think this change is worth adding to ProjectOptions. Several of our users have found this change useful, including myself (see above). I don't think that there is any downside to adding this: there should never be a situation where you would want Conan to use a different compiler than the one used by the project. What do you think?
You could argue that this change is only relevant when the user has failed to set CC and CXX manually, and that not setting these environment variables yourself is "user error". I prefer to forgive users for that "mistake", if it is one, particularly since this change won't hurt anything.
This is how I would expect Conan.cmake in ProjectOptions to be changed:
    conan_cmake_install(
      PATH_OR_REFERENCE ${CMAKE_SOURCE_DIR}
      BUILD missing
            # Pass compile-time configured options into conan
      OPTIONS ${ProjectOptions_CONAN_OPTIONS}
+     ENV "CC=${CMAKE_C_COMPILER}" "CXX=${CMAKE_CXX_COMPILER}"
      SETTINGS ${settings})

I can file a PR for this myself, but I want to give @Domkeykong a chance to do it; it's @Domkeykong's PR, not mine.

This is included in ProjectOptions v0.11.2
https://github.com/aminya/ProjectOptions


Minor updates in configuration and community docs

Grammatically updated the documents.
Signed-off-by: Aditya Kumar<EMAIL_ADDRESS>

/test


[staging-next] linuxPackages.bcc: fix build

Use Debian downstream patch to fix compilation against linuxHeaders < 5.14.
Our linux headers exposed by glibc are still at 5.12. We should be able
to remove this patch once our linuxHeaders are bumped to 5.14+.
Motivation for this change
Fixes linuxPackages*.bcc
For https://github.com/NixOS/nixpkgs/pull/138268
Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
21.11 Release Notes (or backporting 21.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[ ] Fits CONTRIBUTING.md.

I'd be tempted to say we just don't need btf kind float on nixos kernels (I had the same problem on another distro so have a patch to rip it off somewhere...), but they don't have btf enabled anyway so I'm assuming you're compiling your own kernels and then anything goes wrt. target version and you might need it...
Ultimately upstream libbpfland prefers embedding while distros prefer using distro's version of the lib so I don't really care either way, but I also don't see the harm in just upgrading glibc's kernel headers to 5.14 -- kernel headers are part of the userspace api which is guaranted to be stable, so there's no harm in being ahead of the running kernel version.
So /shrug, leaving it up to whoever can take this kind of decisions.

Yeah, that all sounds reasonable to me, I'd welcome a more principled fix. If we do decide bumping glibc's linux headers is the best solution, it would rebuild the universe and require a lot of testing, so I think we'd still want to merge this in the interim.

It makes sense to have this in the meantime, I'm open to anything. I think this kind of problem will unfortunately keep poping up regularly...
I was working on a pahole/bcc/bpftrace update recently and forgot about it, so happy if others help with this stuff :)
Related: here's what debian did for this particular problem:
https://sources.debian.org/src/bpfcc/0.21.0+ds-1/debian/patches/0004-compat-defs.patch/
that might be another solution?
afaiu libbpf 0.4 itself compiles fine, and it's a bcc problem?

Ooh, nice find, tried it out and it seems to work. Maybe I should update this PR to use that instead?

Result of nixpkgs-review pr 138465 run on x86_64-linux 1

6 packages marked as broken and skipped:

linuxKernel.packages.linux_latest_libre.bcc
linuxKernel.packages.linux_latest_libre.bpftrace
linuxKernel.packages.linux_latest_libre.oci-seccomp-bpf-hook
linuxKernel.packages.linux_libre.bcc
linuxKernel.packages.linux_libre.bpftrace
linuxKernel.packages.linux_libre.oci-seccomp-bpf-hook

45 packages built:

linuxKernel.packages.linux_4_14.bcc
linuxKernel.packages.linux_4_14.bpftrace
linuxKernel.packages.linux_4_14_hardened.bcc
linuxKernel.packages.linux_4_14_hardened.bpftrace
linuxKernel.packages.linux_4_19.bcc
linuxKernel.packages.linux_4_19.bpftrace
linuxKernel.packages.linux_4_19_hardened.bcc
linuxKernel.packages.linux_4_19_hardened.bpftrace
linuxKernel.packages.linux_4_4.bcc
linuxKernel.packages.linux_4_4.bpftrace
linuxKernel.packages.linux_4_9.bcc
linuxKernel.packages.linux_4_9.bpftrace
linuxKernel.packages.linux_5_10.bcc
linuxKernel.packages.linux_5_10.bpftrace
linuxKernel.packages.linux_5_10.oci-seccomp-bpf-hook
linuxKernel.packages.linux_hardened.bcc (linuxKernel.packages.linux_5_10_hardened.bcc)
linuxKernel.packages.linux_hardened.bpftrace (linuxKernel.packages.linux_5_10_hardened.bpftrace)
linuxKernel.packages.linux_hardened.oci-seccomp-bpf-hook (linuxKernel.packages.linux_5_10_hardened.oci-seccomp-bpf-hook)
linuxKernel.packages.linux_5_13.bcc
linuxKernel.packages.linux_5_13.bpftrace
linuxKernel.packages.linux_5_13.oci-seccomp-bpf-hook
linuxKernel.packages.linux_5_13_hardened.bcc
linuxKernel.packages.linux_5_13_hardened.bpftrace
linuxKernel.packages.linux_5_13_hardened.oci-seccomp-bpf-hook
linuxKernel.packages.linux_5_14.bcc
linuxKernel.packages.linux_5_14.bpftrace
linuxKernel.packages.linux_5_14.oci-seccomp-bpf-hook
linuxKernel.packages.linux_5_4.bcc
linuxKernel.packages.linux_5_4.bpftrace
linuxKernel.packages.linux_5_4.oci-seccomp-bpf-hook
linuxKernel.packages.linux_5_4_hardened.bcc
linuxKernel.packages.linux_5_4_hardened.bpftrace
linuxKernel.packages.linux_5_4_hardened.oci-seccomp-bpf-hook
linuxKernel.packages.linux_lqx.bcc
linuxKernel.packages.linux_lqx.bpftrace
linuxKernel.packages.linux_lqx.oci-seccomp-bpf-hook
linuxKernel.packages.linux_testing_bcachefs.bcc
linuxKernel.packages.linux_testing_bcachefs.bpftrace
linuxKernel.packages.linux_testing_bcachefs.oci-seccomp-bpf-hook
linuxKernel.packages.linux_xanmod.bcc
linuxKernel.packages.linux_xanmod.bpftrace
linuxKernel.packages.linux_xanmod.oci-seccomp-bpf-hook
linuxKernel.packages.linux_zen.bcc
linuxKernel.packages.linux_zen.bpftrace
linuxKernel.packages.linux_zen.oci-seccomp-bpf-hook

Headers update is in PR #136358; that surely won't make it into the current staging-next iteration anymore.

Let's revert this in the mentioned PR.


aya model : error when using the generate endpoint

What is the issue?
I am running aya model locally. When i just start the model with ollama run aya and interact in the terminal, it works fine. But when I try using it via POSTMAN on Windows 10 at (http://<IP_ADDRESS>:11434/api/generate) with the following data:
{
  "model": "aya",
  "prompt": "Are there multilingual open source large language models available? Respond using JSON",
  "format": "json",
  "stream": false
}

i get the following error:
{     "error": "error reading llm response: read tcp <IP_ADDRESS>:60589-><IP_ADDRESS>:60580: wsarecv: An existing connection was forcibly closed by the remote host." }
For other models (e.g. phi3), it works correctly with the same setup.
e.g:
{
  "model": "phi3:mini",
  "prompt": "Are there multilingual open source large language models available? Respond using JSON",
  "format": "json",
  "stream": false
}'

works.
I can see the following logging for aya (the last line shows only the error but not any other details.):

llm_load_tensors: ggml ctx size =    0.27 MiB
llm_load_tensors: offloading 32 repeating layers to GPU
llm_load_tensors: offloading non-repeating layers to GPU
llm_load_tensors: offloaded 33/33 layers to GPU
llm_load_tensors:        CPU buffer size =   820.31 MiB
llm_load_tensors:      CUDA0 buffer size =  4564.83 MiB
........................................................................
llama_new_context_with_model: n_ctx      = 2048
llama_new_context_with_model: n_batch    = 512
llama_new_context_with_model: n_ubatch   = 512
llama_new_context_with_model: freq_base  = 10000.0
llama_new_context_with_model: freq_scale = 1
llama_kv_cache_init:      CUDA0 KV buffer size =   256.00 MiB
llama_new_context_with_model: KV self size  =  256.00 MiB, K (f16):  128.00 MiB, V (f16):  128.00 MiB
llama_new_context_with_model:  CUDA_Host  output buffer size =     0.99 MiB
llama_new_context_with_model:      CUDA0 compute buffer size =   508.00 MiB
llama_new_context_with_model:  CUDA_Host compute buffer size =    12.01 MiB
llama_new_context_with_model: graph nodes  = 968
llama_new_context_with_model: graph splits = 2
INFO [wmain] model loaded | tid="9016" timestamp=1716611056
time=2024-05-25T06:24:16.906+02:00 level=INFO source=server.go:545 msg="llama runner started in 8.06 seconds"
[GIN] 2024/05/25 - 06:24:19 | 500 |   14.8679199s |       <IP_ADDRESS> | POST     "/api/generate"

OS
Windows
GPU
Nvidia
CPU
Intel
Ollama version
No response

I've got the same problem running Linux/nvidia. The error is triggered when the api call contains "format": "json" but works correctly when not using json mode.

Same here. Also with "format": "json"


tenere: init at 0.11.2

tenere
Terminal interface for large language models (LLMs) written in Rust, provides a TUI for interacting with LLM services like Ollama.
This PR is for adding the tenere application to nixpkgs
Project home page: https://github.com/pythops/tenere

Cargo package, uses wrapProgram to create config/data dirs and set permissions on them
Things done

Built on platform(s)

[X] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[X] Tested basic functionality of all binary files (usually in ./result/bin/)
25.05 Release Notes (or backporting 24.11 and 25.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[ ] Fits CONTRIBUTING.md.

@ofborg build tenere


Update migrations to support postgres

Hey, I just made a Pull Request!
Updates the migrations used for generating locations_update_log_latest view, the existing query yields an error from postgres.
I decided to go with a knex.schema.raw statement as knex kind of confuses me :)
Making these changes highlighted a few other issues as well, such as:

knex migrations failing due to "corrupted migrations directory" when trying to resolve files in the wrong directory, the tableName key was added to knex.migration.latest to fix this.

Unable to inject mock-data to a Postgres database since the generated JSON-"blob" for 2 of the templates does not fit within the VARCHAR(255) limit, a new migration was added that changes the type of the columns holding these JSON-blobs to text (I did not want to alter the init migration as it seems to go against the intended flow of migrations)

I've been noticing some flaky tests where the 5s timeout seems to be reached during DB creation (possibly due to adding more migrations?) but been unable to reproduce this with any consistency
I'm unsure as to how to properly provide regression-tests but if they are required I'd like to request some advice on how to get started  with these.

:heavy_check_mark: Checklist

[x] All tests are passing yarn test
[ ] Screenshots attached (for UI changes)
[ ] Relevant documentation updated
[x] Prettier run on changed files
[ ] Tests added for new functionality
[ ] Regression tests added for bug fixes

Hello,
@dariddler and I are in the same team and shared part of the burden of getting this up and running. We spent most of the time getting the example-backend to be deployable in AWS, to get a feeling for how backstage would work in our setup. This is probably the wrong issue to bring up this discussion and there are probably better formats to share than an issue. But alas, we are engineers and we are really good and talking about the right things in the wrong forums, I'd be happy to have a higher fidelity discussion with you.
I do understand that the open sourcing of an internal product is hard, especially when re-doing concepts and infrastructure to support it. A few things that we ran into during the setup is:

The problem with the database and bugs in the setup, such as migrations being broken but also that the database schema has the wrong type for some columns.
Building the example backend fails to build a docker image that works, unless we remove --production from the yarn invocation.
No clear docs and recommendations on how to separate database instances, while this works automatically for sqlite it makes it harder to actually bring things to production.

Regarding 1, I personally believe it would be better to default to a production like database as a default, rather than sqlite as it's likely the thing that most people would use for deployment. Running a production like database in a docker container and automating the wiring for running locally is much easier now than it was just a couple of years ago. I have also tried to look for an ADR for supporting multiple databases from the get go, but couldn't find one in the architecture-decisions catalog.. In my experience focusing on 1 database to begin with and getting that really solid with integration tests and the like is an easier way to get started and also makes it easier to add more databases later on as you already have a proper test suite that tests for the behaviour you want.
Regarding 2, this might be because of how we tried to build it. Do you build the example backend and deploy it internally to make sure it works? If not, I think that would be a great canary for making sure that works, even if it's not the instance you are actually running. I think deployment instructions would be nice too (not just the ones in the root that talks about heroku, but maybe one for kubernetes/GKE).
Regarding 3.m, it's sort of ties back to "making it easy to run locally with sqlite, but no good recommendation for production", it would be amazing to have some recommendations or even better a way to spin up the example backend, talking to separate production like databases.
I know it's a young open source project and that documentation is hard. I do really like what I see and believe it will help a lot of companies and engineers smooth the developer portal experience, so please don't be discouraged by my comment. I think backstage as a framework has come really far and I understand the pains related to open sourcing an internal tool.

Hi @lndbrg! We discussed this a bit more in-depth in the team today, and do agree that it's likely best to pick a DB and make sure we have good support for it. Likely meaning PostgreSQL and e2e tests and usage in our to-be demo deployment. I'm not sure about about using production database by default for local development, as we do want to keep that extremely simple, and Docker isn't quite ubiquitous among all developer disciplines.
Regarding the issues, #1 is understandable as we haven't targeted other DBs than SQLite yet, which we ofc want to do pretty soon. For #2 we have an upcoming milestone, https://github.com/spotify/backstage/milestone/14, as we do indeed not have our own deployment yet. #3 is also a todo, it's not only lacking documentation or recommendation, but also an implementation :grin:. That issue is tracked in https://github.com/spotify/backstage/issues/1034
In general the backend setup needs more work, and it will most likely be a bit slow during vacations, but expect some big improvements after/at the end of summer.

Answers inline

Hi @lndbrg! We discussed this a bit more in-depth in the team today, and do agree that it's likely best to pick a DB and make sure we have good support for it. Likely meaning PostgreSQL and e2e tests and usage in our to-be demo deployment. I'm not sure about about using production database by default for local development, as we do want to keep that extremely simple, and Docker isn't quite ubiquitous among all developer disciplines.

That's fair, I guess. People have diverse development setup, I'm also heavily biased towards backend development where it is perhaps more common than mixed frontend/backend or pure frontend products. I would hope that even though docker would not be a requirement to run it for local dev, it would be a well supported setup with the tooling to do so in the repo. :)

Regarding the issues, #1 is understandable as we haven't targeted other DBs than SQLite yet, which we ofc want to do pretty soon. For #2 we have an upcoming milestone, https://github.com/spotify/backstage/milestone/14, as we do indeed not have our own deployment yet. #3 is also a todo, it's not only lacking documentation or recommendation, but also an implementation 😁. That issue is tracked in #1034

🥳

In general the backend setup needs more work, and it will most likely be a bit slow during vacations, but expect some big improvements after/at the end of summer.

Overall it sounds amazing. Thank you for taking the time to answer and for the updates. Have a great summer and vacation.
We'll continue to experiment and be in touch, but likely in August when most of us are back.

I also got the corrupted migrations directory error when trying to use an sqlite3 with a filepath that is not relative to the packages/backend directory. For example:
export const getDatabaseConfig = () => {
  const dbFilename =
    process.env.DATABASE_FILENAME ||
    path.resolve(process.cwd(), 'tmp', 'db', 'dev.sqlite3');

  const dbDir = path.dirname(dbFilename);
  fs.mkdirSync(dbDir, { recursive: true });

  return {
    client: 'sqlite3',
    connection: { filename: dbFilename },
    useNullAsDefault: true,
  };
};

// usage in `packages/backend/src/index.ts`
const database = knex(getDatabaseConfig());

@andrewthauer same here, I ended up making the plugin ID part of the filename, `dev-${plugin}.sqlite3`


Scope of project?

Thanks for making tracing-wasm!
Would it be possible to something to the README about the scope of the project? Currently, it says "Leverage performance profiling with your browser tools with the tracing crate", but the library name implies something broader.
Specifically:

is the goal to be browser-only, or anywhere that wasm is valid? (e.g. node, deno, limited environments like cloudflare workers)
is the goal to have feature parity (where relevant) with tracing_subscriber::fmt for log lines, or just focus on performance timings?

Thank you!

Hi @jenanwise, at the moment, until someone offers to share how we could expand to support other wasm targets, we are specifically focused on the browser context.
I'm open to suggestions on how to manage / communicate the scope of this project.

console exists consistently across all targets (AFAIK). Allowing opting out of performance usage and dynamically finding the global performance object (if available) as discussed in #4 would be best. Alternatively, you could add a short note to the readme along the lines of:

Note: tracing_wasm uses the global JavaScript console and performance objects. It will not work in environments where one or both of these are not available, such as Node.js or Cloudflare Workers.

I'll look into this further, soon. I believe I understand the goal, and have an idea for how we could expose this configurability properly.
@jenanwise, do you think that we should still support timing measurements, even if we don't have access to a performance API? I suppose by allowing a customizable WASMTracingConfig::set_performance_now_fn(f: FnMut() -> usize)?


Update maven plugin to maven-publish

A bit of the code has also been updated to suppress spell check in dependency coordinates and change the usage of deprecated variables.

please, do not suppress spelling inspection. If a word it's complaining about is correct, add it to the dictionary

thanks for the change :)


Remove Unneeded logging features

The functionality provided by HCIDump and HCILogger hasn't been used in a handful of years. We have since found better methods of debugging so it felt like a fine time to remove it.

I initially thought the same thing, but of the last two times i needed to debug HCI packets, i ended up needing to get out my Saleae anyway, the HCI logger didn't really help me personally.


refactor (with-material-ui) upgrades to @material-ui/core

Background

[x] Upgrade material-ui example to use @material-ui/core
[x] Add jest as dependency to material-ui example (fixes error during yarn test)
[x] Add react-jss as dependency (fixes error during yarn start)

Fixes the Following Errors
// During `yarn test`
TypeError: environment.teardown is not a function

// During `yarn start`
razzle/examples/with-material-ui/build/server.js:41241
  var sheetsRegistry = new !(function webpackMissingModule() { var e = new Error("Cannot find module \"react-jss\""); e.code = 'MODULE_NOT_FOUND'; throw e; }())();

Test Plan
cd razzle
yarn
cd examples/with-material-ui
yarn test # should pass
yarn start # browse to http://localhost:3000/ and make sure it loads

@potench Sorry for the late reply, could you please fix the merge conflicts and I will merge in soon as you are done. Thanks again for doing this!

closed in favor of #1278


FIX: Fix transaction value being in wei instead of eth

This change should probably be communicated well and published as a breaking change.

Closed as part of deprecation policy


Converted notebooks to rst tutorials

This converts the Jupyter notebooks to rst files.

Looks like there may be in error in the build docs step though?


add leader election mechanism

What this PR does / why we need it:
Added Leader Election Mechanism
OnStartedLeading: This callback is executed when the current instance becomes the leader. It starts running the controller logic by calling the Run function.
OnStoppedLeading: This callback is executed when the current instance is no longer the leader. It logs a message and may exit gracefully if needed.
OnNewLeader: This callback is executed when a new leader is elected. It logs a message indicating the new leader's identity.
Which issue(s) this PR fixes:

Fixes #838
Does this PR introduce a user-facing change?

Additional Notes for your reviewer:
Review Checklist:

[ ] Follows the developer guidelines
[ ] Relevant tests are added or updated
[ ] Relevant docs in this repo added or updated
[ ] Relevant carvel.dev docs added or updated in a separate PR and there's
a link to that PR
[ ] Code is at least as readable and maintainable as it was before this
change

Additional documentation e.g., Proposal, usage docs, etc.:

Hi @basit9958 , thanks for this!
Is this PR intended to be for demonstration / Proof of Concept purposes - or the intended feature complete? If it's intended to be complete, looks like it doesn't compile right now.
+ go build -trimpath -mod=vendor -o controller ./cmd/controller/...
# github.com/vmware-tanzu/carvel-kapp-controller/cmd/controller
Error: cmd/controller/main.go:113:20: cannot use lock (variable of type *resourcelock.LeaseLock) as "context".Context value in argument to runLeaderElection: *resourcelock.LeaseLock does not implement "context".Context (missing method Deadline)
Error: cmd/controller/main.go:113:26: cannot use ctx (variable of type "context".Context) as *resourcelock.LeaseLock value in argument to runLeaderElection
Error: Process completed with exit code 1.

Hi @basit9958 , thanks for this!
Is this PR intended to be for demonstration / Proof of Concept purposes - or the intended feature complete? If it's intended to be complete, looks like it doesn't compile right now.
+ go build -trimpath -mod=vendor -o controller ./cmd/controller/...
# github.com/vmware-tanzu/carvel-kapp-controller/cmd/controller
Error: cmd/controller/main.go:113:20: cannot use lock (variable of type *resourcelock.LeaseLock) as "context".Context value in argument to runLeaderElection: *resourcelock.LeaseLock does not implement "context".Context (missing method Deadline)
Error: cmd/controller/main.go:113:26: cannot use ctx (variable of type "context".Context) as *resourcelock.LeaseLock value in argument to runLeaderElection
Error: Process completed with exit code 1.

It is meant to be complete, I will fix these errors


Fixes deploy on Windows

This PR makes two changes:

makes electron-installer-debian an optional dependency
Switches to using Windows 10's built-in 'tar.exe' to compress builds on windows. This should work out of the box on any windows 10 computer or cygwin environment.

With both these changes, yakyak builds successfully on Windows.
Fixes #1210

thanks!


Migration to Swift 2.0

Migration to Swift 2.0
Used Xcode Version 7.0 (7A220)
Test passes. Except for testObjectQuerying()
That bug be fixed by changing creating NSPredicate, it is not related to Swift 2.

How did you fix the migration warning?:
SugarRecord/library/CoreData/Base/SugarRecordCDContext.swift:93:43: Migration: Call to an error throwing function cannot be converted


Exchange elasticsearch --> pg_search

Research which solution to chose
a. a gem
b. plain SQL

possible gem:
https://github.com/Casecommons/pg_search

which functionalities we need
a. scopes (--> aggregations/filter)
b. search over multiple fields
c. weighting of fields (optional)
d. typeahead --> suggester (with scopes)
e. treat special characters correctly, e.g. ä/ae, é/e

@zaziemo I think it's easier to start with the gem, because it provides all the patterns we want and actually I used this gem in the mwg project, see the model of profiles there.

[ ] delete everything elastic search related form docker compose
[ ] remove elastic search gems
[ ] remove elastic search module
[ ] remove elastic search related code in specs
[ ] add pg_search gem
[ ] add search functionalities with pg_search until specs are green again

I will close this issue now.  All those issues are labelled with search.


Clarify required linux kernel patches

Should we use vanilla linux kernel 4.19 or apply patch https://github.com/VCDP/linux-kmd/commit/d5cc059043749162c76285ea2c608da57bed8094 from https://github.com/VCDP/linux-kmd/commits/4.19_intel_media_kbl_19.1.0? (currently we use only SKL but intended to use KBL/CFL in near future)
Previous release MSS 2018 R2 HF2 required a bunch of 50 patches over vanilla linux kernel 4.14, but MSDK 2019 Q1 doesn't mention these patches and requires Kernel 4.14 or later (4.19 or later is recommended)

We have two types of releases: quarterly with broader platform scope targeting vanilla kernel. And
Media Server Studio releases which validated against patched version of i915 KMD which published at https://github.com/VCDP/linux-kmd/ on a limited set of platforms comparing to quarterly releases.
For 2019 Q1 validation was performed against vanilla kernel and I'd recommend to stick with it.

Thanks for information. I thought MSS is finally rebranded to MSDK as was stated in last year press release but seems it is not true yet.
We intended to use MSDK 2019 Q1 + linux 4.19 for both SKL and KBL to reduce moving parts but it seems it is not good release for SKL (suboptimal performance and quality in certain usages comparing to Media Server Studio on Broadwell and Skylake platforms in the release notes)
What do you recommend for production use (non-FEI) in terms of realibility/performance/picture quality given that we could use any linux kernel with/without patches?

Performance difference between MSDK and MSS significantly depends on the selected SKU and usage models. Let me try to give you some hints. The major patches over kernel which give MSS performance improvements are:

Dynamic VDBOX balancing. I.e. dynamic tasks orchestration from few independent workloads over 2 VDBOX engines. This means that SKU should have 2 VDBOX engines for this to take effect. On GT2 systems patch has no effect. Or if your usage models focus on the single workload running on the system this also might not be much relevant.
Slice shutdown. I.e. for the encoding it is better to power off some EU slices to achieve optimal performance. Again, this means that system should have more than 1 slice, hence patch takes effect with GT3 and GT4 SKUs, but for GT2 patch is doing nothing. Next, effect is limited to encoding only and lower the resolution - bigger effect. Specifically, on SD resolutions it is better to have just 1 slice since its resources are enough, for 720p and for some 1080 case typically 2 slices are good, for >=1080p 3 slices might give better performance. Anyhow, if encoding is not the bottle neck for your workloads or you focus on >=FHD cases, patch might not be needed as well.

A range of other patches were upstreamed and are actually available in 4.19.
I hope this helps.

Thanks for detailed explanation.
So performance issues of MSDK 2019 Q1 on SKL should not affect us (we use only SKL GT2 with multiple simultaneous workloads)
Could you explain suboptimal quality in certain usages part of the release notes?
Currently we use simple non-FEI transcoding pipelines (without advanced encoding options), deinterlacing and RGBA+NV12 composition.

We have successfully updated from MSS 2018 R1 (linux kernel 4.4+patches) to MSDK 2019 Q1 (linux kernel 4.19 vanilla)
FYI, here are our benchmark/test results on Skylake i3-6300:

transcoding speed roughly the same (MSDK 2019 Q1 0-5% faster in different testcases)
MSDK 2019 Q1 slightly degraded mpeg2 quality (average PSNR: 39.0->38.1, average SSIM: 14.2->13.5)
h264 quality has not changed


Refactor phenotype probability comparisons

In this pr, the model probabilities between treatment cells and control cells were compared using the ks test for each phenotype and plate. Please see the README for additional details.  The resulting comparison data and code to generate the ks comparisons are in this pr. Please let me know if you have any questions or suggestions.

Thanks Mike, merging now!


Users can submit the Pay button twice before 3DS view pops up

Describe the bug
In our usage once submitted and waiting for the 3DS screen to pop up, there is a few seconds (especially on slower phones) and users can resubmit the Pay button.
To Reproduce
Steps to reproduce the behavior:

Go to the payment details page and enter your card details
Click on the Pay button
Button shows a loading animation
Right before the 3DS screen pops up, the Pay button is tappable again and can cause double payments if submitted

Expected behavior
In Android SDK we have an onSubmit event that we use to show a progress indicator while the payment is in progress. It will block user interactions. In iOS there is no such event.

Hi @siavash-mohseni, thanks for raising this.
Which version of Frames-iOS are you using?
Thanks,
Patrick

Hi @patrick-hoban-cko, it is 4.0.4.
Thanks

Hi @siavash-mohseni ,
The full payment flow is made off:

tokenisation (SDK Payment Form with Pay button)
processing (Application using the token for payment request)
3DS (SDK optional if additional security check is requested)

As mentioned, the SDK is responsible for steps 1 and 3, but is unaware of step 2. We have reviewed this shortcoming, but at this stage of the product we are unable to integrate it (maybe something to discover for the future @patrick-hoban-cko , @deepesh-vasthimal-cko).
As such, the application is responsible for the state during step 2. Some options we could recommend may be:

dismiss the tokenisation (/Payment Form) screen on the completion of the flow, on completion. This would allow you to show your branded app level screen between the steps. Since 3DS is not guaranteed to occur, this can be treated as a standard payment processing state.
add another overlay over the payment form preventing gestures. This is up to your design and journeys, but seems to me it may be harder to get right. Might work best if you have a full screen loading state that gets presented over the Frames VC. However it will complicate your navigation stack so need to be considerate of how you build & dismiss.

Let us know if we can help further,
Thank you,
Alex

Hi @alex-ioja-yang-cko,
I think your first suggestion should do it. We are currently testing a solution with that.
Thank you for your complete response.
Siavash


Docker container restart

Please let us know hot to restart all container which are running in service on particular node with single command.
Thanks in advance

@anassolanki Thank you for the feedback. You can take a look at the following documentation to learn more about the container restart policies:

https://docs.docker.com/config/containers/start-containers-automatically/
https://docs.docker.com/engine/reference/commandline/container_restart/


Include a markertype in Dataset.plot.scatter

Pardon me if I've missed something, but from the docs and the issues raised it doesn't seem like anyone has proposed to add a marker type in Dataset.plot.scatter. From the docs it seems that right now you can organize points using hue and marker size. It would be nice to add marker type to the mix, and I imagine that it wouldn't too hard.
The only issue I see is that there are a finite number of marker types by default, but that's no different from the finite number of colors in the default color wheel.
Thoughts?

According to matplotlib doc, ax.scatter has an argument marker to set the marker style. This can be done to add a new argument in _dsplot and scatter in xarray, and leave the determination of marker styles to matplotlib. A PR can be made if this is OK.

This definitely sounds okay by me. I'm trying to figure out on my own how to implement this, but these plotting functions are quite complicated with the decorators and the inferences and all! I haven't been able to make much sense of it unfortunately.

This can be done to add a new argument in _dsplot and scatter in xarray, and leave the determination of marker styles to matplotlib

sure, that sounds good. PRs welcome!

I started working on this, and quickly ran into the obstacle of not being able to differentiate points according to marker style (at least in a single call to plt.scatter), basically this https://github.com/matplotlib/matplotlib/issues/11155
Setting up several calls to plt.scatter (one for each marker style and related set of points) seems like a terrible idea to me, so I guess adding a marker argument would only make sense if the user wants to do it manually (several Dataset.plot.scatter calls) for the same figure.


Main page photo is CC BY but isn't attributed

Hello, does this diff solve it?
1237.txt

@LuckyPigeon looks good. You should submit a PR! If you need help I'm happy to point you to some resources or answer questions.

@LuckyPigeon ping? Interested in submitting a PR?


Do not create a folder in start menu per Microsoft UI fundamentals.

This PR may fix #69650 for new installs. (Untested)
I have no idea how the updater works and what should be done to fix this during updates.

Thanks for the PR, we've decided to not fix the original issue after all.


AML Studio stuck with wheel while launching on Macbook

Azure documentation issue guidance
I installed the ML workbench today on my Mac on 04/25 and its not starting up and giving me a rotating wheel.  I did look up the issue that is documeted on deleting the below file
on macOS
~/Library/Application Support/AmlWorkbench/AmlWb.settings
I do not see the AmlWorkbench/AmlWb.settings in my ~/Libary/Application Support path.

@arnabganguly - Can you please share the GitHub documentation you have followed for installation and deletion of the file.

Never Mind.. I was able to figure this out . Closing the issue .


Example skips TdApi.AuthorizationStateWaitTdlibParameters ??

I have set up my application at my.telegram.org (well it has some same parameters as the example)
But when I changed to my apiId and my apiHash, it skips that part then asking me to enter my phone number
My guess is that the code
 case TdApi.AuthorizationStateWaitTdlibParameters.CONSTRUCTOR:
                TdApi.SetTdlibParameters request = new TdApi.SetTdlibParameters();
                request.databaseDirectory = "tdlib";
                request.useMessageDatabase = true;
                request.useSecretChats = true;
                request.apiId = {myapiId};
                request.apiHash = "{myapiHash}";
                request.systemLanguageCode = "en";
                request.deviceModel = "Desktop";
                request.applicationVersion = "1.0";
                request.enableStorageOptimizer = true;

                client.send(request, new AuthorizationRequestHandler());
                break;

was skipped to this:
case TdApi.AuthorizationStateWaitPhoneNumber.CONSTRUCTOR: {
                String phoneNumber = promptString("Please enter phone number: ");
                client.send(new TdApi.SetAuthenticationPhoneNumber(phoneNumber, null), new AuthorizationRequestHandler());
                break;
}

What's the problem?

There is no way for the state AuthorizationStateWaitTdlibParameters to be skipped.

TDLib is a native library with JNI interface and therefore can be used in Maven projects.


Add mastodon extension

Description
This PR adds a Mastodon extension in hopes of becoming what the Twitter extension brought to Raycast.
Screencast

Checklist

[x] I read the extension guidelines
[x] I read the documentation about publishing
[x] I ran npm run build and tested this distribution build in Raycast
[x] I checked that files in the assets folder are used by the extension itself
[x] I checked that assets used by the README are placed outside of the metadata folder

What do you think about this view for the command Home

I can share source so you don't have to do it manually 😊
The same view has empty state flicker, when checking the isLoading property on the list, i shows:
12:09:03.459 true
12:09:03.461 true
12:09:03.462 true
12:09:03.506 false
12:09:03.507 true
12:09:04.483 false

It should only go from true -> false 😊

This is from the home command:
import { List } from "@raycast/api";
import { usePromise } from "@raycast/utils";
import { useMasto } from "./hooks/masto";
import StatusItem from "./components/StatusItem";
import { mastodon } from "masto";

export default function Home() {
  const masto = useMasto();
  const { data, isLoading, revalidate } = usePromise(
    async (masto?: mastodon.Client) => {
      if (!masto) return;
      return await masto?.v1.timelines.listHome();
    },
    [masto]
  );

  console.log(!masto || isLoading, !masto, isLoading);

  return (
    <List isLoading={!masto || isLoading} isShowingDetail>
      {data?.map((status) => (
        <StatusItem key={status.id} status={status} revalidate={revalidate} />
      ))}
    </List>
  );
}

I don't see how the code you provided is different from the source code now other than console.log. However, I've moved the avatar to the left and something I'd like to know is how to render the custom emojis in the Detail component as if it was a glyph.
And the flicker seems to be caused by usePromise returning isLoading: false when masto is not loaded (yet). Because there is no straightforward way to handle the dependencies of the usePromise yet, I'll just check if the data is empty instead.

I shared the wrong file
import { Action, ActionPanel, Icon, LaunchType, List, confirmAlert, launchCommand, showToast } from "@raycast/api";
import { mastodon } from "masto";
import { stripHtml } from "string-strip-html";
import { useMasto, useMe } from "../hooks/masto";
import dedent from "dedent";
import FavoriteAction from "./status/FavoriteAction";
import ReblogAction from "./status/ReblogAction";
import { getIconForVisibility, getNameForVisibility, isVisiblityPrivate } from "../utils/visiblity";
import BookmarkAction from "./status/BookmarkAction";

interface Props {
  status: mastodon.v1.Status;
  revalidate?: () => Promise<unknown>;
}

export default function StatusItem({ status: originalStatus, revalidate }: Props) {
  const masto = useMasto();
  const { data: me } = useMe(masto);
  const status = originalStatus.reblog ?? originalStatus;
  const content = status.spoilerText || status.text || stripHtml(status.content).result;

  return (
    <List.Item
      title={content}
      icon={status.account.avatar}
      accessories={[isVisiblityPrivate(status.visibility) && { icon: getIconForVisibility(status.visibility) }].filter(
        Boolean
      )}
      detail={
        <List.Item.Detail
          markdown={dedent`
            ## ${status.account.displayName.replace(":verified_coffee:", "![](verified2.png)")} \`${
            status.account.acct
          }\`

            ${content}

            ${status.mediaAttachments.map((media) => {
              switch (media.type) {
                case "image":
                case "gifv":
                  return `![${media.description ?? ""}](${media.previewUrl})`;
                default:
                  return "";
              }
            })}

            ${status.card ? `[${status.card.title}](${status.card.url})` : ""}
          `}
          metadata={
            <List.Item.Detail.Metadata>
              <List.Item.Detail.Metadata.Label title="Reblogs" text={String(status.reblogsCount)} icon={Icon.Repeat} />
              <List.Item.Detail.Metadata.Label
                title="Favorites"
                text={String(status.favouritesCount)}
                icon={Icon.Star}
              />
              <List.Item.Detail.Metadata.Label title="Replies" text={String(status.repliesCount)} icon={Icon.Reply} />
              <List.Item.Detail.Metadata.Separator />
              <List.Item.Detail.Metadata.Label
                title="Visibility"
                text={getNameForVisibility(status.visibility)}
                icon={getIconForVisibility(status.visibility)}
              />
              {status.application?.website && [
                <List.Item.Detail.Metadata.Separator />,
                <List.Item.Detail.Metadata.Link
                  title="Application"
                  text={status.application.name}
                  target={status.application.website}
                />,
              ]}
              {originalStatus.reblog && [
                <List.Item.Detail.Metadata.Separator />,
                <List.Item.Detail.Metadata.Label
                  title="Reblogged by"
                  text={originalStatus.account.displayName}
                  icon={originalStatus.account.avatar}
                />,
              ]}
            </List.Item.Detail.Metadata>
          }
        />
      }
      actions={
        <ActionPanel>
          {status.url && <Action.OpenInBrowser url={status.url} />}
          <Action
            title="Reply"
            icon={Icon.Reply}
            onAction={async () => {
              launchCommand({ name: "post", type: LaunchType.UserInitiated, context: { replyTo: status } });
            }}
          />
          <ReblogAction id={status.id} reblogged={status.reblogged ?? false} masto={masto} />
          <FavoriteAction id={status.id} favorited={status.favourited ?? false} masto={masto} />
          <BookmarkAction id={status.id} bookmarked={status.bookmarked ?? false} masto={masto} />
          {status.account.id === me?.id && (
            <ActionPanel.Section title="Manage my status">
              <Action
                title="Delete"
                icon={Icon.MinusCircle}
                style={Action.Style.Destructive}
                shortcut={{ modifiers: ["cmd"], key: "backspace" }}
                onAction={async () => {
                  if (!(await confirmAlert({ title: "Are you sure?" }))) return;
                  await masto?.v1.statuses.remove(status.id);
                  await revalidate?.();
                  showToast({ title: "Successfully deleted!" });
                }}
              />
              <Action
                title="Edit"
                icon={Icon.Pencil}
                shortcut={{ modifiers: ["cmd"], key: "e" }}
                onAction={async () => {
                  const source = await masto?.v1.statuses.fetchSource(status.id);
                  launchCommand({
                    name: "post",
                    type: LaunchType.UserInitiated,
                    context: {
                      action: "edit",
                      status: {
                        ...status,
                        text: source?.text,
                        spoilerText: source?.spoilerText,
                      },
                    },
                  });
                }}
              />
            </ActionPanel.Section>
          )}
        </ActionPanel>
      }
    />
  );
}

oh no :/
any update on this? @BasixKOR @pernielsentikaer

Oh, I think I forgot to push the changes to the PR...

The mentioned problems should be fixed by the last commit.

Did you see my shared code? Don't you want to add that?

Seems like the loading state is a bit wrong here, could you look into having loading = true from the start?
https://user-images.githubusercontent.com/38033107/231948980-4bd75470-d6eb-45c3-ae73-fe8e0cec2195.mp4

@BasixKOR has been working on #5001 for some time and it seems like it’s almost ready.
Now we also have #6117 and #6156 in the queue, we need to decide what to do with all three, are you up for selecting the best version and going with that and improving with the feature respectably from the other PRs?

I've left comments on the two PRs you've mentioned. It seems like #6156 has a better implementation on how it approaches OAuth (I assumed PKCEClient was unavailable on Mastodon, but it seems like it can work), but this PR has some features missing on the @SevicheCC's implementation.
I think the feature parity is somewhat similar, so I think I'd prefer to help @SevicheCC to implement some of the features since this PR's codebase became a bit of a mess due to handling masto.js with usePromise (which caused all sorts of incorrect loading status you've mentioned).

So we're closing this in favor of #6156, or?

Closing as superseded by #6156.


[TIR][Transform] Introduce new InjectPermutedLayout pass

This PR introduces the new InjectPermutedLayout pass, partially adapted from the old version.
This pass will permute the visiting indices of the shared memory with xor operations to avoid bank conflicts. For permutation details see p39 of these slides.
The current interface is:
with T.block("..."):
    T.block_attr({"permuted_layout": 1})
    # load or store to shared memory

The load/store operation could be:

BufferLoad node
BufferStore node
ptx_ldmatrix call
mma_store call

And the InjectPermutedLayout pass is injected in the lowering process in driver_api.cc. So after this pass in the building stage, the visiting indices will be permuted.
Notably this pass works after the CompactBufferAllocation pass because it relies on the shape of the shared memory in every threadblock.
cc @spectrometerHBH @vinx13 @Hzfengsy

@tvm-bot rerun

@tvm-bot rerun


https://identitydivision.visualstudio.com/StackOverflow/_queries/query/76481119-c35b-4799-bc86-09ab4a7942fc/

Lou mentions  the following; "Currently only ADFS is the supported auth method for Alternate ID, PHS/PTA may work in certain scenarios but it was not thoroughly tested. We are working to get that information added to the updated article." Recommend for the follow up.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 74a7839e-3be4-a6b8-10ac-addc1285d0a6
Version Independent ID: 11a6d260-6e5e-0434-5503-198285446c2a
Content: Choose the right authentication method for your Azure AD hybrid identity solution
Content Source: articles/security/azure-ad-choose-authn.md
Service: active-directory
GitHub Login: @martincoetzer
Microsoft Alias: martincoetzer

Yes, we are working on the test cases for this. The links shows the configuration required for Alt-ID for PHS and PTA, but it is usually the app that breaks after the authentication succeeds. Stay tuned.

#please-close


Multiple storyboards

Hi, Firstly, fantastic control, love it and got it working really easily, however we have decided to implement it throughout our application instead of just on the home screen and I am having issues with a setup of multiple storyboards, will this sidebar work for me?  The errors I am receiving are when a segue to a different storyboard to main occurs.
Many thanks.
Conrad

Apologies, I have managed to get this working, please close :+1:

Glad you were able to get it working.


Added manpage

I have created this manpage for Debian, but it would be best to keep in the upstream repository so that others can use it too!

@vishnubob did you have the time to take a look?


Formatted observation list items, use modal for observation images

These are changes are only for an observation list item component.
Includes:

Human readable timestamps
Clickable thumbnails for any observation images
Modal for observation images upon clicking their respective thumbnails
Basic styling

Resolves #135

great UI :+1: , like the modals in particular

:+1: