proposal: spec: comparable as a case of a generalized definition of basic interfaces

Abstract
By reviewing a few concepts, we can define type sets, constraint interface satisfaction, interface implementation, in a way that makes the comparable interface obey a general rule  instead of being an exception. In doing, so, constraint interfaces would be strictly equivalent to interface types. This would be future-proof their use as regular types.
Basically, a Go type defines structure and behaviors i.e. (a set of constraints) on raw data.
Some set of constraints are first-class citizens in Go and are represented by interface types.
The types that satisfy a given set of constraints form a type set.

Interface satisfaction is then simply the satisfaction of the set of constraints denoted by that interface
Interface implementation ensures that a type is at least as constraining as a given interface

e.g. any is less constraining than comparable: it does not implement comparable because its type set holds types that do not satisfy comparable
intimplements comparable: every type in the type set of int satisfies comparable
- constraint satisfaction is type set membership of a type
- interface implementation is type set inclusion of the type set of a type.

Now comparable can just simply be one of these interface types that describe a set of constraints: {"has the comparison operators == and !=} just as defined in the spec.
All current Go interface types satisfy this constraint even though they rarely implement it. That's why they can instantiate type parameters constrained by comparable.
comparable could be used as a regular type in the future: assignment requiring interface implementation, it would ensure the absence of panic on equality testing for types implementing it.
Remains to model type sets in terms of sets of constraints.
While type sets are often infinite, we know that the constraints of the language are of finite quantity.
The rest is set operations on sets of sets of constraints (this is not a stutter, this is accounting for unions)
Proposal
(Re)define type set, interface satisfaction, interface implementation so that comparable follows a general rule of interface types. And in doing so, lay the ground work for a potential use of all interfaces outside of generic code ( interfaces as sum/union types).
Background
What is an interface?
A type specify structural and behavioral constraints on raw data.
The Go language has a special construct in its type system that can be used to describe some of these constraints: interface types.
(note that, by virtue of being types themselves, these interface types also satisfy their own set of constraints that may be completely unrelated)
An interface type can describe constraints on types such as:

a set of methods
the underlying element ( ~T)
the availability of the comparison operators ( comparable)

An interface type may also describe a set of constraints as a combination of the above, using:

union interfaces
interface embedding (which provides intersection)

What is a type set?
Since a type specify a set of constraints that can be potentially satisfied by other types as well, we can gather these constraint-satisfying types into what is called a type set.
Type sets are fully described by a set of constraints. In mathematics, this would be set comprehension notation. A constraint would be a set intension i.e. a proposition.
As such, we do not need to compute type sets specifically (theoretically, a lot of type sets are infinite anyway).
We can just describe them using the finite number of constraints that can be modeled in Go.

type set of an interface type I :

if I is a basic interface is composed of every type that have the method sets of I. By definition, thta includes I itself
if type I = interface {~T} the typeset of I is the set of types whose underlying type is T
if I is defined as a union of type terms, the type set of I is the union of the type set of each term

type set of a concrete type T:

if T is a composite type (struct, array, slice, channel, ...), the type set of T includes all possible combinations obtained by substitution of the type U of an element with members of U's type set. If T is not a composite of interface types, type set of T is therefore the singleton {T}
if T is not a composite type, then the type set of T is the the singleton {T}

It's interesting to note that for composites of interface types, the type set includes types that cannot be defined in a Go program.
In theory, these are subtypes but since variance is restricted in Go, they do not appear as runtime types. This is not an issue since we do not propose to compute type sets explicitly but to rather operate on the set of constraints that define them.
Constraint satisfaction and interface implementation
While a type may satisfy a set of contraints, if that type is an interface type, that interface type may be used to describe a totally different set of constraints.
For example,

interface {int | string | bool} satisfies the constraints shared by all interface types. But it describes a whole other set of constraints. Therefore, it does not satisfy the set of constraints it denotes.

The aforementioned example shows that constraint satisfaction and interface implementation are different notions altogether, where interface implementation is taken to indicate constraint enforcement (or entailment).
If types may satisfy come constraints, they do not necessarily enforce them. (e.g. any satisfies comparable just as any interface currently, but a type satisfyting any does not mean it satisfies comparable)
Said otherwise, interface implementation tests that the constraints described by an interface can be found in the set of constraint defined by another type. This is a comparison of constraintive power.
A type T implements an interface I

iff typeset(T) ⊆ typeset(I)
iff constraint_set_described_by I ⊆ constraint_set_described_by T

i.e. every type that satisfies T also satisfies I.
Interface implementation is constraint satisfaction over the type set of a type. It is not constraint satisfaction of the type itself.
As showed above, in general, interface implementation does not imply interface satisfaction and vice versa.
For example:

interface{int | string | bool} implements itself but does not satisfy itself. (this is good, this is what we'd expect)
interface{int | string} implements interface{int | string | bool}` but does not satisfy it or itself (the interface is not in the type set)
any satisfies comparable but does not implement it

With the introduction of interface types and their semantics, there is a distinction between a type and its type set which is the reason for such difeerence.
type set of a type parameter
The type set of a type parameter is somewhat unknown. We just know that the type parameter itself satisfies a constraint interface.
In general, it can only be known to be assignable to itself.
It can be understood as a mostly opaque type variable but not necessarily an interface type.
Comparable type parameter
The spec states that: "In any comparison, the first operand must be assignable to the type of the second operand, or vice versa."
Assignability is based on interface implementation. The issue here is that a type parameter is not known to implement any specific interface.
We don't know a type parameter's type set before instantiation in the general case. We just know that every type implement themselves.
Examples
Let's borrow the examples from #56548 (spoiler: we arrive at the same result)

type mymap[K comparable, V any] map[K]V

func _[P any, Q comparable]() {
   var (
   	_ map[func()]string        // invalid with current and new rules: func() is not comparable
   	_ map[struct{ f P }]string // invalid with current and new rules: P is not assured to be comparable
   	_ map[struct{ f Q }]string // valid: key type is comparable

   	_ mymap[any, string]                // currently invalid, valid with new rules: any supports ==
   	_ mymap[struct{ f any }, string]    // currently invalid, valid with new rules: type of f supports ==
   	_ mymap[struct{ f func() }, string] // invalid with current and new rules: f is not comparable
   	_ mymap[struct{ f int }, string]    // valid: key type satisfies comparable
   	_ mymap[struct{ f P }, string]      // invalid with current and new rules: P may not be comparable because any does not implement comparable
   	_ mymap[struct{ f Q }, string]      // valid: key type satisfies comparable
   )
}

To be comparable means to satisfy comparable which itself means to satisfy the set of constraint described by comparable.
It does not mean to implement comparable, the latter implying some sort of substitutability (which appears in Go during value creation such as struct{any}{int(2)} or type assertions)
If we want to be able to require from a type paramter that it implements comparable, we will need something else. In the meantime, there should be no difference between what can be expressed in generic Go vs regular Go.
Observations

All types could be part of type sets, including interface types. This should not be an issue since type sets are not first-class types themselves. No Russell's paradox: the set of all type sets is not a type nor a type set.
type safety is guaranteed for variable assignment since it requires interface implementation
In terms of implementation, it could require a little bit more work around type sets (to be redefined in terms of constraint sets). However, I believe that this is the way to make it work as evidenced by the theory
This proposal ignores the current restrictions on constraint interfaces. They can remain and be lifted progressively. Especially since, for union types, it is expected that dealing with terms whose type set intersection is not empty may require some attention
some constraints are inter-related (notably methods impoly restrictings in terms of signature) and should be accounted for when checking constraint set set inclusion
a union of sets of constraint is not the set of the union of constraints
since variance is restricted (no subtyping), a variable's type is fixed. Constraints sets are not mutating. It should simpliy and make constraint satisfaction checking tractable.

spec (probably not exhaustive)
Unchanged:

https://go.dev/ref/spec#Comparison_operators
https://go.dev/ref/spec#Assignability (afaict)
https://go.dev/ref/spec#Type_assertions

Would need modifications:

https://go.dev/ref/spec#Interface_types (somehow the definition of a type set is correct for basic interfaces, but generalized interfaces and interface implementation need to change; something about interface satisfaction could be added too)
https://go.dev/ref/spec#Type_parameter_declarations (the paragraph defining comparable implementation would would need amendments)

Appendix
A similar treatment can be found in the type theory literature under the name semantic subtyping and perhaps CSP.
For most of the constraints expressed in Go, we would rarely (if ever) need to prove the satisfiability of interface types (which is just proving that they can be inhabited, i.e. proving that their type set is not empty).
Notably because the type checker forbids a lot of unsatisfiable interfaces already, and also because the expressivity around creating new interfaces is limited. Union interface changes that a little but not that much.
In any case, it should let us establish the semantics of an hypothetical FutureGo in one fell swoop, hopefully.

cc @ianlancetaylor @griesemer
Although I hesitated before creating a new issue, but just in case it can generate some ideas as I believe it is one way of looking at the problem.

We have proposed #56548 which I think covers the same area as this proposal.  If #56548 is accepted then I don't think there is anything to do here.  Putting this proposal on hold pending a decision on #56548.

@ianlancetaylor thanks for the heads up. From a cursory look there are still a few differences that we can discuss in #56548
I will comment there in a few.

This issue is on hold but because of a lengthy discussion in #56548 related to this issue, I reread this proposal. As is, this proposal is very vague. It crucially depends on how type sets are defined and interface and constraint satisfaction differ. (By contrast, #56548 leaves type sets as is and simply introduces an exception to the rule for constraint satisfaction.)
This proposal suggests that constraint satisfaction is based on type membership. In order to understand which programs are permitted and which are not, it is crucial to be precise what the type sets are.
Without a precise definition of how type sets are constructed per this proposal, we cannot further consider this. The prose talks about 3 possible ways, based on propositions, or a list of types, or a singleton type - none of it laid out in detail. The proposal should define exactly what is the type set of a non-interface type, of an interface type (which is not a type parameter), and a type parameter.
Per this proposal, comparable is the set of all types for which == is defined. Therefore, the type struct{any} is in the type set of comparable.
Per the "type set membership rule", struct{any} satisfies the constraint comparable (it is a member). Based on this, the following function is valid which is what one would expect:
func f[P comparable]() {
	f[struct{ any }]()
}

Now the question, is the following function valid?
func g[Q struct{ any }]() {
	f[Q]()  // calling f from the example above: does Q satisfy comparable?
}

That is, is the type Q (a type parameter) a member of the type set of comparable? If not, why not? (How are the type sets of P and Q computed?)
If the program is valid, why? (I note that per #56548 this function is not valid because Q is not strictly comparable.)
Without clear answers to these questions, we cannot further consider this proposal - there's not enough here. Thanks.

So just a few notes.
I.
There was indeed an inaccuracy but It's resolvable.
Basically, I didn't account for the distinction between types such as int,bool, string... (I'll call them atoms) and  product types. For atoms, the typeset is  a singleton.
For product types, it is not necessarily a singleton, especially if one term of the product is an interface.
The typeset holds every possible combinations.
Where it might a bit involving is to spec this in Go I think. Theoretically it's not an issue. It stems from a semantic subtyping relationship (instead of a syntactic one).
Some of the elements of those type sets are semantic subtypes only. Meaning, they do not exactly appear as full-fledged subtypes in Go, especially since variance is not allowed.
We might have a feel for them when creating a value such as struct{any}{int(2)}, It works because int is a subtype of any so somehow we have struct{int} as a semantic-only subtype of struct{any}.
As you rightly said, it is a bit more of a mathematical idea of type sets. It should still be tractable however.
II.
On that topic, another important note to address why we can lift the restriction on type set membership of interface types.
I think it was the right move to make that retriction out of caution.  The issue I think was avoiding a circularity problem of type definitions, i.e. avoiding Russel's paradox..
But since interfaces are not type sets, they simply define them and more importantly type sets are not first class types within the language, there is no issue: the set of all typesets is not a type nor a typeset.
So it's fine for any to belong to its own typeset for instance. It shouldn't create problems.
Thankfully you challenged, product types had escaped me!

@griesemer @ianlancetaylor updated the proposal. Hope it helps. Many thanks.

Apologies for being blunt, but AFAICT this proposal remains as vague as it's been before.

(Re)define type set, interface satisfaction, interface implementation so that comparable follows a general rule of interface types. And in doing so, lay the ground work for a potential use of all interfaces outside of generic code ( interfaces as sum/union types).

We really don't want to redefine all these things if we can avoid it. It would take a long time to understand the implications. Nor is it clear how all these redefinitions work.
"And in doing so" is meaningless w/o actual explaining what it is that's being done in precise detail.
There is also no need to "lay the ground work for a potential use of all interfaces outside of generic code": that possibility exists already. The existing definitions in the spec suffice, we simply have to remove the restrictions in place.
Some comments:

Why is is important that "if T is a composite type (struct, array, slice, channel, ...), the type set of T includes all possible combinations obtained by substitution of the type U of an element with members of U's type set."? Why do we need to look inside such types? Basically, if a have a struct{any} the type set would include struct{int}, struct{float32}, struct{...}, etc. according to this description. This seems extremely complicated. There's no motivation given. It also seems incorrect.

"interface {int | string | bool} satisfies the constraints shared by all interface types. But it describes a whole other set of constraints. Therefore, it does not satisfy the set of constraints it denotes." - These three sentences make no sense to me.

There are various rules w/o actually defining the terms precisely. For instance, there are constraint sets and constraint set inclusion, but for that to make any sense, we need to know exactly what a constraint set looks like, i.e., what a constraint looks like. The proposal text says "a type specifies a set of constraints" and all the types that satisfy the constraints make up a type set. Some constraints are types themselves, another constraint is the ability to perform ==, or so it seems like. So constraints seem to have different forms. How can they be compared? How can we see if they are the same? W/o knowing this, how can we see if they are included in another set? This things are all unclear.

Note that in the current Go spec, we use the term "constraint" simply to denote an interface in a "constraint position". It's still just an interface. A constraint is not a new thing. Also, in the current Go spec, we have types (well defined), type sets (which are also well defined, namely sets of these types, but excluding interface types), and that's it. We have a clear understanding of when two types are the same (identical is defined for types). We can therefore tell if a type is included in a type set. We can therefore tell if a type set if a subset of another type set. And so forth. All these things are pinned down in exact details. Otherwise we don't know how to implement this.
The examples, which are the ones from #56548, arrive at the same result. There's no explanation as to why that is the case. But more importantly, if one arrives at the same result, what is the point of this proposal? It all sounds much more complicated.
In summary, it is not clear to me why there is anything here that is not already achieved with the much simpler #56548. There's also no need to lay any groundwork for the generalized use of interfaces. We have laid that groundwork with the introduction of type sets.
I believe this proposal should be declined.

Sorry, I believe it's only vague if one only reads the proposal paragraph which just signify the scope of the change. Everything is explained in the later parts (and the abstract). How can I make this paragraph better?
Also, let me address your specific comments to hopefully make things clearer:

As explained above, the set theoretic interpretation of types is based on a subtyping relationship. This is this relationship that is used during interface implementation (the subsuming rule).  I haven't perhaps explained this in detail because Go does not introduce these terms in its spec. In practice we do not have to exactly identify all these (sub)types. I mentioned them because otherwise, I don't see how one can explain why for struct and arrays, every field needs to be comparable or implement comparable. As explained, these subtypes do not exist anyway because Go's type constructors are invariant.
It's perhaps easier to see with another example: type S struct{any} has subtypes type S struct{int}  and type S struct{[]int}(note the same name which should make it obvious it cannot really exist).
One of these subtypes does not satisfy comparable.
Again, it is just meant to justify why in practice implementing comparable relies on checking that each field type implementscomparable for struct and array types. It's probably better explained in the theory.

This would probably be more relevant if we considered a relaxation of the rules around constraint interfaces to be usable as regular interface types and perhaps that a better example would be more explicit as well.
interface{[]byte | string} would satisfy comparable but does not represent such constraint. It however represents the constraint of being either []byte or string. That's what was meant.

I have not modeled constraints precisely but I don't think this is very important at this stage. I have however indicated that these constraints would be propositions. It would suffice to compare sets of propositions/predicated by checking for their presence or absence.

I'm not proposing to add much to Go that is not here already.
What is being comparable or implementing a given method sets if not just constraints on types?
While we arrive at the same result as #56548 I think it is objectively much easier to reason about:
We eschew two definitions of comparability and potentially two kinds of type sets in the future.
It's just about the clear distinction between interface satisfaction and interface implementation.
For instance, the rules in #56548 cannot handle an interface such as : interface{ int | string}. The rules would have to change anyway. So I don't really think it is much simpler.

Just to be clear, I did read the entire rewritten section.

struct{int} is not a subtype of struct{any}: I cannot use a value of struct{int} type in place of a struct{any}. I can also not use the type struct{int} to instantiate a type parameter constrained by interface{struct{any}}. Not that that matters.
interface{[]byte | string} does satisfy comparable, agreed. interface{[]byte | string} also satisfies itself. So I'm not sure what your point is.
Propositions - at least the way you have described them before - may describe overlapping type sets. So one cannot simple check whether certain propositions are present or absent. It's more complicated than that. Which is why I was asking for precise details. "It would suffice to compare sets of propositions/predicates by checking for their presence or absence." is handwaving.

The rules in #56548 certainly can handle the interface{ int | string} case: first of all, the #56548 rules are an extension of the existing rules, and the existing rules already cover this case just fine (#56548 is not even needed for this). interface{ int | string} implements itself, and satisfies itself. And it even happens to satisfy (and implement) comparable (you can even try it out in a 1.19 playground). So no rules need to change for this case at all.
Anyway, thanks for trying to clarify this proposal. Still, I don't think there's enough here to proceed in any meaningful way. I have tried to understand what you're saying and have failed. I will refrain from further comments. Thanks.

Thank you for reviewing this. Just to clarify some more.

Yes, depth subtyping is affected by the invariance. That's why I made a distinction between a type and a semantic subtype. The type struct{int} is different from the subtype of struct{any} where any is substituted by int.
Here I think that my understanding diverge. If interface{string | []byte} satisfies itself, doesn't that mean that this interface type would be able to instantiate a constraint expecting either a string or byteslice type? We have discussed it before and I think it's problematic and unexpected. However, that interface should implement itself.
The difference is that interface implementation and interface satisfaction should only be the same perhaps for basic interfaces. For instance, I don't understand how an interface type can satisfy the constraints of being an int or string... How would that work with operators such as +?

Maybe someone else can explain because I don't understand the logic.

Re. Comparing sets of constraints and overlapping typesets, I am not sure I understand. Do you (or anyone) have an example where it would not work?
If the worry is about unions, that's why these sets of set of constraints cannot be collapsed in a single set of constraints. Each set should be checked separately for inclusion.
Perhaps that I'm overlooking something however.
Thanks again.

@griesemer @ianlancetaylor here is the idea regarding checking interface implementation (as checking hte presence of sets of constraints) in a bit more details. Hope you or anyone else can take a look whenever you have time. Thanks again.
Currently, the constraints on types that can be represented by interfaces in Go are:

to  be a given type
to have a given core type
to have a given set of methods
to be comparable
any combination of the above (conjonction or disjunction i.e. intersection or union)

Taking the abstract example of :
type C interface{
  a | b | c | d
  e | f
  g | h
}

Implementing C is merely implementing either aeg or aeh or afg or afh or beg or bfg ...and so on.
Where each letter corresponds to a combination of the constraints listed above.
If in theory, checking for C may seem exponential in the numbers of constraints being combined (in the WORST case only).
This seems to be a case of expansion of aboolean formula into DNF form.
However, in practice, the restriction on the domains of many constraints which make them incompatible with each other simplify things. ( if a is int and e string, aeg and aeh can be eliminated).
The checking  should also be  parallelizable.
So it shouldn't be a big worry.
Generalized Interface implementation checking
There are a few steps needed to check that a type T implements an interface I:

retrieve the relevant constraints that exist for T (possible ones are listed in the section above)
represent I as a tree of constraints (Multi-valued Decision Diagram)
FInd out if any branch of I hold a set of constraints that can be found in T's list of constraints (if yes, T implements I)

Tranforming a type iconstraint into a Tree Representation of a Boolean Formula
The idea is that for a  type T to implement an interface I, it means that it is at least as constraining. (it implements the constraints described by I)
Meaning that, at a minimum, the constraints that are represented by I can be found on T. In the case of I defined by unions, it is sufficient that any subconstraint appears on T.
One way to represent such constraints is to use a tree datastructure such as a Multi-valued Domain diagram that would represent the different constraint satisfaction branches of a boolean formula.
This is just a tree representation of the different constraint compnents of an  interface.
The idea of checking the presence or absence of sets of constraints is basically just that same idea implemented as an adhoc  MDD.

// ConstraintNode is what the decision tree is made of.
// Each node accumulates the constraint of its ancestor nodes in a Constraint object.
type ConstraintNode{
  Accumulator Constraint // representation of the overall set of constraints that need to be present when checking that node
  Next []*ConstraintNode
}

type Constraint struct{
  // Kind an be a combination of:
  // Type (binary: 00001);
  // CoreType (00010);
  // MethodSet (00100);
  // Comparable (01000);
  // OtherConstraint (10000),
  // Invalid (00000)
  Kind int

  Type *types.Type
  CoreType *types.Type
  MethodSet map[*types2.Func]bool // the goal is to store method signatures, not sure if *Func allows for comparison of identital signatures
  Comparable bool
  Other []*ConstraintNode // if a term of the union is another constraint that holds a union, we just store a ref to its MDD root
}

Checking interface implementation

first, we create the tree corresponding to the constraints of T (if T is an interface that has union terms, we will need to check every branch for constraint implementation)
then we create the tree corresponding to the constraint of I
last, we check that on each branch of the MDD of T,  we can find the constraints defined by any one branch  of the MDD of I. (at least one is necessary and sufficient)

Reminder re. constraint satisfaction
constraint satisfaction is not constraint implementation.
A type may satsify a constraint such as comparable. Doesn't mean that it implements it. A simple example is any.
In general, interface types describe constraints that they do not satisfy themselves.
type sets ?
We wouldn't need to compute them anuymore. The type set would be informally constrcuted by the types which satisfy the tree representation (MDD) of the constraint set.

I also think that it's very likely that we can convert constraint satisfaction into a boolean formula.  But determine whether a boolean formula is satisfiable is itself an NP complete problem.  You suggest that this shouldn't be a big worry, and I agree.  But the type set approach isn't a big worry either in practice.  It's only in edge cases that we run into problems, and edge cases will also be a problem with the boolean formula approach.

Yes, I understand. Actually, if we can remain with the current implementation choices that's fine by me by all means.
For the current use-cases it works.
I'm just a bit concerned about what it entails in terms of complexity on the spec and over the long-term.
This proposal is just an attempt to have a single general definition of

interface
satisfaction
implementation

without introducing special cases (simpler to explain) for now and later.
It's a bit unfortunate that the easiest way to make these changes require a bit more implementation work, afaict.
Then again, you probably are also aware of some edge cases that I'm not thinking about?

Note I'm not sure that we actually need to solve SAT exactly. Unless we want to show that any interface definition in Go can be satisfied. We probably just need to be able to check whether a given type satisfies a constraint or not: a case-by-case computation which is a much easier problem.
In theory, it does allow for unsatisfiable interfaces to be defined and go unnoticed until they are being used.
In practice, within the context of the current Go constraints, I think even this is not a problem. There are only so many options for an interface to be unimplemntable (conflicting method sets, conflicting type/coretype) anyway. That can probably be checked easily.
Thanks to invariance and given the limits on the constraints expressible in Go, the reducibility of MDD (by elimination of redundant  nodes/paths), I think it is tractable and gets rid of edge-cases related to constraint cycles in union interfaces (if union terms are ever relaxed to be general interfaces).

Thanks again :)


Add request headers dinamically

I am developing a filter to add headers dinamically in response and request. Adding headers in the response works as expected but executing the same operation for the request throws an UnsupportedOperationException. I feel this inconsistent, is this the expected behavior or a TBD?
    @Bean
    public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
        return builder.routes()
                .route("newroute",
                        route -> route.path("/mypath")
                                .filters(defaultFilters())
                                .uri(newrouteUrl))
                .build();
    }

    private Function<GatewayFilterSpec, UriSpec> defaultFilters() {
        return f -> f.preserveHostHeader().filter(this::addHeaders);
    }

    // Add header dinamically
    private Mono<Void> addHeaders(ServerWebExchange exchange, GatewayFilterChain chain) {
        org.springframework.util.MultiValueMap<String, String> map = new HttpHeaders ();
        map.add("myNewHeader","value");
        exchange.getResponse().getHeaders().addAll(map); // Works like a charm!
        exchange.getRequest().getHeaders().addAll(map); // throws UnsupportedOperationException
        return chain.filter(exchange);
    }

I do not know if it is related to https://github.com/spring-cloud/spring-cloud-gateway/issues/422
Thank you,
Cheers.

Please see the add request header filter factory. The request needs to be mutated.

Following the AddRequestHeaderGatewayFilterFactory in:
https://github.com/spring-cloud/spring-cloud-gateway/blob/master/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/filter/factory/AddRequestHeaderGatewayFilterFactory.java
The request is mutated but the header is not in the exchange. I don't know if I am missing something.
  // Add header dinamically
   private Mono<Void> addHeaders(ServerWebExchange exchange, GatewayFilterChain chain) {
       MultiValueMap<String, String> map = new HttpHeaders ();
       map.add("myNewHeader","value");
       exchange.getResponse().getHeaders().addAll(map); // Works like a charm!

       ServerHttpRequest request = exchange.getRequest().mutate()
          .header("myheader", "value")
          // Also tried  .headers(headers -> headers.addAll(map))
          .build();

       exchange.mutate().request(request).build();
       return chain.filter(exchange);
   }


Support for Running/Debugging Multiple Instances of VS Code Extension

While developing my VS Code extension, it would be nice to be able to run multiple instances of it. Currently when I run the project, a separate window labeled [Extension Development Host] opens. If I open another window from this Extension Development Host, I would expect the new window to also be running the extension, but it is just a normal instance of VS Code as indicated by the absence of "[Extension Development Host]".
The only workaround to be able to test multiple instances requires packaging the extension and temporarily installing it. See this related post: https://stackoverflow.com/questions/38303086/vscode-extensions-not-working-with-multiple-instances

@kimprice you can debug multiple instances of your extension if you duplicate the launch config and give it a different name.


WriteElement() in IaXmlWriter.cs

The WriteElement() in IaXmlWriter.cs has many overloads.  e.g.
public void WriteElement(string localName, string value, bool writeNull = false)
public void WriteElement(string localName, int? value, bool writeNull = false)
public void WriteElement(string localName, decimal? value, bool writeNull = false)

If I have a custom field that's actually null this method would be called as below based on its implementation using something like ProjectCreate()
WriteElement("CustomFielName", NULL, true)

Since that's always hard-coded to write null fields, the WriteElement signature with a null is ambiguous between the three WriteElement() examples above.

This is going to be fixed in the next minor release.


Missing built-in functions

Comparison with https://help.sap.com/doc/abapdocu_750_index_htm/7.50/en-US/index.htm
https://github.com/abaplint/abaplint/blob/master/packages/core/src/abap/5_syntax/_builtin.ts
acos			( arg )
asin			( arg )
atan			( arg )
bit-set			( arg )
boolx			( bool = log_exp bit = bit )
char_off		( val = text add = pos [off = off] )
charlen			( arg )
cmax			( val1 = text1 val2 = text2 [val3 = text3] ... [val9 = text9] )
cmin			( val1 = text1 val2 = text2 [val3 = text3] ... [val9 = text9] )
contains_any_not_of	( val = text sub|start|end = substring [off = off] [len = len] [occ = occ] )
contains_any_of		( val = text sub|start|end = substring [off = off] [len = len] [occ = occ] )
cos			( arg )
cosh			( arg )
count			( val = text {sub = substring}|{regex = regex} [case = case] [off = off] [len = len] )
count_any_not_of	( val = text sub = substring [off = off] [len = len] )
count_any_of		( val = text sub = substring [off = off] [len = len] )
dbmaxlen		( arg )
distance		( val1 = text1 val2 = text2 [max = max] )
exp			( arg )
find_any_not_of		( val = text sub = substring [off = off] [len = len] [occ = occ] )
find_any_of		( val = text sub = substring [off = off] [len = len] [occ = occ] )
find_end		( val = text regex = regex [case = case] [off = off] [len = len] [occ = occ] )
insert			( val = text sub = substring [off = off] )
ipow			( base = arg exp = n )
log			( arg )
log10			( arg )
match			( val = text regex = regex [case = case] [occ = occ] )
matches			( val = text regex = regex [case = case] [off = off] [len = len] )
nmax			( val1 = arg1 val2 = arg2 [val3 = arg3] ... [val9 = arg9] )
nmin			( val1 = arg1 val2 = arg2 [val3 = arg3] ... [val9 = arg9] )
numofchar		( arg )
segment			( val = text index = idx [sep|space = sep] )
sin			( arg )
sinh			( arg )
sqrt			( arg )
substring_from		( val = text {sub = substring}|{regex = regex} [case = case] [occ = occ] [len = len]  )
substring_to		( val = text {sub = substring}|{regex = regex} [case = case] [occ = occ] [len = len]  )
tan			( arg )
tanh			( arg )

yea, I've just added the once found missing so far

Done https://github.com/abaplint/abaplint/pull/1330


[Feature Request] Adding label to Scatter plot

Hello @gitbrent !
I really appreciate the library that you created, I happen to have a small feature not sure if is possible? So for generating a XY SCATTER chart would it be possible to add label to each of the data point? Right now you can only add label to Bar chart or Radar chart, not Scatter chart.
// Chart Type: XY SCATTER var dataChartScatter = [ { name:'X-Axis', values:[1,2,3,4,5,6,7,8,9,10] }, { name:'Y-Value 1', values:[13, 20, 21, 25] }, { name:'Y-Value 2', values:[21, 22, 25, 49] } ]; slide.addChart( pptx.charts.SCATTER, dataChartScatter, { x:1.0, y:1.0, w:6, h:4 } );
Let me know, thanks!
Hongyu

Hi @nevermore2014 ,
If you'd like to look through the code and see what it would take to add this feature via a pull request, i'd encourage you to do so.

@ReimaFrgos oh man, who are you.. you are just the equalizer to me, thanks so much!! I would love to buy you a cup of coffee if you are in great Boston area!

Do we have support for labels in BUBBLE CHART?


Adds a sample test based on the new test framework

Thanks for the PR! 🚀✅ Lint checks have passed.

I don't seem to have access to merge this anymore. Do you see it?

/gcbrun


Highlighting inside constructor base call is broken

Environment data
dotnet --info output:
.NET Command Line Tools (1.0.0-preview2-003121)

Product Information:
 Version:            1.0.0-preview2-003121
 Commit SHA-1 hash:  1e9d529bc5

Runtime Environment:
 OS Name:     ubuntu
 OS Version:  16.04
 OS Platform: Linux
 RID:         ubuntu.16.04-x64

VS Code version: 1.6.0-insiders
Theme: https://marketplace.visualstudio.com/items?itemName=Tyriar.theme-glacier
C# Extension version: 1.4.1
Steps to reproduce
For code:
public class A
{
    public A() : base(
            1,
            'abc'
            new B<char>(),
            new B<string>()) {
        var a = 1;
        var b = "abc";
        var c = new B<char>();
        var c = new B<string>();
    }
}

Expected  behavior
The highlighting inside base() should be colored the same as outside it.
Actual behavior

Looks like we need another scope for constructor initializers.

This should be fixed in the next release:


CVE Search

Adds Rest controller to search the CVE data in PG using full text search operators.

Codecov Report

Merging #27 (d80aac3) into master (ff435a1) will decrease coverage by 8.43%.
The diff coverage is 11.36%.

@@             Coverage Diff              @@
##             master      #27      +/-   ##
============================================
- Coverage     71.37%   62.93%   -8.44%
+ Complexity       67       65       -2
============================================
  Files            30       28       -2
  Lines           255      286      +31
  Branches         11       14       +3
============================================
- Hits            182      180       -2
- Misses           65       99      +34
+ Partials          8        7       -1

Impacted Files
Coverage Δ
Complexity Δ

.../andrewkboyd/mitresiphon/configuration/Config.java
100.00% <ø> (ø)
4.00 <0.00> (ø)

...wkboyd/mitresiphon/configuration/QuartzConfig.java
100.00% <ø> (ø)
7.00 <0.00> (ø)

...tresiphon/controllers/ResourcesStatController.java
100.00% <ø> (ø)
2.00 <0.00> (ø)

...a/xyz/andrewkboyd/mitresiphon/dao/BaseDaoImpl.java
20.00% <ø> (-20.00%)
1.00 <0.00> (-1.00)

...va/xyz/andrewkboyd/mitresiphon/dao/CVEDAOImpl.java
3.70% <0.00%> (-12.97%)
1.00 <0.00> (ø)

...yz/andrewkboyd/mitresiphon/dto/SearchCriteria.java
0.00% <0.00%> (ø)
0.00 <0.00> (ø)

.../xyz/andrewkboyd/mitresiphon/dto/SearchResult.java
0.00% <0.00%> (ø)
0.00 <0.00> (ø)

...java/xyz/andrewkboyd/mitresiphon/entities/CVE.java
0.00% <ø> (ø)
0.00 <0.00> (ø)

...andrewkboyd/mitresiphon/entities/ResourceStat.java
16.66% <ø> (ø)
2.00 <0.00> (ø)

...xyz/andrewkboyd/mitresiphon/entities/TestStub.java
0.00% <ø> (ø)
0.00 <0.00> (ø)

... and 7 more

Continue to review full report at Codecov.

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

Codecov Report

Merging #27 (d80aac3) into master (ff435a1) will decrease coverage by 8.43%.
The diff coverage is 11.36%.

@@             Coverage Diff              @@
##             master      #27      +/-   ##
============================================
- Coverage     71.37%   62.93%   -8.44%
+ Complexity       67       65       -2
============================================
  Files            30       28       -2
  Lines           255      286      +31
  Branches         11       14       +3
============================================
- Hits            182      180       -2
- Misses           65       99      +34
+ Partials          8        7       -1

Impacted Files
Coverage Δ
Complexity Δ

.../andrewkboyd/mitresiphon/configuration/Config.java
100.00% <ø> (ø)
4.00 <0.00> (ø)

...wkboyd/mitresiphon/configuration/QuartzConfig.java
100.00% <ø> (ø)
7.00 <0.00> (ø)

...tresiphon/controllers/ResourcesStatController.java
100.00% <ø> (ø)
2.00 <0.00> (ø)

...a/xyz/andrewkboyd/mitresiphon/dao/BaseDaoImpl.java
20.00% <ø> (-20.00%)
1.00 <0.00> (-1.00)

...va/xyz/andrewkboyd/mitresiphon/dao/CVEDAOImpl.java
3.70% <0.00%> (-12.97%)
1.00 <0.00> (ø)

...yz/andrewkboyd/mitresiphon/dto/SearchCriteria.java
0.00% <0.00%> (ø)
0.00 <0.00> (ø)

.../xyz/andrewkboyd/mitresiphon/dto/SearchResult.java
0.00% <0.00%> (ø)
0.00 <0.00> (ø)

...java/xyz/andrewkboyd/mitresiphon/entities/CVE.java
0.00% <ø> (ø)
0.00 <0.00> (ø)

...andrewkboyd/mitresiphon/entities/ResourceStat.java
16.66% <ø> (ø)
2.00 <0.00> (ø)

...xyz/andrewkboyd/mitresiphon/entities/TestStub.java
0.00% <ø> (ø)
0.00 <0.00> (ø)

... and 7 more

Continue to review full report at Codecov.

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


Saving memory consumptions from passing copies of vectors

Since we don't expect to change the parameters after making a call, we
can make the reference constant.

I add additional patches that can save memory consumption.

For some reason CI is not running for PR's anymore. Just hang tight while I figure out why.

@lubatang can you reopen this PR so we can run it through the CI? Thanks

OK, I will close this one and re-open a new one.


[windows] Key state exception threw during hot restart/load

Related different platform issue
#67866 [macos] Changing caps Lock key input source throws exception
#74138 [macos] occasionally Shift keyPressed throws failed assertion exception
#87038 [windows][uwp] ctrl +shift + s crashes the app
Steps to reproduce

open and run any flutter project running on Windows (tested on Windows 10 21H2, lang=en)
inside ide edit something and save it to trigger hot reload
immediately after you have pressed ctrl/cmd + s, press another key like ctrl, shift, alt or key combo with these keys like ctrl + a
you can receive exception from flutter

======== Exception caught by services library ======================================================
The following assertion was thrown during a platform message callback:
A KeyRepeatEvent is dispatched, but the state shows that the physical key is not pressed. If this occurs in real application, please report this bug to Flutter. If this occurs in unit tests, please ensure that simulated events follow Flutter's event model as documented in `HardwareKeyboard`. This was the event: KeyRepeatEvent#09686(physicalKey: PhysicalKeyboardKey#700e0(usbHidUsage: "0x000700e0", debugName: "Control Left"), logicalKey: LogicalKeyboardKey#00100(keyId: "0x200000100", keyLabel: "Control Left", debugName: "Control Left"), character: null, timeStamp: 74:35:38.514627)
'package:flutter/src/services/hardware_keyboard.dart':
Failed assertion: line 432 pos 16: '_pressedKeys.containsKey(event.physicalKey)'

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

When the exception was thrown, this was the stack:
#2      HardwareKeyboard._assertEventIsRegular.<anonymous closure> (package:flutter/src/services/hardware_keyboard.dart:432:16)
#3      HardwareKeyboard._assertEventIsRegular (package:flutter/src/services/hardware_keyboard.dart:443:6)
#4      HardwareKeyboard.handleKeyEvent (package:flutter/src/services/hardware_keyboard.dart:535:5)
#5      KeyEventManager.handleRawKeyMessage (package:flutter/src/services/hardware_keyboard.dart:881:37)
#6      BasicMessageChannel.setMessageHandler.<anonymous closure> (package:flutter/src/services/platform_channel.dart:197:49)
#7      _DefaultBinaryMessenger.setMessageHandler.<anonymous closure> (package:flutter/src/services/binding.dart:387:35)
#8      _invoke2 (dart:ui/hooks.dart:186:13)
#9      _ChannelCallbackRecord.invoke (dart:ui/channel_buffers.dart:42:5)
#10     _Channel.push (dart:ui/channel_buffers.dart:132:31)
#11     ChannelBuffers.push (dart:ui/channel_buffers.dart:329:17)
#12     PlatformDispatcher._dispatchPlatformMessage (dart:ui/platform_dispatcher.dart:599:22)
#13     _dispatchPlatformMessage (dart:ui/hooks.dart:89:31)
(elided 2 frames from class _AssertionError)
====================================================================================================

flutter ver:
[✓] Flutter (Channel stable, 3.3.0, on Microsoft Windows [Version 10.0.19044.1889], locale en-US)
    • Flutter version 3.3.0 on channel stable at C:\tools\flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision ffccd96b62 (5 days ago), 2022-08-29 17:28:57 -0700
    • Engine revision 5e9e0e0aa8
    • Dart version 2.18.0
    • DevTools version 2.15.0

[✓] Visual Studio - develop for Windows (Visual Studio Professional 2022 17.1.3)
    • Visual Studio at D:\Program Files\Microsoft Visual Studio\2022\Professional
    • Visual Studio Professional 2022 version 17.1.32328.378
    • Windows 10 SDK version 10.0.19041.0

[✓] IntelliJ IDEA Ultimate Edition (version 2021.3)
    • IntelliJ at C:\Users\hoarfroster\AppData\Local\JetBrains\Toolbox\apps\IDEA-U\ch-0\213.6777.52
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart

[✓] VS Code, 64-bit edition (version 1.69.2)
    • VS Code at C:\Program Files\Microsoft VS Code
    • Flutter extension can be installed from:
      🔨 https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter

[✓] Connected device (1 available)
    • Windows (desktop) • windows • windows-x64 • Microsoft Windows [Version 10.0.19044.1889]

[✓] HTTP Host Availability
    • All required HTTP hosts are available

• No issues found!

The bug, in fact, has no effects on real production, as it will not have impact on the interactive ui, but considering it's pretty much bothering since it will be triggered endlessly by pressing any key once it's triggered, and it will corrupt the logs....with thousands of SAME EXCEPTION LOG

u can jump to 00:22:00 to see how the app threw the exception with keyboard interaction:
https://user-images.githubusercontent.com/41184947/188281627-e7cf5619-d44d-4e17-bb03-731f964e226b.mp4

The bug, in fact, has no effects on real production, as it will not have impact on the interactive ui, but considering it's pretty much bothering since it will be triggered endlessly by pressing any key once it's triggered, and it will corrupt the logs....with thousands of SAME EXCEPTION LOG

This bug has a very real effect on production, if you're using TextFields on for an application deployed on Windows, then using the shift keys for capitalization are going to crash your app.
This is a severe regression.

@PassionPenguin I cannot reproduce this issue on my Windows 11 machine. Does this reproduce with the default counter app? I tried running the app from the terminal as well as from Android Studio.
Flutter Doctor
flutter doctor -v (Stable)
[✓] Flutter (Channel stable, 3.3.0, on Microsoft Windows [Version 10.0.22000.918], locale en-IN)
    • Flutter version 3.3.0 on channel stable at C:\Users\Nabeel\fvm\versions\stable
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision ffccd96b62 (6 days ago), 2022-08-29 17:28:57 -0700
    • Engine revision 5e9e0e0aa8
    • Dart version 2.18.0
    • DevTools version 2.15.0

[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.0)
    • Android SDK at C:\android-sdk
    • Platform android-33, build-tools 33.0.0
    • Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 11.0.12+7-b1504.28-7817840)
    • All Android licenses accepted.

[✓] Chrome - develop for the web
    • CHROME_EXECUTABLE = C:\Program Files\BraveSoftware\Brave-Browser\Application\brave.exe

[✓] Visual Studio - develop for Windows (Visual Studio Community 2022 17.3.2)
    • Visual Studio at C:\Program Files\Microsoft Visual Studio\2022\Community
    • Visual Studio Community 2022 version 17.3.32819.101
    • Windows 10 SDK version 10.0.19041.0

[✓] Android Studio (version 2021.2)
    • Android Studio at C:\Program Files\Android\Android Studio
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.12+7-b1504.28-7817840)

[✓] VS Code (version 1.71.0)
    • VS Code at C:\Users\Nabeel\AppData\Local\Programs\Microsoft VS Code
    • Flutter extension version 3.46.0

[✓] Connected device (3 available)
    • Windows (desktop) • windows • windows-x64    • Microsoft Windows [Version 10.0.22000.918]
    • Chrome (web)      • chrome  • web-javascript • unknown
    • Edge (web)        • edge    • web-javascript • Microsoft Edge 105.0.1343.27

[✓] HTTP Host Availability
    • All required HTTP hosts are available

• No issues found!

flutter doctor -v (Master)
[✓] Flutter (Channel master, 3.4.0-19.0.pre.72, on Microsoft Windows [Version 10.0.22000.918], locale en-IN)
    • Flutter version 3.4.0-19.0.pre.72 on channel master at C:\Users\Nabeel\fvm\versions\master
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 202f5771f4 (6 hours ago), 2022-09-04 20:28:23 -0400
    • Engine revision b94120dfe9
    • Dart version 2.19.0 (build 2.19.0-168.0.dev)
    • DevTools version 2.17.0

[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.0)
    • Android SDK at C:\android-sdk
    • Platform android-33, build-tools 33.0.0
    • Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 11.0.12+7-b1504.28-7817840)
    • All Android licenses accepted.

[✓] Chrome - develop for the web
    • CHROME_EXECUTABLE = C:\Program Files\BraveSoftware\Brave-Browser\Application\brave.exe

[✓] Visual Studio - develop for Windows (Visual Studio Community 2022 17.3.2)
    • Visual Studio at C:\Program Files\Microsoft Visual Studio\2022\Community
    • Visual Studio Community 2022 version 17.3.32819.101
    • Windows 10 SDK version 10.0.19041.0

[✓] Android Studio (version 2021.2)
    • Android Studio at C:\Program Files\Android\Android Studio
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.12+7-b1504.28-7817840)

[✓] VS Code (version 1.71.0)
    • VS Code at C:\Users\Nabeel\AppData\Local\Programs\Microsoft VS Code
    • Flutter extension version 3.46.0

[✓] Connected device (3 available)
    • Windows (desktop) • windows • windows-x64    • Microsoft Windows [Version 10.0.22000.918]
    • Chrome (web)      • chrome  • web-javascript • unknown
    • Edge (web)        • edge    • web-javascript • Microsoft Edge 105.0.1343.27

[✓] HTTP Host Availability
    • All required HTTP hosts are available

• No issues found!

Yes it does cause the same problem on the counter app.@exaby73

(ps. you may failed because you did not follow what i said in the reprodce section..?)

flutter create tmp
open it with an ide or command line, but make sure it does support hot reload.
run it with -d windows
after it showed up the window, type some spacebar or add a comment in the dart source code to trigger the hot reload
as soon as you press ctrl+s, use the windows hotkey combo alt+tab or macos combo cmd+tab to change windows's focus node on the counter app (that is, focus the counter app before it is hot reloaded)
press ctrl, shift or alt, or some key combo with these three keys (what i press is ctrl +alt)

https://user-images.githubusercontent.com/41184947/188430570-dbe7f4c4-7500-4b36-8889-63c133e5633a.mp4

https://user-images.githubusercontent.com/41184947/188432613-543da24f-15ad-480d-ad4b-e5d3f0d1416e.mp4

well tbh since the problem here comes along with hot reload, what happened in real prod may not be the same prob, but the inside logic may be the same ( what i think is the way dart process key input makes things worse...? )

May be related to the same prob:
#110967
#94502

@PassionPenguin I cannot reproduce this issue on my Windows 11 machine. Does this reproduce with the default counter app? I tried running the app from the terminal as well as from Android Studio.
Flutter Doctor
flutter doctor -v (Stable)
flutter doctor -v (Master)

I build and use the app for Windows, not android, ios or anything else, and not via a remote desktop either, but natively on the same computer that I'm coding on.
This was not happening prior to Flutter 3.3
REPRO STEPS:
Open a command prompt, type:
flutter create
Then add
TextFormField(), in the column.
Then run the app in debug, focus the textfield and press the right and left shift a couple of times and then boom:

════════ Exception caught by services library ══════════════════════════════════
A KeyUpEvent is dispatched, but the state shows that the physical key is not pressed. If this occurs in real application, please report this bug to Flutter. If this occurs in unit tests, please ensure that simulated events follow Flutter's event model as documented in `HardwareKeyboard`. This was the event: KeyUpEvent#b8065(physicalKey: PhysicalKeyboardKey#00036(usbHidUsage: "0x1600000036", debugName: "Key with ID 0x1600000036"), logicalKey: LogicalKeyboardKey#00103(keyId: "0x200000103", keyLabel: "Shift Right", debugName: "Shift Right"), character: null, timeStamp: 12:23:19.108656)
'package:flutter/src/services/hardware_keyboard.dart':
package:flutter/…/services/hardware_keyboard.dart:1
Failed assertion: line 432 pos 16: '_pressedKeys.containsKey(event.physicalKey)'

════════════════════════════════════════════════════════════════════════════════
Unable to parse JSON message:
The document is empty.

When running a release build of the app, it will literally crash the app if I use the shift keys.

I cannot reproduce the issue. Maybe bacause I'm not fast enough or maybe there is a difference in the 2 windows versions (I am on Windows 11 and I can see you are using Windows 10). I am not sure, but I'll label this issue for further insights from the team.

I can reproduce this issue. Here's what I did to reproduce it reliably:

Run the application in a terminal
Press Shift + R to hot restart, then immediately R to hot reload. Flutter queue the hot reload until the hot restart is complete.
While the app is hot restarting/reloading, ALT + Tab to the Flutter app, and press a modifier key like ALT.
The error should appear. Note: this error is only thrown when you press the key while the app is reloading, and not after.

Using the same technique, I couldn't reproduce it on Mac but that may be due to an error on my end. However, I will still label this as Windows only.
Reproducible on

Stable (3.3.0)
Master (3.4.0-19.0.pre.86)

Flutter Doctor
flutter doctor -v (Stable)
[✓] Flutter (Channel stable, 3.3.0, on Microsoft Windows [Version 10.0.22000.918], locale en-IN)
    • Flutter version 3.3.0 on channel stable at C:\Users\Nabeel\fvm\versions\stable
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision ffccd96b62 (7 days ago), 2022-08-29 17:28:57 -0700
    • Engine revision 5e9e0e0aa8
    • Dart version 2.18.0
    • DevTools version 2.15.0

[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.0)
    • Android SDK at C:\android-sdk
    • Platform android-33, build-tools 33.0.0
    • Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 11.0.12+7-b1504.28-7817840)
    • All Android licenses accepted.

[✓] Chrome - develop for the web
    • CHROME_EXECUTABLE = C:\Program Files\BraveSoftware\Brave-Browser\Application\brave.exe

[✓] Visual Studio - develop for Windows (Visual Studio Community 2022 17.3.2)
    • Visual Studio at C:\Program Files\Microsoft Visual Studio\2022\Community
    • Visual Studio Community 2022 version 17.3.32819.101
    • Windows 10 SDK version 10.0.19041.0

[✓] Android Studio (version 2021.2)
    • Android Studio at C:\Program Files\Android\Android Studio
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.12+7-b1504.28-7817840)

[✓] VS Code (version 1.71.0)
    • VS Code at C:\Users\Nabeel\AppData\Local\Programs\Microsoft VS Code
    • Flutter extension version 3.46.0

[✓] Connected device (3 available)
    • Windows (desktop) • windows • windows-x64    • Microsoft Windows [Version 10.0.22000.918]
    • Chrome (web)      • chrome  • web-javascript • unknown
    • Edge (web)        • edge    • web-javascript • Microsoft Edge 105.0.1343.27

[✓] HTTP Host Availability
    • All required HTTP hosts are available

• No issues found!

flutter doctor -v (Master)
[✓] Flutter (Channel master, 3.4.0-19.0.pre.86, on Microsoft Windows [Version 10.0.22000.918], locale en-IN)
    • Flutter version 3.4.0-19.0.pre.86 on channel master at C:\Users\Nabeel\fvm\versions\master
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision a04e6b7618 (49 minutes ago), 2022-09-06 02:08:10 -0400
    • Engine revision 623b80157c
    • Dart version 2.19.0 (build 2.19.0-171.0.dev)
    • DevTools version 2.17.0

[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.0)
    • Android SDK at C:\android-sdk
    • Platform android-33, build-tools 33.0.0
    • Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 11.0.12+7-b1504.28-7817840)
    • All Android licenses accepted.

[✓] Chrome - develop for the web
    • CHROME_EXECUTABLE = C:\Program Files\BraveSoftware\Brave-Browser\Application\brave.exe

[✓] Visual Studio - develop for Windows (Visual Studio Community 2022 17.3.2)
    • Visual Studio at C:\Program Files\Microsoft Visual Studio\2022\Community
    • Visual Studio Community 2022 version 17.3.32819.101
    • Windows 10 SDK version 10.0.19041.0

[✓] Android Studio (version 2021.2)
    • Android Studio at C:\Program Files\Android\Android Studio
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.12+7-b1504.28-7817840)

[✓] VS Code (version 1.71.0)
    • VS Code at C:\Users\Nabeel\AppData\Local\Programs\Microsoft VS Code
    • Flutter extension version 3.46.0

[✓] Connected device (3 available)
    • Windows (desktop) • windows • windows-x64    • Microsoft Windows [Version 10.0.22000.918]
    • Chrome (web)      • chrome  • web-javascript • unknown
    • Edge (web)        • edge    • web-javascript • Microsoft Edge 105.0.1343.27

[✓] HTTP Host Availability
    • All required HTTP hosts are available

• No issues found!

cc @loic-sharma @cbracken

@exaby73 @chinmaygarde
in addition to the exception thrown during hot reload, pressing alt or other modifier key (ctrl, shift, etc) causes exceptions as well:
======== Exception caught by services library ======================================================
The following assertion was thrown during a platform message callback:
A KeyRepeatEvent is dispatched, but the state shows that the physical key is not pressed. If this occurs in real application, please report this bug to Flutter. If this occurs in unit tests, please ensure that simulated events follow Flutter's event model as documented in `HardwareKeyboard`. This was the event: KeyRepeatEvent#8b4e8(physicalKey: PhysicalKeyboardKey#700e2(usbHidUsage: "0x000700e2", debugName: "Alt Left"), logicalKey: LogicalKeyboardKey#00104(keyId: "0x200000104", keyLabel: "Alt Left", debugName: "Alt Left"), character: null, timeStamp: 48:27:23.672463)
'package:flutter/src/services/hardware_keyboard.dart':
Failed assertion: line 432 pos 16: '_pressedKeys.containsKey(event.physicalKey)'

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

When the exception was thrown, this was the stack:
#2      HardwareKeyboard._assertEventIsRegular.<anonymous closure> (package:flutter/src/services/hardware_keyboard.dart:432:16)
#3      HardwareKeyboard._assertEventIsRegular (package:flutter/src/services/hardware_keyboard.dart:443:6)
#4      HardwareKeyboard.handleKeyEvent (package:flutter/src/services/hardware_keyboard.dart:535:5)
#5      KeyEventManager.handleRawKeyMessage (package:flutter/src/services/hardware_keyboard.dart:881:37)
#6      BasicMessageChannel.setMessageHandler.<anonymous closure> (package:flutter/src/services/platform_channel.dart:197:49)
#7      _DefaultBinaryMessenger.setMessageHandler.<anonymous closure> (package:flutter/src/services/binding.dart:387:35)
#8      _invoke2 (dart:ui/hooks.dart:186:13)
#9      _ChannelCallbackRecord.invoke (dart:ui/channel_buffers.dart:42:5)
#10     _Channel.push (dart:ui/channel_buffers.dart:132:31)
#11     ChannelBuffers.push (dart:ui/channel_buffers.dart:329:17)
#12     PlatformDispatcher._dispatchPlatformMessage (dart:ui/platform_dispatcher.dart:599:22)
#13     _dispatchPlatformMessage (dart:ui/hooks.dart:89:31)
(elided 2 frames from class _AssertionError)
====================================================================================================

Thanks @PassionPenguin this one is a known issue and something that's been in our plans to address for a while, but behind some other user-facing (rather than developer-facing) crashers that we've been knocking off. Thanks for filing!

It looks like a duplicate issue as https://github.com/flutter/flutter/issues/87391. Closing this one.

======== Exception caught by services library ======================================================
The following assertion was thrown during a platform message callback:
A KeyRepeatEvent is dispatched, but the state shows that the physical key is not pressed. If this occurs in real application, please report this bug to Flutter. If this occurs in unit tests, please ensure that simulated events follow Flutter's event model as documented in HardwareKeyboard. This was the event: KeyRepeatEvent#8b4e8(physicalKey: PhysicalKeyboardKey#700e2(usbHidUsage: "0x000700e2", debugName: "Alt Left"), logicalKey: LogicalKeyboardKey#00104(keyId: "0x200000104", keyLabel: "Alt Left", debugName: "Alt Left"), character: null, timeStamp: 48:27:23.672463)
'package:flutter/src/services/hardware_keyboard.dart':
Failed assertion: line 432 pos 16: '_pressedKeys.containsKey(event.physicalKey)'
Either the assertion indicates an error in the framework itself, or we should provide substantially more information in this error message to help you determine and fix the underlying cause.
In either case, please report this assertion by filing a bug on GitHub:
https://github.com/flutter/flutter/issues/new?template=2_bug.md
When the exception was thrown, this was the stack:
#2      HardwareKeyboard._assertEventIsRegular. (package:flutter/src/services/hardware_keyboard.dart:432:16)
#3      HardwareKeyboard._assertEventIsRegular (package:flutter/src/services/hardware_keyboard.dart:443:6)
#4      HardwareKeyboard.handleKeyEvent (package:flutter/src/services/hardware_keyboard.dart:535:5)
#5      KeyEventManager.handleRawKeyMessage (package:flutter/src/services/hardware_keyboard.dart:881:37)
#6      BasicMessageChannel.setMessageHandler. (package:flutter/src/services/platform_channel.dart:197:49)
#7      _DefaultBinaryMessenger.setMessageHandler. (package:flutter/src/services/binding.dart:387:35)
#8      _invoke2 (dart:ui/hooks.dart:186:13)
#9      _ChannelCallbackRecord.invoke (dart:ui/channel_buffers.dart:42:5)
#10     _Channel.push (dart:ui/channel_buffers.dart:132:31)
#11     ChannelBuffers.push (dart:ui/channel_buffers.dart:329:17)
#12     PlatformDispatcher._dispatchPlatformMessage (dart:ui/platform_dispatcher.dart:599:22)
#13     _dispatchPlatformMessage (dart:ui/hooks.dart:89:31)
(elided 2 frames from class _AssertionError)

@dkwingsmt well this is not the similar one you mentioned above, as this issue is not a during non-hot-restart-peroid-only one, but it can be reproduced through flutter app's normal states.

If there's a separate keyboard issue happening that doesn't involve hot-reload, please check if there's an existing issue filed and add a thumb-up to it to help it get prioritised, of it no existing bug covers it, please file one. The original issue described here was related to hot restart/reload.


Cilium mesh host alias and port wrong

Is there an existing issue for this?

[X] I have searched the existing issues

Version
equal or higher than v1.16.0 and lower than v1.17.0
What happened?
Very weird, when using node port and setting node selector to a specific node of a cluster with mesh enabled, it is routing traffic to the wrong node
host alias =
name: bob1
<IP_ADDRESS>
-port 31000
bob1 has label test=mesh and clustermeshapi server has nodeSelector test: mesh
it will send traffic to bob2 that does not clustermesh running and does not have the label, yet traffic is being routed there @ port 31000
How can we reproduce the issue?
use nodeport and labels to schedule clustermesh accordingly, use a non flat network, have more than two worker nodes, one labeled and one not to specify which clustermesh node runs on, use network monitorting to view outbound traffic going to the node w/o clustermesh running on it.
Cilium Version
v1.16.1
Kernel Version
5.14.0-427.16.1.el9_4.x86_64
Kubernetes Version
v1.27.14
Regression
No response
Sysdump
No response
Relevant log output
No response
Anything else?
No response
Cilium Users Document

[ ] Are you a user of Cilium? Please add yourself to the Users doc

Code of Conduct

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

Thanks for logging this issue @cccsss01, but we'll need a lot more information before anyone will be able to help you.
This sounds like a complicated setup, so folks will need at least:

a more detailed explanation of what you're trying to achieve
some details on how you installed Cilium and where it's running
ideally a full sysdump, since exactly what will be needed to troubleshoot this is not clear.

unfortunately I can't provide a sysdump, is there something specifically you need?
Essentially a non flat network, when I run cilium clustermesh status from one cluster, it's looking saying clustermesh detected to an ip address of another cluster that is not running the clustermesh api on the ip it's stated, but was the most recent addition to the cluster.
I have clustemresh config setup with ips: and port: set correctly, but it's grabbing a different ip
While my permanent solution is to leverage an ELB, that's not the case atm.

I'm sorry, I don't understand what you mean. The requirements for cluster mesh on the documentation page (https://docs.cilium.io/en/stable/network/clustermesh/clustermesh/#cluster-addressing-requirements) says that:

All clusters must be configured with the same datapath mode. Cilium install may default to Encapsulation or Native-Routing mode depending on the specific cloud environment.

PodCIDR ranges in all clusters and all nodes must be non-conflicting and unique IP addresses.

Nodes in all clusters must have IP connectivity between each other using the configured InternalIP for each node. This requirement is typically met by establishing peering or VPN tunnels between the networks of the nodes of each cluster.

The network between clusters must allow the inter-cluster communication. The exact ports are documented in the Firewall Rules section.

It seems from your description like maybe the third item doesn't apply?
Also, have you gone through the steps on the Clustermesh troubleshooting page? https://docs.cilium.io/en/stable/operations/troubleshooting/#troubleshooting-clustermesh


Not able to run the LUA file

I am trying to run the sh demo/flowers_demo.sh file and I get an error "Command not found". I was successful in executing the other commands but I am currently blocked at this step. Can anybody guide me how to run this file.
This is the error upon running the command sh demo/flowers_demo.sh.
demo/flowers_demo.sh: line 10: th: command not found

You need to install Torch7

You need to install Torch7

Can you tell me how to install torch in google colab


[Feature Request] Function "Clear TEMP folder" should not ask confusing questions

In settings, tab Temp files, when you press "Clear TEMP folder" - it will ask a very confusing question for this function "Would you like to save projects, that are 5 days or newer"... Well, it confuses so much. Because option like this, when you want to "clear" or "delete" something - almost in every app it asks "Are you sure?" with "Yes / No" answers. And here what we have - the opposite. User may click "Yes" not even reading the question, and he will not delete projects 5-day old or newer.
I think, that function "Clear TEMP folder" should NOT ask anything at all.
It would be nice, if you could make an option (mark / tick) near the "Clear TEMP folder" that will say something like "Don't clear projects, made for last [xx] days", and those people who don't want to touch that projects - will click on that mark and that's it. Everyone else will unmark it - and will never see confusing question again.
PS: and by the way, you have implemented an option to choose a number of days, so in my case it's "1 day", but it asks me about "Do you want to save projects, made for last 5 days". Should be fixed.

PS: and by the way, you have implemented an option to choose a number of days, so in my case it's "1 day", but it asks me about "Do you want to save projects, made for last 5 days". Should be fixed.

Fixed.

I've made a new dialog, with a different wording.


not portable new code

https://github.com/sanpii/libpq.rs/blob/main/src/connection/buffer.rs#L146
Few months ago, i couldn't compile this library on graviton. The fix was done but there is new code that uses *const i8 instead of  libc::c_char

Fixed. It would be nice to add a CI check for this point.


NETOBSERV-1033: Lock down Network Observability

Network policy to lock down ingress traffic to 'netobserv' namespace

@stleerh netobserv namespace is configurable in the flowcollector object, the default value is netobserv but user can change it, so we probably need to doc when this happen to change the netpol ns as well so they stay in sync correct ?

Alternatively, we can leave out namespace: netobserv, but then you are expected to be in the right namespace when you apply this.  I think it's better to leave it in and document it.

/ok-to-test

/ok-to-test

Moving PR to documents repository.


liquibase tag is not working properly while using liquibase version 4.21.1

Search first

[X] I searched and no similar issues were found

Description
liquibase tag is not working properly while use liquibase version 4.21.1
Scenario: Created new database and first time started deployment using liquibase tag command. Got below error. Then same scenario replicated with liquibase 4.18 that worked.
Starting Liquibase at 14:28:31 (version 4.21.1 #9070 built at 2023-04-13 20:56+0000)
Liquibase Version: 4.21.1
Liquibase Open Source 4.21.1 by Liquibase

Unexpected error running Liquibase: Expected single row from liquibase.statement.core.SelectFromDatabaseChangeLogLockStatement@61af1510 but got 0
  - Caused by: Empty result set, expected one row

For more information, please use the --log-level flag

Steps To Reproduce
Scenario: Created new database and first time started deployment using liquibase tag command. Got below error. Then same scenario replicated with liquibase 4.18 that worked.
Starting Liquibase at 14:28:31 (version 4.21.1 #9070 built at 2023-04-13 20:56+0000)
Liquibase Version: 4.21.1
Liquibase Open Source 4.21.1 by Liquibase

Unexpected error running Liquibase: Expected single row from liquibase.statement.core.SelectFromDatabaseChangeLogLockStatement@61af1510 but got 0
  - Caused by: Empty result set, expected one row

For more information, please use the --log-level flag

Expected/Desired Behavior
Databasechangelog and Databasechangeloglock should be created and apply the tag in databasechangelog table.
Liquibase Version
4.21.1
Database Vendor & Version
PostgreSQL
Liquibase Integration
No response
Liquibase Extensions
No response
OS and/or Infrastructure Type/Provider
No response
Additional Context
No response
Are you willing to submit a PR?

[ ] I'm willing to submit a PR (Thank you!)

Thanks, it may be related to some refactoring we did in 4.21, moving the tag logic into a new location.

Hello @himanshu9891 , how are you?
I wasn't able to replicate this bug. This is what I did:

Created a PostgreSQL database
In a directory containing a liquibase.properties file that is pointing to that database, executed the command liquibase tag --tag=myTag
This was the output:

Also, databasechangelog and databasechangeloglock tables were created, with the only recorded data being that tag command.

I'd suggest that you try again in a new directory and with a new properties file, just in case, and then let us know if it worked or didn't work for you.
Thank you!


Functionality of buttons, buttons are  overlapped in navbar

Feature Request
Functionality is not added to Schedule and reminder, doctor login and admin login buttons.
Doctor login button is being overlapped by dark mode button which is not looking good.
Also navbar needs proper alignment

please assign this issue to me . please add hacktoberfest and gssoc labels.


eliminate need for react-native symlink in monorepo

Environment
monorepo using yarn workspaces
Description
We currently need to make a react-native symlink in a monorepo's sub-package  to the hoisted version in the monorepo root. This is one of the issues for the reproduction example we gave with #474.
Reproducible Demo
See example we provided for #474.

Temporary workaround is to specify root option in withPolyfills:
import { withPolyfills, makeConfig } from<EMAIL_ADDRESS>import { resolve } from 'path';

export default makeConfig({
  bundles: {
    index: {
      entry: withPolyfills('./index', { root: resolve(__dirname, '../..') }),
    },
  },
});

Fixed in:

<EMAIL_ADDRESS><EMAIL_ADDRESS>


Getting Capybara::Poltergeist::ObsoleteNode using Phantomjs 2.1

Phantomjs 2.1 was just released, and I'm now getting the following error when trying to set an attachment on a hidden element:
Capybara::Poltergeist::ObsoleteNode: The element you are trying to interact with is either not part of the DOM, or is not currently visible on the page (perhaps display: none is set). It's possible the element has been replaced by another element and you meant to interact with the new element. If so you need to do a new 'find' in order to get a reference to the new element.
...
--- Caused by: ---
Capybara::Poltergeist::BrowserError:
There was an error inside the PhantomJS portion of Poltergeist. If this is the error returned, and not the cause of a more detailed error response, this is probably a bug, so please report it.  ```
The offending line in my spec is:
attach_file('vendor[logo]', 'spec/images/logo.png', visible: false)
I've also specified the full path to the image and get the same failure. It appears to be failing on this command https://github.com/teampoltergeist/poltergeist/blob/master/lib/capybara/poltergeist/browser.rb#L344:
"{"id":"832a4709-2c86-4c8c-b143-003c2b9bf85a","name":"select_file","args":[4,4,"/my/full/path/spec/images/logo.png"]}"

This works in Phantomjs 1.9.8. I'm using Poltergeist 1.8.1.
If this should be reported as a regression agains Phantomjs, I'm happy to submit it there.

/cc @twalpole

It looks like this is the culprit:
https://github.com/teampoltergeist/poltergeist/blob/master/lib/capybara/poltergeist/client/browser.coffee#L176
If I remove the if statement and just return @current_command.sendResponse(true), my spec passes.
FileUpload was fixed in Phantomjs 2.1 so this maybe something that was used in an attempt to get things working in 2.0?
I'm happy to make a pull request if you think this is a viable option.

I think if 2.1 is really really good, we can drop support for 1.9.x because it has so many problems with modern web.

I'm taking a look at this - adding 2.1 testing, etc - Note that the actual cause of this error is that you are attempting to set a value to a non-visible field which is very driver specific to poltergeist and I don't believe works on any other driver (and shouldn't according to the webdriver spec).

Thanks... And yeah, I don't the way it's working either, but I'm using
https://github.com/blueimp/jQuery-File-Upload for ajax file uploads and am
having issues using the visible element. Would be open to suggestions on
that front, but that wasn't the intention of this thread.
On Mon, Jan 25, 2016 at 1:07 PM Thomas Walpole<EMAIL_ADDRESS>wrote:

I'm taking a look at this - adding 2.1 testing, etc - Note that the actual
cause of this error is that you are attempting to set a value to a
non-visible field which is very driver specific to poltergeist and I don't
believe works on any other driver (and shouldn't according to the webdriver
spec).
—
Reply to this email directly or view it on GitHub
https://github.com/teampoltergeist/poltergeist/issues/725#issuecomment-174605981
.

@claptimes5 it's a common issue file boxes since they're so often hidden to allow styling, and I wish the webdriver spec took that into account.  Basically to follow the spec (and be cross driver compatible with your tests) you need to use execute_script to adjust the CSS of the file input so that it becomes visible on the page and then call attach_file on it.  Not a great solution, but it is what it is.

Ok - so I'm seeing 2 test failures with 2.1 -- attach_file and one related to javascript errors being raised to ruby errors -- once I have that fixed I'll merge it in.

PR #726 should fix this (and one other small test failure) and add PhantomJS 2.1.1 to the travis test matrix.  I'll merge in as soon as the tests pass

Seems like travis-ci is having issues with network connectivity currently so this may take a little longer than expected

Fixed via PR #726


WIP: Add llama.cpp backend

Add llama.cpp as Backend for Optimum Benchmark
Overview
This PR introduces llama.cpp as a backend for the Optimum benchmark (see issue #117).
Changes

Added an example in the examples folder demonstrating how to run the llama.cpp backend:

defaults:
  - benchmark
  - scenario: inference
  - launcher: inline
  - backend: llama_cpp
  - _base_
  - _self_

name: llama_cpp_llama

backend:
  device: mps
  model: TheBloke/TinyLlama-1.1B-Chat-v1.0-GGUF
  task: text-generation
  filename: tinyllama-1.1b-chat-v1.0.Q4_0.gguf

scenario:
  input_shapes:
    batch_size: 1
    sequence_length: 256
    vocab_size: 32000
  generate_kwargs:
    max_new_tokens: 100
    min_new_tokens: 100

Current limitations:

Benchmarking is limited to a batch size of 1 due to limitations of the llama-cpp-python binding.
MPS process isolation is not working (see issue #230).
No weights mode has not been implemented

Performance
The metrics were tested by comparing the results of the benchmark with a PyTorch backend and a llama.cpp backend. The performance results are close, and I can provide the full .json files if needed. Due to their low readability, they are not included here directly.
CLI output: (tested on M3 Pro CPU)
Performance with llama.cpp backend

Performance with the pytorch backend

The performance difference might be due to the significant amount of copying between devices with PyTorch, as shown below:

Furthermore, llama.cpp is optimized for Mac, which could explain the higher performance. Let me know if you want me to investigate the performance difference further

Very clean PR! I left a couple comments.
Additionally, since benchmarking for llama.cpp is limited to a batch size of 1, I think it may be good to add a comment right above the batch size field in the 3 example configs. Unless an error/warning is raised somewhere in the code but I didn't see it.

https://github.com/huggingface/optimum-benchmark/pull/231/files#r1690885402

Thanks for the review. I implemented the necessary changes
I added:

fix different formatting issue
structure of the code, absolute import, forgotten debug print statement...)
added support for embedding models with llama.cpp
added tests and github workflow for llama.cpp backend

Let me know if you have more remarks

one or two examples are enough, there's a lot of repetition there

Indeed, I created multiple config during development and forgot to remove it from the pr. I fixed it now


Missing commands

Added two commands:

house arrest of container's file changes
display of what we can be truly proud of

:fr:

Votre pays est fier de vous.

:heart:


Config TFS 2017 or later download agent path to on-prem TFS Server

Scenario:
Just like https://github.com/Microsoft/vsts-agent/issues/903

Customers' environment can't connect to internet.
I understand the installation iso file size is important.

Is it possible let us config it?

Customers can download the agent zip file and copy it to TFS AP server. The path can be accessed by agents.
Agents can perform update process via TFS server.

Thank you for your consideration.
Jacky

Yes, we have that exact feature on our backlog.  Place the zip in a prescribed place on the ATs and the product and updates will discover it

Thank you for your reply.
從我的 iPhone 傳送
Bryan MacFarlane <notifications<EMAIL_ADDRESS>於 2018年3月14日 下午7:07 寫道：
Yes, we have that exact feature on our backlog. Place the zip in a prescribed place on the ATs and the product and updates will discover it
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://nam03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FMicrosoft%2Fvsts-agent%2Fissues%2F1451%23issuecomment-372984046&data=02|01||f4ffd54f8e864449ac5208d5899bc28b|84df9e7fe9f640afb435aaaaaaaaaaaa|1|0|636566224432339616&sdata=Tne9GBs3xXPYeSFRw5Y1hr9VysBJ5SjZF8oXc3rc%2BAQ%3D&reserved=0, or mute the threadhttps://nam03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAFOIcpudWpVz731rdhOBCLZGYafdvHzOks5tePnogaJpZM4Sp8uJ&data=02|01||f4ffd54f8e864449ac5208d5899bc28b|84df9e7fe9f640afb435aaaaaaaaaaaa|1|0|636566224432339616&sdata=fz6%2BYltbv22qPrGmJNDfPoRfReLOqY4TxAVaw51BTQM%3D&reserved=0.

@bryanmacfarlane any insight if this backlog item is in the TFS2018 or next major version timeline?

https://docs.microsoft.com/en-us/tfs/release-notes/azuredevops2019#locally-update-your-agent
close this issue, the feature is checked-in and included in Azure DevOps Server 2019

https://docs.microsoft.com/en-us/tfs/release-notes/azuredevops2019#locally-update-your-agent
close this issue, the feature is checked-in and included in Azure DevOps Server 2019

Hi @TingluoHuang ,
Actually I don't see any documentation to describe how to do this... I saw the release notes, but still don't know how to ...
Is there any doc I can follow?
I'm located in China and the access to MS's VS Agent download is super slow, I have to use local install...
Thanks
River


Fix: Require cycle: on Components <-> Index File

Hello Guys. Nice work with this awesome components.
PR has an import restructure for local components to fix the warning below.
Require cycle: node_modules/galio-framework/src/index.js happening on

react-native: 0.62.2
OS: Mac Catalina 10.15.5
Galio Version: 0.6.3

Screenshot

Thank you for this PR! We'll make sure to add this in our next patch version update! Really appreciate it! ❤

Awesome!


stdout of gocode is invisible in terminal, but is pipable

[x] I am on the latest Hyper.app version
[x] I have searched the issues of this repo and believe that this is not a duplicate

OS version and name: windows 10 home x64
Hyper.app version: 1.3.3
Link of a Gist with the contents of your .hyper.js: https://gist.github.com/therealplato/adeb4a3b51622368c558550435f013fb
Relevant information from devtools (CMD+ALT+I on Mac OS, CTRL+SHIFT+I elsewhere): N/A
The issue is reproducible in vanilla Hyper.app: Yes

Issue
I'm trying to get golang completion working in vim. It uses nsf/gocode for a completion engine. I have run go get -u -ldflags -H=windowsgui github.com/nsf/gocode as per readme. Debugging steps for indicated gocode set ought to output useful information.
As shown in the gist, gocode set does output information to Git Bash's default terminal.
gocode set does not show any output in Hyper.
gocode set | wc indicates the pipe was not empty.
gocode set > asdf populates the file with ascii text
What's going on? Or to my immediate goal, has anyone successfully accomplished go code completion in Hyper?

Hey there, please try again with the new Hyper v2 release and open a new issue if the problem stills exists. Thank you!

Bump.
v2.0.0
Still exists for me, even running a simple ftm.Println("Some stuff") doesn't work.

Update: Updated to canary and works so keep up the good work!


version_associations table

Hello,
Just installed paper trail for Rails. Wish to track associations as per GitHub documentation. Cannot find version_associations table to install. Tried 'generate paper_trail:install --with-associations'. No version_associations migration created. Inspected gem. No version_associations template provided. Internet search unearthed the following migration in post #474. Is this the proper table? What am I doing wrong?
create_table :version_associations do |t|
t.integer  :version_id
t.string   :foreign_key_name, null: false
t.integer  :foreign_key_id
end
add_index :version_associations, [:version_id]
add_index :version_associations, [:foreign_key_name, :foreign_key_id], name: 'index_version_associations_on_foreign_key'

What version of PaperTrail are you using? You need 4.0.0.beta2 or the current master branch or higher.

bingo. my bad. thank you very much for quick reply. and even more for great gem.

No worries. I would recommend current master since it's actually more stable than 4.0.0.beta2 to my knowledge (there's a known issue w/ deleting versions from the versions association on that release).  I am going to try to put some work in on things today and tomorrow and cut another release.


Console crashes when serial connection is open, but no device is defined yet

The console crashes when connection is open, but no device is defined yet and a command is issued via the "Commands" menu.

"Connections"-->"Start Serial Connection"
"Commands" --> Any Command Option
Application goes down

Fix will be in next release, thanks


Clearer chart colors

Use colors that are distinguishable by colourblind people.

I have found a good colormap here.

The colors are {'U': '#800', '3': '#ae5', 'G': '#ae5', 'TG': '#ae5', '4': '#1b2', '5': '#063'}


fix(esl-carousel): esl-carousel tag is not declared to be used in TSX

Closes: #2330

:tada: This PR is included in version 5.0.0-beta.37 :tada:
The release is available on:

npm package (@beta dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


[YUNIKORN-813] The capacity of undefined resource should NOT be consi…

…dered zero
What is this PR for?
  resources:
    max:
      memory: 10000

If above configuration is added to a leaf queue, the queue can't run any application since the "vcore" is assumed to be zero. That obstructs us from limiting only a part of resources.  It seems to me the undefined resource should be referenced to parent's resource.
What type of PR is it?

[ ] - Bug Fix
[x] - Improvement
[ ] - Feature
[ ] - Documentation
[ ] - Hot Fix
[ ] - Refactoring

Todos

[ ] - Update the docs of quota - it supports to define quota with either only vcore or only memory

What is the Jira issue?
https://issues.apache.org/jira/browse/YUNIKORN-813
How should this be tested?
Screenshots (if appropriate)
Questions:

[ ] - The licenses files need update.
[ ] - There is breaking changes for older versions.
[ ] - It needs documentation.

Also can I ask you to check if we have other places where we should handle the undefined resources, just to make sure that we are handling it everywhere in the same way.

I think so. Both headroom and max headroom are calculated by the method internalHeadRoom


deemix: Update DeeMix container to use the official one

https://github.com/bambanah/deemix?tab=readme-ov-file#docker-image
Includes an update to the default port, though we could keep it as 9666 with DEEMIX_SERVER_PORT.

The templates.json file is is an automated curation of other template.json files.

the file is written here

Looking at the App List in the README, and finding the DeeMix listing...

... you'll want to create any issues/pull-requests as part of that repository

Thanks, submitted to https://github.com/SelfhostedPro/selfhosted_templates/pull/278 .


ngx_http_geoip_module.so

When I start the Docker image I get the following error message
nginx: [emerg] dlopen() "/etc/nginx/modules/ngx_http_geoip_module.so" failed (Error loading shared library /etc/nginx/modules/ngx_http_geoip_module.so: No such file or directo
ry) in /etc/nginx/nginx.conf:1
Can you help me ?
Here is my creation-config
docker create
--name=openbridge
-v /share/Container_Data/openbridge/etc/nginx:/etc/nginx
-v /share/Container_Data/openbridge/usr/share/nginx/html:/usr/share/nginx/html
-v /share/Container_Data/openbridge/var/log/nginx:/var/log/nginx
-v /share/Container_Data/SSL/${NGINX_SERVER_NAME}/fullchain.pem:/etc/letsencrypt/live/${NGINX_SERVER_NAME}/fullchain.pem:ro
-v /share/Container_Data/SSL/${NGINX_SERVER_NAME}/privkey.pem:/etc/letsencrypt/live/${NGINX_SERVER_NAME}/privkey.pem:ro
-v /share/Container_Data/SSL/${NGINX_SERVER_NAME}/chain.pem:/etc/letsencrypt/live/${NGINX_SERVER_NAME}/chain.pem:ro
-p 9980:80 -p 9443:443
-e TZ=Europe/Berlin
-e NGINX_DOCROOT=/usr/share/nginx/html
-e NGINX_SERVER_NAME=top.secret.de
-e NGINX_CONFIG=php
-e NGINX_DEV_INSTALL=false
openbridge/nginx

Hmm, which version are you using? latest?

Yes.
2019/05/10 13:06:31

Have you tried to comment out the line in your nginx.conf file?
load_module                            /etc/nginx/modules/ngx_http_geoip_module.so
to
#load_module                            /etc/nginx/modules/ngx_http_geoip_module.so?

Yes, but the file will be overwritten after an restart.

Also, can to connect to your container via bash and run
bash-4.4# ls -al /usr/local/share/GeoIP

drwxr-xr-x    2 www-data www-data      4096 May 23 19:15 .
drwxr-xr-x    1 root     root          4096 May 23 19:16 ..
-rw-r--r--    1 www-data www-data   1242574 May 23 19:15 GeoIP.dat
-rw-r--r--    1 www-data www-data  20539238 May 23 19:15 GeoLiteCity.dat

I want to confirm you have the legacy GeoIP files present.

First, I want to see if the error still happens. Does it? If it works with issue, that is part of troubleshooting.
Also, why would the file be overwritten? How are you managing your config files? I assume you are mounting them via -v /share/Container_Data/openbridge/etc/nginx:/etc/nginx  so the changes are not ephemeral,  but local to your config path /share/Container_Data/openbridge/etc/nginx.
I have run tests locally and do not have the error.

the container stops running after the error occured, so I can't connect to the container by bash.
I've mapped the path   /usr/local/share/GeoIP   but there are no such files you have been posted.
Even if the container stops I can see the nginx.conf. After a restart of the container, the commented-out line is active again.
It looks like every time I restart the container it reinitializes again.

I tried this minimum configuration and I got an similar error. Maybe my config is wrong
docker create
--name=openbridge
-v /share/Container_Data/openbridge/etc/nginx:/etc/nginx
-v /share/Container_Data/openbridge/usr/share/nginx/html:/usr/share/nginx/html
-v /share/Container_Data/openbridge//usr/local/share/GeoIP:/usr/local/share/GeoIP
-p 9980:80 -p 9443:443
-e NGINX_CONFIG=html
-e NGINX_DEV_INSTALL=true
openbridge/nginx
Here is the end of the log output:
sent 62,997 bytes  received 92 bytes  126,178.00 bytes/sec
total size is 62,727  speedup is 0.99
sending incremental file list
400.html
401.html
403.html
404.html
500.html
501.html
502.html
503.html
504.html
sent 37,030 bytes  received 187 bytes  74,434.00 bytes/sec
total size is 36,501  speedup is 0.98
set daemon 10
with START DELAY 15
set pidfile /run/monit.pid
set statefile /run/monit.state
set httpd port 2849 and
use address localhost
allow localhost
set logfile syslog
set eventqueue
basedir /var/run
slots 100
include /etc/monit.d/*
/etc/monit.d/check_nginx:24: syntax error 'if'
2019/05/23 20:22:01 [emerg] 1#1: dlopen() "/etc/nginx/modules/ngx_http_geoip_module.so" failed (Error loading shared library /etc/nginx/modules/ngx_http_geoip_module.so: No such file or directory) in /
etc/nginx/nginx.conf:1
nginx: [emerg] dlopen() "/etc/nginx/modules/ngx_http_geoip_module.so" failed (Error loading shared library /etc/nginx/modules/ngx_http_geoip_module.so: No such file or directory) in /etc/nginx/nginx.co
nf:1

It is hard for me to know what is going on in your local environment. You can change the Docker file CMD to bypass the nginx command. If you are not clear on how to do this, then you can state so.
Why are you mapping the path for GeoIP? I never suggested that you map the files GeoIP files. I just wanted to see if they are resident in your build. If you look at the Dockerfile it clearly indicates the GeoIP files are pulled from this repo:
  && echo 'adding /usr/local/share/GeoIP/GeoIP.dat database' \
  && wget -N https://raw.githubusercontent.com/openbridge/nginx/master/geoip/GeoLiteCity.dat.gz \
  && wget -N https://raw.githubusercontent.com/openbridge/nginx/master/geoip/GeoIP.dat.gz \
  && gzip -d GeoIP.dat.gz \
  && gzip -d GeoLiteCity.dat.gz \
  && mkdir /usr/local/share/GeoIP/ \
  && mv GeoIP.dat /usr/local/share/GeoIP/ \
  && mv GeoLiteCity.dat /usr/local/share/GeoIP/ \
  && chown -R www-data:www-data /usr/local/share/GeoIP/ \

Look into the /geoip/ you will see the dat files.
Did you follow the build instructions? In the first few sentences, it describes either pulling the image or running. For example, if you want NGINX 1.16.0
docker build --build-arg "NGINX_VERSION=1.16.0" -t openbridge/nginx .

Can you detail what you did?
Also, since you are saying you want to use the PHP configs, please paste the content of the
conf/php/nginx.conf file. As I indicated, you must comment out the line in question.
I won't be able to help you if you can't walk-thru the QA steps I'm asking you to undertake.

One last comment, what does the name top.secret.de resolve too? Are you deploying this test to a server that resolves with this DNS? Are you running this locally and resolving this?


Fix minor error in formatting in JvmTestSuite Plugin docs

Fixes 18598
This is a merge into master, from a branch created off of master.

@bot-gradle test this


CAMEL-18696: camel-ldap - Make filter a bit easier to use

the test error is due to no tests executed as its a manual process to test against a ldap server.

Can you confirm that the fix was merged into 3.14.x? I see nothing was changed on that branch. Thanks!

Yeah it was a hickup it will be in 3.14.7 release that will be done later. You can use camel-spring-ldap instead.