Is it worth writing up an RFC on adding new escape characters?

Given the inherent breaking changes between Windows PowerShell 5.x and PowerShell Core, especially when running on Linux and macOS, can we consider adding a few new escape characters?
With the addition of ANSI esc sequences to the Windows console host, and existence of the same on terminals in Linux and macOS,  I would like to have the following esc chars added:
`e - ASCII escape char 0x1b
`u - specify Unicode character `u<hex-digit>+ e.g. `u2261
`_ - more "visible/obvious" line continuation

OK, so that last one is a stretch but there seems to be a few problems with line continuation in PowerShell - hard to see / trailing whitespace.  Maybe PowerShell Core presents an opportunity to tweak line continuation a little??
If the PowerShell Committee is willing to entertain this idea, is it worth writing up as an RFC?

I suppose it might break some script obfuscation techniques:
`G`et`-`C`h`i`l`d`It`e`m

But it does seem like a valuable addition.  We don't need the RFC just yet, but I tagged this for committee review.

I'm also okay with  `e and  `u without much discussion. Not sure about  `_, but we'll discuss it in our next committee meeting.

Not sure about `_

Me neither.  Just throwing it out because I do think line continuation in PowerShell is one of its weaker areas.  At one time, I was suggesting just using _ until I realized that duh, _ is a valid function name. :-)

Maybe the line continuation problem is worthy of an issue of it's own?

This is the python2 misconception: in the same script into a variety of coding, it is easy to garbled.
BOM header + unicode,BOM header + utf8,is good enough

@PowerShell/powershell-committee reviewed this and would be fine support e and u without the need for a RFC.  The risk as a breaking change is minimal and the value is apparent.  For line continuation, we suggest opening a separate issue to discuss that.

I'm against the  `u<hex>+ without an end of hex sequence delimiter syntax because programming languages like that prone to mistakes when the escape code is followed by text that just happens to be a hex character. My preferred solution is something that resembles Perl's bracketed hex escapes like:
https://connect.microsoft.com/PowerShell/feedback/details/969678/add-character-literals-and-support-unicode-escape-characters-in-strings
Though I would modify the above proposal so that U+10000 to U+10FFFF produce UnicodeCodePoint objects instead of strings:
https://github.com/dotnet/corefxlab/blob/f89da2d8f363c9fbbe2786cdcbe0415a0a7a9ed9/src/System.Text.Primitives/System/Text/Encoding/UnicodeCodePoint.cs

The way C# solves this, and what I was planning to implement, is that the token will always require four hex digits e.g.:
Console.WriteLine("Testing \u0061\u0062\u0063def");

So in PowerShell that would be:
"Testing `u0061`u0062`u0063def"

No worse (and yeah, no better) than C# in that regard.
RE UnicodeCodePoint, isn't that a bit of a corner case - using characters above BMP?  Not being sarcastic.  Just never run into a need for a Unicode surrogate pair in .NET or Windows.  And if you really need it, you can use:
PS> [System.Char]::ConvertFromUtf32(0x1F01C)
🀜

"foo$([Char]::ConvertFromUtf32(0x1F01C))bar" doesn't work in places where constant strings are required

Well, we could use  `U<hex>{6} for this (or  `U<hex>{8} just to be consistent with C#/C++).

If the syntax is going to be  `u Can you consider adding the  `{(<hex>+<space>?)*} form also to support Perl style hex escapes:
"`{61 62 63}" == "abc"
Since escapes often come in batches and it's annoying/cluttered to use `u0061`u0062`u0063
It would be acceptable for me if the ranges outside the BMP could only be done inside the braced form so only the `u<hex>{4} and  `{(<hex>+<space>?)*} form become valid.

The ambiguity around the number of subsequent hex. digits could be resolved analogously to JavaScript (which, as an aside, also has fixed-length escapes), which supports \u{...} escapes, where the enclosing { and } unambiguously support  between 1 and 8 hex. digits:
E.g., with Node.js installed, try:
> node -pe "'Mot\u{f6}rhead'"
Motörhead

Translated to (hypothetical) PowerShell:
> "Mot`u{f6}rhead"
Motörhead

> "Where's the `u{20ac}?"
Where's the €?

Given that {...} is already used to disambiguate identifiers in variable references, that seems like a natural fit.

I'd prefer to stick closer to the C# approach.  PowerShell has been described by Jeffrey as having a "glideslope approach to C#".  I don't see enough value in the above to deviate from the C# approach.

@rkeithhill: Funny you should say that, because just today @lzybkr said (yanked somewhat out of context for dramatic effect):

PowerShell is not C# and it was not a goal to replicate all of C#'s capabilities.

With respect to PowerShell's string literals and string interpolation staying close to C#, the HMS Pinafore of disparity has sailed a looooooong time ago.

@rkeithhill:
Kidding aside:

Personally, when I use PowerShell strings, I never think of how strings work in C#, and from a pure PowerShell perspective, "`u{…}`" strikes me as a natural fit.

What prompted Jason's quote was a context - class definitions - where a piece of "un-Powershell" C# syntax did creep in (calling base-class constructors with : base()), prompting mistaken expectations of more C#-like behavior.

Well I didn't mean to imply PowerShell and C# syntax were identical - just that there are areas where you can get some "transfer of learning".  That's the "glideslope" part that Jeffrey has referred to in the past.
So given one syntax that isn't demonstrably better than the other, I'd stick with the one that reflects the C# approach.  And the C# approach also reflects how other shells like Zsh/Bash do this e.g. \u2620.  This is useful when someone sees an example in say Bash, knows that PowerShell uses backtick instead of , swaps out the \ for a backtick and gets it to work in PowerShell.  As Brad Abrams used to say back in the early days of .NET, as much as possible you want folks to fall into the "pit of success".

Also note that this one flexible construct obviates the need for a separate "`e..." escape.

This is moot as support for the esc char has already been added to PowerShell.
I must have missed something with the class ctor chaining since : base() is supported in C# and in that regard, PowerShell is "similar" to C#.  However, unlike C#, PowerShell doesn't support : this() ctor chaining.

However, unlike C#, PowerShell doesn't support : this() ctor chaining.

That's exactly what the linked post is about. The point was that if you're familiar with C# syntax and see : base(), it's likely that you'll also expect : this() to work.

This is moot as support for the esc char has already been added to PowerShell.

Thanks - I missed that, and I can definitely see that it's useful (I originally misinterpreted its purpose).

As for Bash: The patchwork of escapes in Bash reflects the historical growth of the code-point space:
printf '\x0a'        # byte value: up to 2 hex digits: the only kind supported up to Bash 3.x
printf '\u20ac'      # Unicode codepoint: up to 4 hex digits: Bash 4+; '€'
printf '\U00010300'  # Unicode codepoint: up to 8 hex digits: Bash 4+; '𐌀'

Note:  The above uses Bash's printf builtin - not the external /usr/bin/printf utility.
The only way to avoid ambiguity with the above is to use exactly as many digits as supported by the respective escape, and the distinction between \u and \U is awkward.
Bash's ANSI-C quoted string literals, support {...} enclosure for \x, but, curiously, neither for \u or \U:
printf %s $'\x{a}'       # OK - \x supports  {...} enclosure
printf %s  $'\u{20ac}'   # !! NOT supported
printf %s  $'\U{10300}'  # !! NOT supported

The separate \x escape enables creation of arbitrary, single bye values. With its ability to create byte values with the high bit set (e.g., \xfc), this enables creation of bytes that aren't valid in UTF-8, so at least hypothetically the \x escape serves a distinct purpose in Bash.
However, PowerShell, such a byte-value escape doesn't fit into the world of PowerShell's strictly-Unicode strings - and the need to create bytes can be handled with [byte] values, so the only thing that PowerShell string interpolation must cover is Unicode code-point escapes - a single concept that deserves a single syntactic representation for simplicity:
"`u{a}"   # same as "`n"
"`u{fc}"   # 'ü'
"`u{20ac}"   # '€'
"`u{10300}"   # '𐌀'

Note:
. This is a rewrite of a since-removed comment that lacked focus.
. Also, I performed a flippantectomy on another still-extant comment  - my apologies, @rkeithhill -
and merged it with a follow-up.

However, unlike C#, PowerShell doesn't support : this() ctor chaining.

That's exactly what the linked post is about. The point was that if you're familiar with C# syntax and see : base(), it's likely that you'll also expect : this() to work.

This is moot as support for the esc char has already been added to PowerShell.

Thanks - I missed that, and I can definitely see that it's useful (I originally misinterpreted its purpose).

As for transfer of learning:
The `u \ \u correspondence is definitely helpful, but I think the 4-fixed-hex-digits demarcation is not worth adopting, or at least not only:

To support all Unicode code points with the fixed-digit-count approach, the uppercase variant `U  with 8 fixed hex digits would have to be adopted as well, which is awkward in PowerShell, given its fundamentally case-insensitive nature.
(As an aside: the existing escapes such as `n` are case-sensitive, though they arguably don't need to be.)

The patchwork of octal, \x, \u, \U escapes in various languages, including C#, exists for historical reasons, and this is a chance to avoid carrying technical debt forward; the debt stems from:

gradual growth of the code-point space over time (ASCII (7-bit) > "ANSI" (8-bit) > UCS-2 (16-bit, BMP of Unicode only) > UTF-16 (all of Unicode, with surrogate pairs, 32-bit)
lack of support for embedded, variable-length string interpolation constructs.

A willingness to shed technical debt is already reflected in this thread's starting post considering only `u, and not also \x or octal escapes.

The {...} form of delimiting is well established in PowerShell, can be found in several other scripting languages, and now even in C# 6's interpolated strings - albeit not in the context of Unicode-character escapes.

To recap: Instead of requiring `u00fc (4 fixed digits), allow  `u{fc}, with between 1 and 8 digits to unambiguously cover all Unicode code points with a single construct.

A look at other languages:
While \x, \u, and \U are common, there are differences with respect to:

whether a fixed digit count is required or whether up-to-a-max-count logic.
whether {...} is (also) supported for unambiguously enclosing a variable number of digits.

C#, as discussed, has fixed-digit-count \x, \u, and \U only.

POSIX-like shells:

The POSIX standard mandates only octal escapes, and then only in the context of specific utilities (e.g., for <tab>: \011 in printf's format string and in echo's operands), not in string literals generally.
bash, ksh, and zsh have a string-literal form $'...' that supports variable-digit-count, non-delimited \x, \u, and \U escapes (also implemented in the built-in versions of the printf and echo utilities).
ksh, commendably, additionally supports {...} for disambiguation in all 3 cases, whereas bash, curiously, only does so for the older \x escape. (zsh has no support at all).

Ruby, Perl, and JavaScript (also) support {...}-delimited variable-digit-count escapes (though Perl's Unicode escapes look different).

I have a PR for Unicode esc sequence coming.  Testing it right now.  This is the way I've implemented it so far:

 "`u2195" - simple, common use case which can be converted from C# or Bash by simply replacing \ with `.
 "`u{1F3F4}" - specify 1 to 8 hex digits.  A hex value > 0xFFFF and <= 0x10FFFF will generate a Unicode surrogate pair e.g.:

"Black flag: `u{1f3f4}" | Out-File .\unicode.txt -Encoding Unicode

The above generates the following file contents:

One thing I'm trying to determine now is how widely should these esc sequences be supported.  For instance, double quoted strings and here strings are obvious but the following are perhaps not so obvious:
Naming variables with Unicode chars
PS> ${foo`u2195} = 'bar'
PS> gv foo*
Name                           Value
----                           -----
foo↕                           42

I'm inclined to say yes.  C# supports Unicode esc seqs in identifiers e.g.:
cl\u0061ss.st\u0061tic(true);

And specifying arguments (generic tokens) with Unicode chars
PS> Get-Command 7z`u2195
Get-Command : The term '7z↕' is not recognized as the name of a cmdlet, function, script file, or operable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:1
+ Get-Command 7z`u2195
+ ~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (7z↕:String) [Get-Command], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException,Microsoft.PowerShell.Commands.GetCommandCommand

Again I'm inclined to say yes to this as well.
Two other questions, I'd like to get input on.  It is worth having both forms (fixed length 4 digits and variable number of digits)?  And should the variable sequence form accept 8 hex chars or just 6?  The underlying API we use to convert the number to a Unicode surrogate pair only allows a max of 21-bit value (6 hex digits - although some 6 digit hex values will still be out-of-range).  However, I note that C#'s  "\Uxxxxxxxx" supports 8 hex digits.  I'm wondering why they chose to support 8 digits?  Future proofing?

I could use some feedback on these error messages.  Wording suggestions?

I've always assumed that they support only 4 or 8 simply because strings are 16bit unicode.
I think you need to support them (at least) anywhere strings can be used (including if I use longer syntax, like set-variable -Name ... or set-content -path function:....) -- I mean, obviously yes to variable and function identifiers, and yes to parameters.... in fact, the argument example is just an implicit string, after all...

Thanks Joel.  I'm getting close on this.  I've decided to support on 6 digits in the bracketed from.  This is from the C# docs:

Unicode characters with code points above 0x10FFFF are not supported.

Just need to make sure my Pester tests pass.

It's great that you're supporting the `u{...} syntax.

It is worth having both forms (fixed length 4 digits and variable number of digits)?

At the risk of repeating myself: I think this is an opportunity to ditch the fixed-digit form - which would also mean: fewer error messages to worry about :)
In that vein, re error messages: perhaps the following catch-all would then do (spread across 2 lines just for readability here):
Invalid Unicode escape sequence:
Must be `u{<hex-digits>}, using between 1 and 6 hex digits, up to a maximum of 10FFFF.

Re number of hex digits. in the `u{...} form:
6 digits are definitely enough in the foreseeable future (though the upcoming integration of the Martian alphabet may change that).
Among the languages / shells previously mentioned, Ruby does the same (all others support 8, presumably for the reason @Jaykul mentioned).

@rkeithhill:
Does foo `u002Dbar or foo `u{2D}bar parse similar to foo -bar (i.e. gets treated as a potential keyword parameter rather than a string) ?
Does foo 2`u0030 or 2`u{30} parse similar foo 20 (i.e. gets treated as number rather than a bareword/string) ?
Are you planning on supporting multi-escapes e.g. "`u{61 62 63}" means "`u{61}`u{62}`u{63}" ?

@DerpMcDerp: Good questions, and without having looked at @rkeithhill's code and without wanting to speak for him, here's my $.02 with respect to how it should work:

Does foo u002Dbar or foo u{2D}bar parse similar to foo -bar

NO: Shell metacharacters such as - should only ever be recognized as literals.

Does foo 2u0030 or 2u{30} parse similar foo 20

YES: In the parameter-value token-parsing stage, 2`u{30} should evaluate to 20 (2`u0030? Why, I never ...).

gets treated as number rather than a bareword/string) ?

There's no such thing as a number at that stage. There's only a token that will bind to a parameter, and that parameter's type determines the token's interpretation.
In other words:  2`u{30}, a.k.a. 20 may turn into a number or a string - it all depends on the type of the parameter it binds to.

 foo `u002dbar passes a string argument to the function (even if the function has a $Bar parameter defined.   So no.
foo 2`u0030 again passes a string argument to the function. So no.
I don't view either as problem.
Regarding support for multi-escapes, no that's what I've implemented with the current PR.

@rkeithhill

foo 2`u0030 again passes a string argument to the function. So no.

Consider the following example:
> function foo { param([int] $i) "[$i]" }; foo ('0' + 'x' + '10')
[16]

Clearly, what ended up binding to the [int] parameter was recognized as an integer, despite having been composed of string components, and having been recognized as a hex representation.
While it seems ill-advised to represent token 20 as 2`u{30}, I see no reason why it should act differently.
Would your PR actually not work this way?

The works as I've described.  It's like passing  7` 7 or  7`t7 as an argument.  That argument is parsed as a string due to it encountering an character esc seq.  The parser doesn't consider the "value" of the esc sequence.

@rkeithhill: I don't think there's a real disagreement here, but there's terminology confusion: there's a token-parsing stage that results in a data type-agnostic sequence of characters that is then bound to a parameter, at which coercion to the target type happens.
Calling it a "string" at this stage is inviting confusion with  a [string]-typed parameter.
Just to clear things up:
Will
> function foo { param([int] $i) "[$i]" }; foo 20
[20]

NOT work the same as the following?
> function foo { param([int] $i) "[$i]" }; foo 2`u{30}
[20]

Yes but your second example coerces a string to an int. This is a more informative test:
PS> function foo($p) { "Type: $($p.GetType().FullName) value: $p" }
PS> foo 20
Type: System.Int32 value: 20
PS> foo 2`9
Type: System.String value: 29
PS> foo 2`u{30}
Type: System.String value: 20

@rkeithhill:
That is indeed an interesting illustration of what happens in the absence of typed parameters (note that both my examples coerce to [int]).
So it would be more accurate to say: using ` in a token (such as to initiate a Unicode escape sequence) defaults to [string] in the absence of typing a parameter.
With  typing, no distinction is made - whether the token was a pure "number string" to begin with or resulted in one after expansion of escape sequences is immaterial.

@keithhill:
Is $function`u003Apause equivalent to $function:pause or $variable:function:pause ?

Ceterum censeo (I maintain my blissful ignorance of how thing are actually implemented):

Nothing that is the result of an expansion (interpolation) should ever have syntactical function. - metacharacters should only ever be recognized as literals.
(Treating arbitrary strings as commands is the domain of Invoke-Expression, which should be regarded with equal suspicion as eval in POISX-like shells.)

Subexpressions ($(...)) should be independent parsing contexts - whether or not they are embedded inside "..." (even though that is their primary purpose) should be immaterial.

@DerpMcDerp - that doesn't parse.  You can create a function name with a Unicode esc seq:
function foo`u2195bar {}
foo↕bar  # invoke function

@mklement0 I mostly with you except for the last part. I don't consider it immaterial because the parameter parser is actually pretty smart about primitives e.g.:
PS> foo 20d
Type: System.Decimal value: 20
PS> foo 2.0
Type: System.Double value: 2

So the parser has determined the type of the argument before it is passed to the function.  Then the parameter binding because its process of type coercion (if necessary).  You can explore this with the Trace-Command.  Try this with your foo function passing in 10 and '10'.  Note this command seems to display more useful info in Windows PowerShell.  In PS Core, it's not so helpful.
PS> Trace-Command -Name ParameterBind*,TypeConversion -Expression {foo '10' } -PSHost
DEBUG: ParameterBinding Information: 0 : BIND arg [10] to parameter [i]
DEBUG: ParameterBinding Information: 0 :     Executing DATA GENERATION metadata:
[System.Management.Automation.ArgumentTypeConverterAttribute]
DEBUG: ParameterBinding Information: 0 :         result returned from DATA GENERATION: 10
DEBUG: ParameterBinding Information: 0 :     BIND arg [10] to param [i] SKIPPED
DEBUG: ParameterBinding Information: 0 : BIND arg [10] to parameter [i]
DEBUG: ParameterBinding Information: 0 :     Executing DATA GENERATION metadata:
[System.Management.Automation.ArgumentTypeConverterAttribute]
DEBUG: ParameterBinding Information: 0 :         result returned from DATA GENERATION: 10
DEBUG: ParameterBinding Information: 0 :     BIND arg [10] to param [i] SKIPPED
DEBUG: ParameterBinding Information: 0 : BIND arg [10] to parameter [i]
DEBUG: ParameterBinding Information: 0 :     Executing DATA GENERATION metadata:
[System.Management.Automation.ArgumentTypeConverterAttribute]
DEBUG: TypeConversion Information: 0 :         Converting "10" to "System.Int32".
DEBUG: TypeConversion Information: 0 :             Converting to integer.
DEBUG: ParameterBinding Information: 0 :         result returned from DATA GENERATION: 10
DEBUG: ParameterBinding Information: 0 :     COERCE arg to [System.Int32]
DEBUG: ParameterBinding Information: 0 :         Parameter and arg types the same, no coercion is needed.
DEBUG: ParameterBinding Information: 0 :     BIND arg [10] to param [i] SUCCESSFUL

PS> Trace-Command -Name ParameterBind*,TypeConversion -Expression {foo 10 } -PSHost
DEBUG: ParameterBinding Information: 0 : BIND arg [10] to parameter [i]
DEBUG: ParameterBinding Information: 0 :     Executing DATA GENERATION metadata:
[System.Management.Automation.ArgumentTypeConverterAttribute]
DEBUG: ParameterBinding Information: 0 :         result returned from DATA GENERATION: 10
DEBUG: ParameterBinding Information: 0 :     BIND arg [10] to param [i] SUCCESSFUL

@rkeithhill
Thanks, that was illuminating, and thanks for indulging my tangent; I've tried to summarize in more detail further below, which may be of interest to some.

A token that contains a Unicode escape sequence will default to type [string] (e.g., `u2{30}) - unlike a "straight number string" (e.g., 20, which defaults to [int]).

However, it is the parameter's type that ultimately determines the token's type, if specified (other than as [object], [psobject], [pscustomobject]).

With a typed parameter, there is no functional distinction between 20 and 2`u{30}, although if the target type is [int],  the latter must undergo a second round of type conversion behind the scenes.

Optional reading: Parameter parsing and types
Note: The following covers only tokens that are literals, except possibly with quoting (which includes `-based individual-character escapes and Unicode escape sequences) and embedded variable references or subexpressions.

The parameter parsers recognizes a few types up front, in isolation, preliminarily:

Something that is unquoted (and has no embedded variable references/subexpressions) and can be parsed as a number is converted to an appropriate number type (between [int] and [double], including recognition of exponential notation, hexadecimal notation, and numbers with type suffixes l and d, but not including negative numbers (tokens starting with -)).

Everything else becomes a [string].

During parameter binding, that preliminary type may be retained as is:

If its type is the same as the parameter's or it is a derived type.

Note that the derived-type scenario doesn't apply here, given that the preliminary types are limited to number types (which are value types that can't be derived from) and [string], which is a sealed reference type.

If the parameter is untyped or declared as [object] (this is a corollary of the above), but also if it is declared as [psobject] or - curiously - [pscustomboject].

Otherwise, coercion to the target type happens, which:

may be able to make use of the preliminary type (e.g., coercing a preliminary [int] to a [long] parameter),
may have to fall back to the raw string representation,
may fail altogether.

Overall, pretty good summary.  I would tweak this sentence unlike a "straight number string" (e.g., 20, which defaults to [int]). to unlike a character sequence corresponding to number (e.g., 20, which defaults to [int]).  Saying it is a "number string" introduces some confusion - it is a number or a string.  :-)

but not including negative numbers (tokens starting with -)

Careful on this. Remember that PowerShell parses in two modes: command and expression.  You've observed just the command mode.  You can change the behavior WRT -<num> by using a grouping expression or sub-expression e.g.:
PS> function z($n) { "`$n is $n, type is $($n.GetType().FullName)" }
PS> z -19
$n is -19, args[0] is , less than zero True
PS> z (-19)
$n is -19, type is System.Int32

coercion to the target type happens, which:

The hoops that PowerShell jumps through to coerce one type to another are even more significant than that.  IIRC, PS will attempt to use Parse/TryParse methods if they exist as well as instances of ArgumentTransformationAttribute-derived classes (if the associated parameter is decorated with such attributes).  The latter allows users to inject custom logic into the type coercion process.  If the target type is a string, ToString() also fits into the process which is why if you pass a Process object to a parameter of type string, you'll get a value of System.Diagnostics.Process (powershell).
I believe there may be other heuristics involved including using ctors with the correct signature and possibly other methods.

Thanks, @rkeithhill, all good stuff; yes, I was only talking about argument-mode (which is what "about_Parsing" calls it, at least these days), and I've edited my post to make that clearer; I've also incorporated your other suggestions, except for the background on the advanced coercion techniques (I just point to your comment).

Here's the latest version of parser error messages:

These error messages are very clear and helpful.
If providing that level of specificity is the consensus, then I think they're great.
I wonder if the specificity is needed, however, given that someone even attempting to use this feature can be assumed to have a reasonable level of technical competence, which is why I suggested a single catch-all message earlier.
(But I'm probably venturing into bike-shedding territory here.)

Thanks!  RE too specific, I remember a time when the PowerShell error messages were less than helpful.  Over time I think they've gotten better in terms of not only telling you what is wrong but also, when possible, suggesting a mitigation.
Lately, I've been impressed with how well Git does this e.g.:
PS> git statuz
git: 'statuz' is not a git command. See 'git --help'.

Did you mean this?
        status

So while I agree we should keep the error messages as short as possible (otherwise TL;DR) I do think we should provide some help in terms of suggesting a fix.

@rkeithhill the PowerShell Team has discussed enhancing the current suggestion system to be more useful for missing or typos for cmdlets or parameters.  I didn't find an existing issue, so I opened https://github.com/PowerShell/PowerShell/issues/3988

The @PowerShell/powershell-committee reviewed this and we agreed to we do not want the fixed width syntax without braces - we only want the braced syntax.
Arguments against the fixed width syntax:

It's harder to read
It might be similar to C#, but it's not exactly the same, so cut and paste doesn't work anyway
No possible ambiguity, e.g. `uabcd00 vs.  `u{abcd}00

Works for me.  I'll try to get the updates finalized tomorrow night.  Just got home - spent all day of driving from Salt Lake City back to Colorado.

I rebased and squashed down to a single commit the original support for both forms.  Then I pushed a commit with support for the fixed width form removed.

@lzybkr What's the reason for the braced syntax being  `u{abcd} instead of  `{abcd} ?

@DerpMcDerp - the @PowerShell/powershell-committee did not discuss dropping the u, so I suppose it seemed obvious we needed something.
I see some advantages to keeping the u - it's reasonably descriptive, more similar to other languages, and it's a form of future proofing - it might be desirable to use that same syntax or very similar syntax for some future feature (I don't have anything specific in mind though.)
The only advantage I see to dropping the u - it's one less character, not much of an advantage.

Both  `e and  `u{xxxxxx} have been implemented, merged and documented.


Add implementer's guide

/kind documentation
What this PR does / why we need it:
This adds an implementer's guide for Gateway API. The new guide is also now part of the specification, so MUST, SHOULD, and MAY there are treated the same as in the godoc or rendered Specification page.
Does this PR introduce a user-facing change?:

A guide for Gateway API implementers is now included in the specification.

Hey @youngnick, fantastic idea. One thing that might be interesting to see in this document is a recent Slack question about filters and policies. Seeing more context, including differences and the implementer PoV, would be nice.

Hey @youngnick, fantastic idea. One thing that might be interesting to see in this document is a recent Slack question about filters and policies. Seeing more context, including differences and the implementer PoV, would be nice.

That's a great idea, I'll make a note to come back and add that in a later PR.

Thanks @youngnick!
/lgtm
/retest


⚠ ClamAV has degraded performance

In eba981f, ClamAV (https://spamassassin.apache.org/) experienced degraded performance:

HTTP code: 200
Response time: 452 ms

Resolved: ClamAV performance has improved in 4ed9e7a.


Add please widthThatFits(width: CGFloat) and heightThatFits(height: CGFloat)

It would be cool if you @Otbivnoe add these two functions

Will be available in the 2.5.0 release.


breaking(Portal|Popup|Modal): do not autofocus

Breaking Change
What changed?
Portals no longer autofocus on mount.  This means Modals and Popups are no longer automatically keyboard accessible after opening.
What's the solution?
If your app needs to focus a Portal powered component on mount, you should do so explicitly by locating the DOM node that needs focus and calling .focus() when appropriate.

Fixes #1324
Why?
Introduced in #1154, the Portal was updated to take focus on mount and restore focus on unmount.  This was done to allow keyboard access inside of Modals after they opened.  However, the Portal powers all components that appear on the page out of context, Modals, Popups, Confirms, and Dimmers.
It is impossible for the library to know when it is appropriate for a portal in an app to steal focus or when it is appropriate to restore focus to the originally active element on close.  Because of this, the responsibility of focus management is removed from the library and is now the responsibility of the app implementing the component.
This PR removes the final remaining focus feature, namely, focus on mount.

Codecov Report

Merging #1341 into master will decrease coverage by -0.01%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master    #1341      +/-   ##
==========================================
- Coverage   99.75%   99.74%   -0.01%
==========================================
  Files         140      140
  Lines        2401     2394       -7
==========================================
- Hits         2395     2388       -7
  Misses          6        6

Impacted Files
Coverage Δ

src/addons/Portal/Portal.js
100% <100%> (ø)
:white_check_mark:

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 a5ff572...d1c7e17. Read the comment docs.

Released in<EMAIL_ADDRESS>

question, what is the scenario where a modal does not take focus? Would it be worthwhile adding the focus stealing functionality back but put it only there?

The issues came up one at a time:

#1215 stealing focus on re-render is an issue
#1271 stealing focus on close is an issue
#1324 stealing focus on open is an issue

One issue with taking focus (1324) is that if the user has their cursor in an input, then they mouse over a completely unrelated popup somewhere, then the input looses focus since the popup steals focus.
I could see this also being the case if focus was required for any arbitrary element and some other unrelated Portal powered component (Dimmer, Popup, etc) were to open and take focus.
It seems there are very limited cases where changing focus makes sense, such as in some Modals and some Popups.  However, only the developer knows which Popups and Modals make sense to focus and when.  For instance, a Popup with a Button or Input might make sense to focus, but a tooltip does not.  We have not way of knowing this information from the context of the Portal.
The conclusion is that focus management should be handled on a case by case basis using the proprietary knowledge of the implementation.

I was just curious if you had a specific use case for when a modal doesn't steal focus, cause in my mind modals always take over the screen and hence always take focus

I considered only having modals take focus, though, given the other issues I opted to leave it to the user.  I think even with Modals, it only makes sense to take focus if there are controls within the Modal, such as links or buttons.
Although it makes sense to focus some Modals, I think the issues related to unnexpectedly stealing focus from other elements outweigh the benefits.  There is no telling if stealing focus from elsewhere will be detrimental to the UX.
Lastly, SUI core modals do not take focus on mount either.  I considered this in deciding against it by default.
Taken all together, it is sometimes useful to take/restore focus for Modals but I don't think it is always proper to do so.
If we get some more requests for focusing modals on mount, I'd like to consider adding this as a prop(s) to the Portal.  This would enable users to opt-in to focus management for any Portal component.  Given more requests, it may be worth the added complexity.


point2dem outlier filtering to avoid DEMs with large dimensions

For the second time (in the history of these tools) I got a report that point2dem can create a very large DEM in the spatial extent simply because some points are outliers. We filter only by triangulation error but not by spatial extent. There is --near-universe-radius and --far-universe-radius in stereo_tri that can help, but automatic filtering would be better. When iterating over point cloud tiles to find their spatial bounds (https://github.com/NeoGeographyToolkit/StereoPipeline/blob/389221e952dffbf00b26891f9eb5df0fbcf88356/src/asp/Core/OrthoRasterizer.cc#L135) some percentile based statistics could be done to eliminate outliers.

I put a fix. It has been a while. The same parameter --remove-outliers-params now controls removal of outlier by triangulation error and outliers in the bounding box. The daily build has the fix.


docs: typos, formatting and more

Changes:

words typos e.g. "Donwload" to "Download"
use arrows i.e. "->" to "→"
use automatic counting i.e. "1." https://stackoverflow.com/a/75793744/6446567
run markdown formatter (impacted newlines mainly)

Hi @lucasfcnunes
Thanks for your contribution!
Why is this "automatic counting" important here? we don't have any code snippets in between

Hi @lucasfcnunes
Thanks for your contribution!
Why is this "automatic counting" important here? we don't have any code snippets in between

It isn't essential and I can remove it. I usually use it to avoid wrong counting later on.

Why is this "automatic counting" important here? we don't have any code snippets in between

It's helpful for getting smaller diff if someone decides to add a new item in the middle of the list.


Descriptions don't fit in the buttons

The buttons should automatically get wider if longer texts on them.

I cannot replicate this because my screen is probably not so slim as Lauris phone. Will pass QA on this version.


Add links at bottom of the left menu

Also, add Github svg logo to  under
"my-logos:github" name..

This change is

Reviewed 1 of 2 files at r1, 2 of 2 files at r4.
Review status: all files reviewed at latest revision, all discussions resolved, some commit checks broke.

Comments from Reviewable


Graphics for Getting Starting page in VS Code

Related to #1404

cc: @gkulin let's use this for any asks you might have around graphics in the walkthrough

Completed first pass at graphics and revised walkthrough.

Updated flow UX - Figma (graphics, language, etc.)
Graphic .svg exports (works w/different VSCode themes)

@gkulin @bwateratmsft Let me know if you need anything else!


Enable auto-pruning of older, unused packages

This is a follow-up on #44. Once the pruning command has been merged, it would be nice to have it run automatically periodically. My initial thinking is to have it run at the same time when new package tags are updated and only have it prune packages that are something like a week or more obsolete, versus 0 days obsolete for running pwr prune explicitly. (At least, I would assume any pwr shells using older packages would be closed by that time. If not, we can make it longer.)
Here's what I currently have WIP'd: https://github.com/nicklauslittle/airpwr/compare/main...auto-prune. Comments are welcome.

Closed by #75.


performance improvements,

Hello,
Thank you for your hard work on the project. I made some improvements to the code with help from ChatGPT, and it resulted in a 40% increase in performance. I plan to use the improved version of the tokenizer in my OpenAI SDK project, and I suggest you consider implementing the changes too. All the unit tests passed, but my ReSharper made some unnecessary code changes. I apologize for that.
Additionally, I think changing BYTES_TO_UNICODE_CACHE to a Dictionary may provide a slight performance boost, but I'm not sure if it's safe. I don't have enough knowledge on this topic yet.
my repo: https://github.com/betalgo/openai

thank you @kayhantolga this is great! :-)
FYI I'm also porting the tokenizer into Semantic Kernel ("SK"), and I will take these improvements over there too, perfect timing.  As a plus with SK, the library will be available also with a nuget signed by Microsoft, which is safer for Prod.
The repo here will remain up anyway, and I hope to check in some other work in future.
By the way, since you're looking at this: I found that OpenAI regex seems to be vulnerable to ReDoS.
Any chance you looked into that too?
string pat = @"'s|'t|'re|'ve|'m|'ll|'d| ?\p{L}+| ?\p{N}+| ?[^\s\p{L}\p{N}]+|\s+(?!\S)|\s+";

@kayhantolga I tried the changes with a single big file and I could not see perf changes, so looks like the difference is only about the timing when the cache instances are created. Could you share some info about the stress test you ran?

I was thinking of publishing my tests, but I realized they are a mess at the moment. I need to tidy them up, but I attached a screenshot which you can check.😅
My improvements focused on caching regular expressions. This improvement is most noticeable when receiving many requests with small pieces of data.
Unfortunately, I do not have experience with regex, so I can't help with ReDoS.
Another improvement we made in our repository is returning yield results and adding another method that will only return the token count. These changes were not included in the benchmark, but I believe they will also improve performance. (shared code piece)

    /// <summary>
    ///     Encode This method use LF style EOL, if you use CR LF style EOL you need to set cleanUpWindowsEOL to true
    /// </summary>
    /// <param name="text"></param>
    /// <param name="cleanUpCREOL">set it true to get rid of CR</param>
    /// <returns></returns>
    public static IEnumerable<int> Encode(string text, bool cleanUpCREOL = false)
    {
        if (string.IsNullOrEmpty(text))
        {
            yield break;
        }

        if (cleanUpCREOL)
        {
            text = text.Replace("\r", "");
        }

        foreach (var newToken in GetNewTokens(text))
        {
            yield return TokenizerGpt3Settings.Encoder[newToken];
        }
    }

    /// <summary>
    ///     Get token count. This method use LF style EOL, if you use CR LF style EOL you need to set cleanUpWindowsEOL to true
    /// </summary>
    /// <param name="text"></param>
    /// <param name="cleanUpCREOL">set it true to get rid of CR</param>
    /// <returns></returns>
    public static int TokenCount(string text, bool cleanUpCREOL = false)
    {
        if (string.IsNullOrEmpty(text))
        {
            return 0;
        }

        if (cleanUpCREOL)
        {
            text = text.Replace("\r", "");
        }

        return GetNewTokens(text).Count();
    }

    private static IEnumerable<string> GetNewTokens(string text)
    {
        var byteEncoder = BytesToUnicodeCache;
        var matches = EncodingRegex.Matches(text);

        foreach (var match in matches.Cast<Match>())
        {
            var tokenBytes = Encoding.UTF8.GetBytes(match.Value);
            var token = new string(Array.ConvertAll(tokenBytes, x => byteEncoder[x]));
            var newTokens = BytePairEncoding(token).Split(' ');

            foreach (var newToken in newTokens)
            {
                yield return newToken;
            }
        }
    }


Like_user: Like random number of medias + random order

Add to like_user function the ability to

like random number of user's medias
like random medias from user

random.choice

done by @ppleskov


Hh

Please .. If you have an issue/bug/problem, Fill in as much as information as possible -> Logs -> reproducing steps and don't forgot to make a nice title for it. Hh isn't much helpful.
Thanks


Test_fold_relative_move() fails all the times from patch 8.2.2385

Describe the bug
Vim test Test_fold_relative_move() fails all the time
on my xubuntu-18.04.5 machine using the latest vim-8.2.2394.
I did a git bisection and bug started to appear with this commit:
commit e71996bd0865659bde5450f466bc3e53e83431b2 (tag: v8.2.2385)
Author: Bram Moolenaar<EMAIL_ADDRESS>Date:   Thu Jan 21 17:03:07 2021 +0100

    patch 8.2.2385: "gj" and "gk" do not work correctly when inside a fold

    Problem:    "gj" and "gk" do not work correctly when inside a fold.
    Solution:   Move check for folding. (closes #7724, closes #4095)

Running the test with valgrind shows use of uninitialized memory:
==16012== Memcheck, a memory error detector
==16012== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==16012== Using Valgrind-3.17.0.GIT and LibVEX; rerun with -h for copyright info
==16012== Command: ../vim -f -u unix.vim -U NONE --noplugin --not-a-term -S runtest.vim test_fold.vim --cmd au\ SwapExists\ *\ let\ v:swapchoice\ =\ "e"
==16012== Parent PID: 16011
==16012==
==16012== Conditional jump or move depends on uninitialised value(s)
==16012==    at 0x5C2B23: f_term_dumpwrite (terminal.c:4758)
==16012==    by 0x4544D5: call_internal_func (evalfunc.c:2047)
==16012==    by 0x5DEDB7: call_func (userfunc.c:2527)
==16012==    by 0x5DE6E8: get_func_tv (userfunc.c:906)
==16012==    by 0x5E5031: ex_call (userfunc.c:4482)
==16012==    by 0x470BE4: do_one_cmd (ex_docmd.c:2588)
==16012==    by 0x470BE4: do_cmdline (ex_docmd.c:1003)
==16012==    by 0x5E034A: call_user_func (userfunc.c:1889)
==16012==    by 0x5E034A: call_user_func_check (userfunc.c:2043)
==16012==    by 0x5DECA4: call_func (userfunc.c:2509)
==16012==    by 0x5DE6E8: get_func_tv (userfunc.c:906)
==16012==    by 0x5E5031: ex_call (userfunc.c:4482)
==16012==    by 0x470BE4: do_one_cmd (ex_docmd.c:2588)
==16012==    by 0x470BE4: do_cmdline (ex_docmd.c:1003)
==16012==    by 0x5E034A: call_user_func (userfunc.c:1889)
==16012==    by 0x5E034A: call_user_func_check (userfunc.c:2043)
==16012==    by 0x5DECA4: call_func (userfunc.c:2509)
==16012==    by 0x5DE6E8: get_func_tv (userfunc.c:906)
==16012==    by 0x5E5031: ex_call (userfunc.c:4482)
==16012==    by 0x470BE4: do_one_cmd (ex_docmd.c:2588)
==16012==    by 0x470BE4: do_cmdline (ex_docmd.c:1003)
==16012==    by 0x450F8B: ex_execute (eval.c:6128)
==16012==    by 0x470BE4: do_one_cmd (ex_docmd.c:2588)
==16012==    by 0x470BE4: do_cmdline (ex_docmd.c:1003)
==16012==    by 0x5E034A: call_user_func (userfunc.c:1889)
==16012==    by 0x5E034A: call_user_func_check (userfunc.c:2043)
==16012==    by 0x5DECA4: call_func (userfunc.c:2509)
==16012==    by 0x5DE6E8: get_func_tv (userfunc.c:906)
==16012==    by 0x5E5031: ex_call (userfunc.c:4482)
==16012==    by 0x470BE4: do_one_cmd (ex_docmd.c:2588)
==16012==    by 0x470BE4: do_cmdline (ex_docmd.c:1003)
==16012==    by 0x577AC8: do_source (scriptfile.c:1401)
==16012==    by 0x577198: cmd_source (scriptfile.c:971)
==16012==    by 0x470BE4: do_one_cmd (ex_docmd.c:2588)
==16012==    by 0x470BE4: do_cmdline (ex_docmd.c:1003)
==16012==    by 0x63BD0C: exe_commands (main.c:3056)
==16012==    by 0x63BD0C: vim_main2 (main.c:760)
==16012==    by 0x63ACF4: main (main.c:412)
==16012==  Uninitialised value was created by a stack allocation
==16012==    at 0x5C277A: f_term_dumpwrite (terminal.c:4658)

I'll try to find later what exactly is uninitialized.
To Reproduce
$ make test_fold
rm -f test_fold.res test.log messages
VIMRUNTIME=../../runtime  ../vim -f  -u unix.vim -U NONE --noplugin --not-a-term -S runtest.vim test_fold.vim --cmd 'au SwapExists * let v:swapchoice = "e"' > /dev/null

From test_fold.vim:
Executed Test_address_fold()                       in   0.000660 seconds
Executed Test_combining_folds_indent()             in   0.000391 seconds
Executed Test_combining_folds_marker()             in   0.000371 seconds
Executed Test_fold_create_delete()                 in   0.000243 seconds
Executed Test_fold_create_delete_create()          in   0.000225 seconds
Executed Test_fold_create_marker_in_C()            in   0.001731 seconds
Executed Test_fold_delete_first_line()             in   0.000395 seconds
Executed Test_fold_delete_with_marker()            in   0.000559 seconds
Executed Test_fold_delete_with_marker_and_whichwrap() in   0.000838 seconds
Executed Test_fold_error()                         in   0.000712 seconds
Executed Test_fold_expr()                          in   0.000730 seconds
Executed Test_fold_expr_error()                    in   0.000498 seconds
Executed Test_fold_indent()                        in   0.000532 seconds
Executed Test_fold_last_line_with_pagedown()       in   0.002351 seconds
Executed Test_fold_manual()                        in   0.000459 seconds
Executed Test_fold_marker()                        in   0.000484 seconds
Executed Test_fold_move()                          in   0.000443 seconds
Executed Test_fold_relative_move()                 in   0.000387 seconds
Executed Test_fold_syntax()                        in   0.000614 seconds
Executed Test_folddoopen_folddoclosed()            in   0.000574 seconds
Executed Test_foldopen_exception()                 in   0.000250 seconds
Executed Test_folds_marker_in_comment()            in   0.000388 seconds
Executed Test_folds_marker_in_comment2()           in   0.000382 seconds
Executed Test_folds_with_rnu()                     in   0.066821 seconds
Executed Test_foldtext_recursive()                 in   0.001113 seconds
Executed Test_indent_fold()                        in   0.000798 seconds
Executed Test_indent_fold2()                       in   0.000767 seconds
Executed Test_indent_fold_with_read()              in   0.003878 seconds
Executed Test_manual_fold_with_filter()            in   0.026270 seconds
Executed Test_move_folds_around_indent()           in   0.003427 seconds
Executed Test_move_folds_around_manual()           in   0.005859 seconds
Executed Test_move_no_folds()                      in   0.000846 seconds
Executed Test_undo_fold_deletion()                 in   0.001577 seconds
Executed Test_update_folds_expr_read()             in   0.004849 seconds
Executed 34 tests                        in   0.142166 seconds
1 FAILED:
Found errors in Test_fold_relative_move():
command line..script /home/pel/sb/vim/src/testdir/runtest.vim[468]..function RunTheTest[39]..Test_fold_relative_move line 25: Expected 3 but got 2
command line..script /home/pel/sb/vim/src/testdir/runtest.vim[468]..function RunTheTest[39]..Test_fold_relative_move line 30: Expected 2 but got 1
Makefile:63: recipe for target 'test_fold' failed
make: *** [test_fold] Error 1

Environment

Vim version Vim >= 8.2.2385 (huge)
OS: xubuntu 18.04.5
Terminal: xfce4-terminal-<IP_ADDRESS>

Dominique wrote:

Vim test Test_fold_relative_move() fails all the time
on my xubuntu-18.04.5 machine using the latest vim-8.2.2394.

Strangely it doesn't fail for me, and also do not see a problem with
valgrind.

I did a git bisection and bug started to appear with this commit:
commit e71996bd0865659bde5450f466bc3e53e83431b2 (tag: v8.2.2385)
Author: Bram Moolenaar<EMAIL_ADDRESS>Date:   Thu Jan 21 17:03:07 2021 +0100

    patch 8.2.2385: "gj" and "gk" do not work correctly when inside a fold

    Problem:    "gj" and "gk" do not work correctly when inside a fold.
    Solution:   Move check for folding. (closes #7724, closes #4095)

Running the test with valgrind shows use of uninitialized memory:
==16012== Memcheck, a memory error detector
==16012== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==16012== Using Valgrind-3.17.0.GIT and LibVEX; rerun with -h for copyright info
==16012== Command: ../vim -f -u unix.vim -U NONE --noplugin --not-a-term -S runtest.vim test_fold.vim --cmd au\ SwapExists\ *\ let\ v:swapchoice\ =\ "e"
==16012== Parent PID: 16011
==16012==
==16012== Conditional jump or move depends on uninitialised value(s)
==16012==    at 0x5C2B23: f_term_dumpwrite (terminal.c:4758)
==16012==    by 0x4544D5: call_internal_func (evalfunc.c:2047)

[...]

I'll try to find later what exactly is uninitialized.

I have seen this warning before, it might be unrelated.  But it's good
to try and figure this out anyway.
--
hundred-and-one symptoms of being an internet addict:
212. Your Internet group window has more icons than your Accessories window.
/// Bram Moolenaar --<EMAIL_ADDRESS>-- http://www.Moolenaar.net   \
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \
\\  an exciting new programming language -- http://www.Zimbu.org        ///
\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

Dominique wrote:

Vim test Test_fold_relative_move() fails all the time
on my xubuntu-18.04.5 machine using the latest vim-8.2.2394.

Strangely it doesn't fail for me, and also do not see a problem with
valgrind.

I did a git bisection and bug started to appear with this commit:
commit e71996bd0865659bde5450f466bc3e53e83431b2 (tag: v8.2.2385)
Author: Bram Moolenaar<EMAIL_ADDRESS>Date:   Thu Jan 21 17:03:07 2021 +0100

    patch 8.2.2385: "gj" and "gk" do not work correctly when inside a fold

    Problem:    "gj" and "gk" do not work correctly when inside a fold.
    Solution:   Move check for folding. (closes #7724, closes #4095)

Running the test with valgrind shows use of uninitialized memory:
==16012== Memcheck, a memory error detector
==16012== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==16012== Using Valgrind-3.17.0.GIT and LibVEX; rerun with -h for copyright info
==16012== Command: ../vim -f -u unix.vim -U NONE --noplugin --not-a-term -S runtest.vim test_fold.vim --cmd au\ SwapExists\ *\ let\ v:swapchoice\ =\ "e"
==16012== Parent PID: 16011
==16012==
==16012== Conditional jump or move depends on uninitialised value(s)
==16012==    at 0x5C2B23: f_term_dumpwrite (terminal.c:4758)
==16012==    by 0x4544D5: call_internal_func (evalfunc.c:2047)

[...]

I'll try to find later what exactly is uninitialized.

I have seen this warning before, it might be unrelated.  But it's good
to try and figure this out anyway.
--
hundred-and-one symptoms of being an internet addict:
212. Your Internet group window has more icons than your Accessories window.
/// Bram Moolenaar --<EMAIL_ADDRESS>-- http://www.Moolenaar.net   \
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \
\\  an exciting new programming language -- http://www.Zimbu.org        ///
\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

I now recall a similar valgrind error in https://github.com/vim/vim/pull/7187
which was fixed at the time.  But there is still another bug with similar
symptoms.

I now recall a similar valgrind error in https://github.com/vim/vim/pull/7187
which was fixed at the time.  But there is still another bug with similar
symptoms.

I found that the test fails when the terminal size wider or equal than 100 rows.
I created PR https://github.com/vim/vim/pull/7739 to fix it.
Regarding valgrind error, I will look at it later but it's unrelated tot he failing test.

I found that the test fails when the terminal size wider or equal than 100 rows.
I created PR https://github.com/vim/vim/pull/7739 to fix it.
Regarding valgrind error, I will look at it later but it's unrelated tot he failing test.

Dominique wrote:

I found that the test fails when the terminal size wider or equal than
100 rows.  I created PR https://github.com/vim/vim/pull/7739 to fix
it.

Ah, that explains it.  Thanks for making a fix.

Regarding valgrind error, I will look at it later but it's unrelated
tot he failing test.

Yes, I have seen this before and could not pinpoint the cause then.
--
How do I set the laser printer to stun?
/// Bram Moolenaar --<EMAIL_ADDRESS>-- http://www.Moolenaar.net   \
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \
\\  an exciting new programming language -- http://www.Zimbu.org        ///
\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

Dominique wrote:

I found that the test fails when the terminal size wider or equal than
100 rows.  I created PR https://github.com/vim/vim/pull/7739 to fix
it.

Ah, that explains it.  Thanks for making a fix.

Regarding valgrind error, I will look at it later but it's unrelated
tot he failing test.

Yes, I have seen this before and could not pinpoint the cause then.
--
How do I set the laser printer to stun?
/// Bram Moolenaar --<EMAIL_ADDRESS>-- http://www.Moolenaar.net   \
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \
\\  an exciting new programming language -- http://www.Zimbu.org        ///
\\            help me help AIDS victims -- http://ICCF-Holland.org    ///


return current instance instead of new instance

I think it will reduce the memory used maybe.

If you are finding that your objects are not being garbage collected, check that they are not in the global scope. If they are, you will need to unset them so PHP knows it can gc them.


Can't create user in 2.1.5

Guys,
Sometimes during invocation of OSecurity.createUser it's possible to catch the following exception. Please pay attention to the fact that RID and RID of "duplicate" record are actually the same.
com.orientechnologies.orient.core.storage.ORecordDuplicatedException: Cannot index record OUser{name:,password:{SHA-256}5994471ABB01112AFCC18159F6CC74B4F511B99806DA59B3CAF5A9C173CACFC5,status:ACTIVE,roles:[1],registered:Sat Nov 07 15:57:01 PST 2015,upgraded:false}: found duplicated key '' in index 'OUser.name' previously assigned to the record #5:323 RID=#5:323
	at com.orientechnologies.orient.core.index.OIndexTxAwareOneValue.checkEntry(OIndexTxAwareOneValue.java:224)
	at com.orientechnologies.orient.core.index.OClassIndexManager.checkIndexedPropertiesOnCreation(OClassIndexManager.java:341)
	at com.orientechnologies.orient.core.index.OClassIndexManager.checkIndexes(OClassIndexManager.java:585)
	at com.orientechnologies.orient.core.index.OClassIndexManager.onRecordBeforeCreate(OClassIndexManager.java:410)
	at com.orientechnologies.orient.core.hook.ODocumentHookAbstract.onTrigger(ODocumentHookAbstract.java:226)
	at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.callbackHooks(ODatabaseDocumentTx.java:1037)
	at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.executeSaveRecord(ODatabaseDocumentTx.java:1930)
	at com.orientechnologies.orient.core.tx.OTransactionNoTx.saveRecord(OTransactionNoTx.java:160)
	at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.save(ODatabaseDocumentTx.java:2532)
	at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.save(ODatabaseDocumentTx.java:121)
	at com.orientechnologies.orient.core.record.impl.ODocument.save(ODocument.java:1768)
	at com.orientechnologies.orient.core.record.impl.ODocument.save(ODocument.java:1764)
	at com.orientechnologies.orient.core.metadata.security.OUser.save(OUser.java:287)
	at com.orientechnologies.orient.core.metadata.security.OSecurityShared.createUser(OSecurityShared.java:228)
	at com.orientechnologies.orient.core.metadata.security.OSecurityProxy.createUser(OSecurityProxy.java:103)

@PhantomYdn About message inside of exception those are not rids of duplicated and existing records. Those are rids of the same duplicated record.
But please look on 2 pieces of the message from exception above:
This one >Cannot index record OUser{**name:,**password:
And this one >found duplicated key ''
As you can see you create user with empty name, is it possible ?

As additional constraint I will add minimum length of username as part of this issue, and will prohibit spaces in regexp.

Are you sure that it is not related to https://github.com/orientechnologies/orientdb/issues/4600 ?

pushed

Closed because of no reply. Please free to reopen issue if you have information which I asked.


DHCP Config and Snapshots not working

I found this very beautyfull and usefull tool for my isc-dhcp-server, but i run on Ubuntu and Debian into the same issues if i want to access the configs.
In the Logs there is a Error 500 (internal server error)
In Chrome i see in the logs if i press on the Save Config Button: "fs is not defined"
If i click on DHCP Config Snapshots i have a greyed out screen and the error: "ENOENT: no such file or directory, scandir './config_backups'"
The npm Package fs ist installed, but i get a warning that fsevents is unsopported on amd64 platforms, i tried also other nodejs versions like 6.14 and the newest 9.11 with no success.
Read out the Config Files and the lease table and so on works fine, paths in the config are default and all correct...
If it helps: I´m able to start/stop/restart the dhcp server from the Glass UI and can save the glass settings, only the dhcp settings and snapshots won´t run
Please help! :)

I get it working now, please look for the Changes in my fork. In routes/dhcp_config_save.js was var fs = require('fs') missing. Also i have changed in all files require('fs') into require('file-system') because fs seems to be deprecated...

In my case i used Debian 9, same problem with config and log file. Based on AlexW85 post, I solved the problem adding just a line in dhcp_config_save.js file :
var express = require('express');
var router = express.Router();
var fs = require('fs');
Using require('file-system') in my case doesn't work... more errors...

Interesting, this must have slipped during the last sweep of changes, I will get this sorted and spot check other functions
Thanks guys


Application #{CLIENT_ID} is not supported for this API version.

I installed the gem and configured it as instructed, adding a "scope" parameter. I'm able to sign in to Outlook, but when redirected to the app, I get the following error: " Application #{CLIENT_ID} is not supported for this API version." Does this mean the gem is trying to use v1 of the Office 365 APIs? If so, do you need help porting the gem to v2? Could you please suggest a fix? Any help would be very much appreciated! Thanks in advance!

I'm also facing that issue. Can you please help us in this regard.
Thank you

Same issue here. Thanks for any help :)

In my investigation of this issue, I found, omniauth-office365 gem is using 1.5 version of graph.windows.net/. It should use v2. Please update gem to use the latest versions of the library.
Because of this error, I handled authentication process manually by following this tutorial and its work for me.
https://dev.outlook.com/RestGettingStarted/Tutorial/ruby


Feature request: support for "eventually" (willing to PR)

Hi there!
I was playing around with busted for a project I'm working on. I have a use-case for something like the following:
assert.eventually(f).returns(x)

That is, a way to provide a function that is repeatedly called at some cadence, until the provided function returns an expected result. Specifically in my case, I wanted to assert that after starting a subprocess I expect that process to eventually exist on my system. Then when I issue a kill I expect that process to die eventually.
Other similar test frameworks, such as ginkgo in the go ecosystem, have support for something like Eventually(f).Should(Equal(x)). This is useful for firing off async instructions and waiting for a thing to happen.
I would suggest, as with ginkgo, that the timeout and check interval of eventually be configurable and default to a timeout of 1 second and a interval of 50 milliseconds (where the platform supports it). This could be implemented as optional arguments to the eventually matcher or as additional words for a more natural read. For example:
assert.eventually(f, 10, 0.1).returns(x)
assert.eventually(f).within(10).every(0.01).returns(x)

I'm not sure how controversial a suggestion this is, so here's more controversy. Maybe we could provide a more human readable experience for the optional args:
assert.eventually(f).within("10s").every("100ms").returns(x)

Bonus (?)
If the idea above is well received, I'm happy to also provide a PR for something like:
assert.consistently(f).returns(x)

The usage here would be similar to the above.
I'm happy to PR all of the above - let me know what you think!
Thanks!

I don't think this can be implemented actually without the async support. This would take some serious designing imo.
For example, the every setting (check interval) requires a timer to validate. This timer would be depending on the async implementation. Which Busted explicitly tries to stay away from.

 I'm quite new to the lua ecosystem so I'm unfamilar with what exists and what doesn't.
Is there a set of systems that busted aims to support or is it just any system that Lua runs on?

Thanks for the info, I've had a read through the async issue.
I don't think what I'm suggesting requires busted async support. I imagined eventually sleeping the main thread like other implementations such as ginkgo. Async activities I'm interested in testing are out of process.
A few examples:

fork, exec in the child
use eventually to wait for it to be up in the parent process

Or:

hit some external async API
wait for the resource to become ready using eventually

Neither of the above would require busted async support as far as I can tell.

use eventually to wait for it to be up in the parent process

How do you intent to "wait" if Busted has no notion of async? So I really think this is quite hard. But in the end it's not my call, maybe @ajacksified or @DorianGray can comment.
The array is a good example of what you want to do probably (except for not having any async stuff)
It's also very well possible to create a separate Lua module, that would provide those assertions on top of Luassert. You can simply use Luassert's API (see example) to register the assertions. There is no need for those to live inside the Luassert repo. Here are some project specific assertions for example.
So if you go ahead and the change is not accepted, it can still be it's own module, and nothing is lost for your own use case.

So if you go ahead and the change is not accepted, it can still be it's own module, and nothing is lost for your own use case.

I'll go ahead with your suggestion and do this for sure.
However, I don't think I need a "wait" to implement this - sleep would be good enough. Pseudocoding this out it could be implemented something like:
loop {
  if timeout() {
    fail()
  }

  if f() == x {
    pass()
  }

  sleep(interval)
}

fascinating that you're using busted to test rust, I've also found the testing facilities there to be lackluster.
I'm going to close this for now, if it's still relevant please ping/reopen. This seems like a pretty edge case feature...I don't think I've ever written code that would eventually return a value without finality.


Feat(LSP): Support vfs.

Update text by range in vfs and compile with source code instead of file path.

1. Does this PR affect any open issues?(Y/N) and add issue references (e.g. "fix #123", "re #123".):

[ ] N
[x] Y #297

2. What is the scope of this PR (e.g. component or file name):
LSP

3. Provide a description of the PR(e.g. more details, effects, motivations or doc link):

[ ] Affects user behaviors
[ ] Contains syntax changes
[ ] Contains variable changes
[ ] Contains experimental features
[ ] Performance regression: Consumes more CPU
[ ] Performance regression: Consumes more Memory
[x] Other

Update text by DidChangeTextDocumentParams in LSP vfs, and compile with source code instead of file path in LSP

4. Are there any breaking changes?(Y/N) and describe the breaking changes(e.g. more details, motivations or doc link):

[x] N
[ ] Y

5. Are there test cases for these changes?(Y/N) select and add more details, references or doc links:

[x] Unit test
[ ] Integration test
[ ] Benchmark (add benchmark stats below)
[ ] Manual test (add detailed scripts or steps below)
[ ] Other

6. Release note

Please refer to Release Notes Language Style Guide to write a quality release note.
None

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 89.313%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
2106

Relevant Lines:
2358

💛  - Coveralls


Add a command support set DirectChildrenLoaded

What changes are proposed in this pull request?
Please outline the changes and how this PR fixes the issue.
Why are the changes needed?
Please clarify why the changes are needed. For instance,

If you propose a new API, clarify the use case for a new API.
If you fix a bug, describe the bug.

Does this PR introduce any user facing changes?
Please list the user-facing changes introduced by your change, including

change in user-facing APIs
addition or removal of property keys
webui

context is in #15647

I didn't quite follow the original issue in #15647, but if the decision is that a user facing command is desired, then we need to come up with a better name than directChildrenLoaded and clear definition of what this does.

@jiacheliu3 @dbw9580 @elega  Thanks for the discussion about this PR, I rename the command, PTAL

@jiacheliu3 Thanks for the kindly review, I address all your suggestion, PTAL.

alluxio-bot, merge this please


Use .odb rather than .def between OpenROAD steps

There is information that can't be stored in DEF so OpenROAD is moving away from it as a persistence format.  For example congestion, routing guides, pin access, Verilog hierarchy, and power domains have no representation in DEF.  RTL-MP and UPF support are near term features that will require odb.
You should use read_db / write_db rather than read_def / write_def.  ORFS has already made the switch and can be used as a reference.

Note that write_def remains available for interfacing with other tools (eg KLayout) at the end of the OR flow.

Thank you for the suggestion and context - this explains the removal of the -guide parameter in newer versions of OpenROADs' detailed routing steps.

@maliberty In principle, what features are deprecated in the flow that would preclude the use of a def based flow? If the -guide input is gone from the detailed router, does that mean there is no way to take in results from an external placer/global router? Since openroad is currently the only APR that supports odb, this seems like a step backwards?
I think ASCII readable hand off should always be an available fall back option (even if only applicable at older nodes).

@aolofsson The DEF writer is still fully featured, but it lacks the ability to store tool specific information.
It's still fully possible to read_def and route that with openroad. What we're advocating for is that when you're using openroad the odb should take precedent over DEF.
DEF has a number of missing features that make it non ideal for flow infrastructure, namely it has no hierarchy support.

I do believe that in the long term we should try to move all open source tools to odb. DEF will always have a place, but odb will allow tighter integration with the rest of the open source tools.

Thanks for the extra information. Is it safe to read and write both OpenDB and DEF files to gather all available information from both formats? Or do we risk getting duplicate data if we call read_db followed by read_def?

In general those commands are pretty much mutually exclusive. Write commands are idempotent, and def is always a subset of odb so there would never be a benefit to do so for a single block.
read_def has a few modes on it that allow you to read pins or floorplan information in addition to the db..
OpenROAD assumes a single unique instance of a chip/block in its code. Which read_def and read_db  either instantiate or overwrite. This is something @maliberty and I are working on rectifying.
In short read_db and read_def tend to overwrite everything.

Thanks for the clarifications @QuantamHD !

I do believe that in the long term we should try to move all open source tools to odb.

This is a great goal, but I have found that it is EXTREMELY difficult to convince anyone to adopt a standard. Babel's tower is the norm.  II hope it will always be possible to export/import ascii information from openroad that would allow modularity with non open source commercial tools (which will likely never be odb compatible).

Is there a spec for the extra information in odb that gets used by place, cts, route?
Is there a way to export this information as a JSON file so that it can be translated to the appropriate commands in others tools to complement a def read in those tools?

This is a great goal, but I have found that it is EXTREMELY difficult to convince anyone to adopt a standard

Agreed. I'm advocating for a "put your money where your mouth is approach". i.e. we do the work to add support into those tools, and add functionality that isn't possible with the existing formats.

Is there a spec for the extra information in odb that gets used by place, cts, route?

There is not. I suspect unless a process is put in place fields will get added where convenient.

Is there a way to export this information as a JSON file so that it can be translated to the appropriate commands in others tools to complement a def read in those tools?

There is no way to do that today, and -guides was one example where that kind of functionality was removed. If the need arises OpenROAD could be enhanced to do that, but I don't think there's a priority to implement that functionality within the current developer/funding group. Could always be added by someone in the open source community.

@QuantamHD on the subject of standards I'm curious if you or anyone on the OR dev team has looked into merging odb into CIRCT?
I originally had the impression that CIRCT was solely focused on frontends, but I saw recently that one of their broad forward-looking goals is to expand to IRs that capture physical design info (source: https://youtu.be/ee01_yHjs9k?t=2651). This might be a big lift at the moment (and I'm not sure what their roadmap is), but from my outsider perspective it seems like there's some philosophical alignment there.
(Sorry for the tangent -- this is pretty much irrelevant to the original issue, and further discussion might best be kept to another issue in the OR repo. I'm also chiming in on this as as a personal interest, not really with my official SC dev hat on :))

@QuantamHD @maliberty Hopefully this doesn't come across the wrong way....but I feel like I owe it to openroad to tell you that I think it is a mistake to make the platform less open.  I do understand the limitations of DEF, but there are plenty of cases where DEF works just fine. As an open platform. I believe it should strive to support the following scenarios without forcing people to adopt the odb database approach.

Taking the output of openroad results (def/gateleve/props/etc) as an input to complete the job in an external tool. For example, there are times when the openroad is useful up until detailed route, but a different (commercial) solution is needed for the last step (detailed route + chip finishing).

Taking the outputs from other tools as inputs to openroad to fill potential OR capability gaps. (physical synthesis, etc)

Integration/etsting with legacy (and prototype) academic placers/routers for historical reasons which all work with DEF (and guides?) Integrating with opendb may be a barrier for collaboration and benchmarking with these tools.

An ASCII readable well documented standard (DEF, JSON) invites the community to collaborate (anyone with Python skills can contribute). A  complex performance optimzied datastructure with undocumented features/fields (per your comment) reduces the potential for contribution.

@aolofsson It does not come across the wrong way. Good things happen when the community gets involved.
Just to be clear no one is advocating for getting rid of DEF. I'm advocating for another option in the long term. ODB is just a C++ wrapper on DEF with a very well documented API. https://github.com/The-OpenROAD-Project/OpenROAD/blob/master/src/odb/include/odb/db.h (The entirety of the public API is in that file)
From what I've seen, projects like DFFRAM have used ODB successfully to make complicated things, but options are important. I'm fully supportive of DEF as a format.
Importantly, what we are advocating for in the this ticket specifically is that using DEF as an intermediate-representation for OpenLANE is non-ideal. Every use case you listed is still possible today, and more specifically DEF is the primary mechanism by which Klayout and Magic generate GDSII. DEF is here to stay, but in my opinion it should be primarily used when Design Exchange between tools is needed.
I think users of OpenLANE would be quite sad if one day we supported hierarchical verilog, but then it got flattened just after floorplanning. As a flow maintainer myself (bazel_rules_hdl) I have always used (read/write)_db in my flow. I would advocate you do the same in SiliconCompiler except in cases when you need interchange between tools.

@QuantamHD Thank you for the context! I agree 100% that end-to-end openroad flows like openlane should use odb and we will make that change. A small nit...an open source header file is a necessary but insufficient condition for broad adoption in open source. It really should have some kind of auto-generated manual (sphinx, doxygen,,,). That header files is massive.

Agreed on the documentation front. There's a lot between where we are and productive usage. There's no immediate plans of change just a north star of software defined hardware.

I just wanted to add, it case it's unclear, that there has been no loss in functionality, just a change to the API.
Before, the ASCII .guide file was being read and parsed by the detailed router. This is why there was a -guide flag for detailed_route.
Now, the guides are loaded/stored directly in odb. There are corresponding read_guides and write_guides commands to read from or write to an ASCII .guides file. As far as I know, there is no plan to remove this functionality or change the format.
In summary:

Old flow
New flow
New flow with same intermediates

global_route -guide_file GUIDE_FILEdetailed_route -guide GUIDE_FILE
global_route// guides stored directly in odbdetailed_route
global_routewrite_guides GUIDE_FILE// close and reload openroadread_guides GUIDE_FILEdetailed_route

@rovinski Thanks for confirming that read/write guides is available!

read_lef/def will remain but you will get limited functionality in some cases if you go that route.

@aolofsson  Let me expand on my thoughts.  I don't think we should take away to ability to work in industry standard formats where they exist.  However all proprietary tools also have proprietary formats as storing, loading, and parsing text is quite inefficient.   In OR case we are making our database public and all the data fully accessible.
There is no industry standard for guides and most tools don't generally expose them.  We have been using a contest format and still support it for that purpose.  UPF provides partial support for power domains but additional data is necessary to physical implement them.  We would have to invent another format for that as well.   Any debugging information would need another format.  Clusters/partitions can be jammed into DEF but it isn't that great.  Etc.
Having to read/write 5-10 different files between steps is possible but not great.
ML people recoil in horror at all this and just want to query a db for the data.

Merged with #1200


how to spin item or !ball?

how to

it was in this old mod https://github.com/Danilo1301/crab-game-mod
and doesnt work anymore after the latest update

can u make it work again?

I can't, because dani changed the way the objects sync (it just doesnt sync anymore) :/


Update enums.py

For futures need to update stop loss enums

hmm this might fatally break existing code for users. perhaps add comment as deprecated for old values + add new enums as additive lines instead of replacing the existing ones

Hello,
I have tried to update the file without affecting spot users and also included post only timeInForce enum.
Please check and update it.
Thanks.


terminate_pods with tries to match labels even when one is not set.

When using terminate_pods and defining only a NS, it will also try to match the labes to none:
Config:
method:
- name: terminate-pods
  type: action
  provider:
    func: terminate_pods
    module: chaosk8s.pod.actions
    type: python
    arguments:
      ns: 'myapp'

Error log:
[2018-10-05 03:05:15 DEBUG] Using Kubernetes context: Default
[2018-10-05 03:05:15 DEBUG] Found 0 pods labelled 'None'
[2018-10-05 03:05:15 DEBUG] Activity failed
    Traceback (most recent call last):
      File "/usr/local/lib/python3.5/dist-packages/chaoslib/provider/python.py", line 50, in run_python_activity
        return func(**arguments)
      File "/usr/local/lib/python3.5/dist-packages/chaosk8s/pod/actions.py", line 58, in terminate_pods
        pods = [pods[0]]
    IndexError: list index out of range

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
      File "/usr/local/lib/python3.5/dist-packages/chaoslib/activity.py", line 218, in run_activity
        result = run_python_activity(activity, configuration, secrets)
      File "/usr/local/lib/python3.5/dist-packages/chaoslib/provider/python.py", line 55, in run_python_activity
        sys.exc_info()[2])
      File "/usr/local/lib/python3.5/dist-packages/chaoslib/provider/python.py", line 50, in run_python_activity
        return func(**arguments)
      File "/usr/local/lib/python3.5/dist-packages/chaosk8s/pod/actions.py", line 58, in terminate_pods
        pods = [pods[0]]
    chaoslib.exceptions.ActivityFailed: IndexError: list index out of range
[2018-10-05 03:05:15 ERROR]   => failed: IndexError: list index out of range

Setting a label_selector however, gets things to work.

Good catch! Thanks.

That was a good one to catch @rdrgmnzs as it impacted all sort of calls in the code. The problem is that underlying Kubernetes client won't treat  None as you would hope but rather serialize everything to string.

@Lawouach thank you for the fix and the quick turn around!


Dashboard doesn't offer a kubernetes version dropdown for upgrade of imported RKE2 cluster contrary to Ember UI

Reproducer:

Deploy any local rancher cluster with rancher/rancher:master-head c7f3cce, RKE2 flag is Active
Provision eg. one cluster VM/Node and deploy RKE2 on it by running curl -sfL https://get.rke2.io | sh - && systemctl enable --now rke2-server.service - with default values it will deploy RKE2 cluster with k8s v1.20.8+rke2r1
Wait until the RKE2 node in the RKE2 cluster is reported as Ready in kubectl get nodes output
Import the new RKE2 cluster over Dashboard by using GLOBAL APPS/Cluster Management and pressing button Import Existing
Execute the offered reg. command on the node over ssh
Once the cluster is Added into Rancher and Active click on "3 vertical dots" for the cluster and select Edit Cluster

Result:
There are no fields present for performing kubernetes upgrade contrary to Ember - also other fields are missing if you compare with Ember UI screen below - there are only Environment variables and Labels sections present.
This is how it looks for the very same cluster in Vue UI:

and the similar Edit Cluster action in Ember UI:

Maybe related to https://github.com/rancher/dashboard/issues/3307 ~ imported RKE2 cluster from Vue doesn't belong to any Owner - but Ember is offering the k8s version to upgrade for the same cluster so I'm not sure

@vincent99 to look at this once backend and product indicate what to do here.

Imported clusters now go to the ember edit screen so this will work like it did before.  "Takeover" to more fully manage imported clusters that happen to be k3s/rke2 is not going into 2.6.0.

Fix works fine on master-head (861fb92). When I edit imported rke2 cluster I can change kubernetes version.


v1.3 backports 18-11-21

Backported PRs:

#6269
#6258

Signed-off by: Ian Vernon<EMAIL_ADDRESS>

This change is

test-me-please

test-docs-please

test-missed-k8s

Downloading VM timed out: https://jenkins.cilium.io/job/Cilium-PR-Ginkgo-Tests-Validated/8132/execution/node/70/log/

test-me-please

Similar timeout for the K8s tests:
https://jenkins.cilium.io/job/Cilium-PR-Ginkgo-Tests-K8s/1280/

test-missed-k8s

Keep hitting really low VM download speeds...
https://jenkins.cilium.io/job/Cilium-PR-Ginkgo-Tests-Validated/8137/

test-me-please

Long-lived connection test failed: https://jenkins.cilium.io/job/Cilium-PR-Ginkgo-Tests-K8s/1282/

test-missed-k8s


Don't understand how to install it

Hi,
I have a little problem installing your server, in fact, when i've launched the server, i can't play, or can't see it at http://<IP_ADDRESS>:5000. Should i build an index.html file to make run the game ? Can someone help me or explain me how to make it possible ? Thank's you very much !

Anyone to help me.. ?

Sorry for the delay, in order to connect to the server you will need to host an HTTP server with the packetAnalyzer extension on it, which will automatically connect to a server running on <IP_ADDRESS>:5000.

Hi, what is this packageAnalyzer extension I cannot find it online?
I have the same thing where I've built it on a public facing HTTP server and started the node process on port 500:
[root@replaced m.io]# npm run test;

><EMAIL_ADDRESS>test /var/www/replaced/httpdocs/test/m.io
> node tests/test.js

Started GameServer on port 5000

Now if I browse to the directory it fails to run
http://DOMAIN.COM:5000/test/m.io/

Read the packet analyzer script. You need a local HTTP server for it to work. Also, open a new issue instead of commenting on a closed one.

Open a new issue.


Mac / Installing QCustomPlot_PyQt5 error

When trying to install ‘QCustomPlot_PyQt5’ to my environment It’s always crashing with the error below:
installing with pip like this >  pip install QCustomPlot_PyQt5
Not sure why it’s looking for pyqt6 when installing QCustomPlot_PyQt5? I installed pyqt6 but same exact error.
I also tried compiling a version using the information on this github but it throws a pyqt6 error as well
(RobinoScanEnv) user@MacStudio QCustomPlot-PyQt % pip install QCustomPlot_PyQt5
Collecting QCustomPlot_PyQt5
  Using cached QCustomPlot_PyQt5-<IP_ADDRESS>.tar.gz (487 kB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... error
  error: subprocess-exited-with-error

  × Preparing metadata (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [19 lines of output]
      Querying qmake about your Qt installation...

      Using Python version 3.10.14.
      Traceback (most recent call last):
        File "/Users/user/Documents/Python/Project/RobinoScanEnv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 353, in <module>
          main()
        File "/Users/user/Documents/Python/Project/RobinoScanEnv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 335, in main
          json_out['return_val'] = hook(**hook_input['kwargs'])
        File "/Users/user/Documents/Python/Project/RobinoScanEnv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 152, in prepare_metadata_for_build_wheel
          whl_basename = backend.build_wheel(metadata_directory, config_settings)
        File "/private/var/folders/3z/random_path/T/pip-build-env-abc123/overlay/lib/python3.10/site-packages/sipbuild/api.py", line 46, in build_wheel
          project = AbstractProject.bootstrap('wheel',
        File "/private/var/folders/3z/random_path/T/pip-build-env-abc123/overlay/lib/python3.10/site-packages/sipbuild/abstract_project.py", line 92, in bootstrap
          project.setup(pyproject, tool, tool_description)
        File "/private/var/folders/3z/random_path/T/pip-build-env-abc123/overlay/lib/python3.10/site-packages/sipbuild/project.py", line 603, in setup
          self.update(tool)
        File "/private/var/folders/3z/random_path/T/pip-install-xyz789/qcustomplot-pyqt5_123456789/project.py", line 41, in update
          import PyQt6 as PyQt
      ModuleNotFoundError: No module named 'PyQt6'
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed

× Encountered error while generating package metadata.
╰─> See above for output.

note: This is an issue with the package mentioned above, not pip.
hint: See above for details.

It seems that your default qmake is for Qt6. As a result my script tries to build PyQt5 module using PyQt6. This script should be reworked in future.
For now, you can use sip-build/sip-wheel commands with the option --qmake _path_to_qmake5_.
Also there is some bug in sip resulting in error while cleaning build directory. However, wheel file should be created in local directory despite the error message.

I was able to compile the wheel and install it thanks very much!
However my program is throwing errors and crashes :(
objc[13251]: Class QMacAutoReleasePoolTracker is implemented in both /Users/35mm/.pyenv/versions/3.10.14/envs/RobinoScanEnv/lib/python3.10/site-packages/PyQt5/Qt5/lib/QtCore.framework/Versions/5/QtCore (0x1032b1230) and<EMAIL_ADDRESS>(0x1129e92e8). One of the two will be used. Which one is undefined. objc[13251]: Class QT_ROOT_LEVEL_POOL__THESE_OBJECTS_WILL_BE_RELEASED_WHEN_QAPP_GOES_OUT_OF_SCOPE is implemented in both /Users/35mm/.pyenv/versions/3.10.14/envs/RobinoScanEnv/lib/python3.10/site-packages/PyQt5/Qt5/lib/QtCore.framework/Versions/5/QtCore (0x1032b12a8) and<EMAIL_ADDRESS>(0x1129e9360). One of the two will be used. Which one is undefined. objc[13251]: Class KeyValueObserver is implemented in both /Users/35mm/.pyenv/versions/3.10.14/envs/RobinoScanEnv/lib/python3.10/site-packages/PyQt5/Qt5/lib/QtCore.framework/Versions/5/QtCore (0x1032b12d0) and<EMAIL_ADDRESS>(0x1129e9388). One of the two will be used. Which one is undefined. objc[13251]: Class RunLoopModeTracker is implemented in both /Users/35mm/.pyenv/versions/3.10.14/envs/RobinoScanEnv/lib/python3.10/site-packages/PyQt5/Qt5/lib/QtCore.framework/Versions/5/QtCore (0x1032b1320) and<EMAIL_ADDRESS>(0x1129e93d8). One of the two will be used. Which one is undefined. objc[13251]: Class QCocoaPageLayoutDelegate is implemented in both<EMAIL_ADDRESS>(0x10128d168) and /Users/35mm/.pyenv/versions/3.10.14/envs/RobinoScanEnv/lib/python3.10/site-packages/PyQt5/Qt5/lib/QtPrintSupport.framework/Versions/5/QtPrintSupport (0x167291178). One of the two will be used. Which one is undefined. objc[13251]: Class QCocoaPrintPanelDelegate is implemented in both<EMAIL_ADDRESS>(0x10128d1e0) and /Users/35mm/.pyenv/versions/3.10.14/envs/RobinoScanEnv/lib/python3.10/site-packages/PyQt5/Qt5/lib/QtPrintSupport.framework/Versions/5/QtPrintSupport (0x1672911f0). One of the two will be used. Which one is undefined. QWidget: Must construct a QApplication before a QWidget zsh: abort      /Users/35mm/.pyenv/versions/3.10.14/envs/RobinoScanEnv/bin/python

Regarding multiple versions of Qt5, I'm not sure if it is an error or just a warning. Seems you have a system Qt5 library and also the one distributed with PyQt5. Maybe one of them is not needed?
The last message is definitely an error: Must construct a QApplication before a QWidget. It could be something wrong with your code. You should create QApplication before other Qt widgets. Have a look at the example here.

Thanks very much for all the information and your help.
About my code, it runs fine on Windows with no 'Qapplication before other QT Widgets'  error but on Mac, the same exact code but with the custom compiled version of QCustomPlot -  it crashes with the error above.
Do you think it's still my code even if it runs fine on Windows?

I have no experience with Mac, so I can't say if something could be different here. However, in PyQt, as well as in Qt, QApplication should be created first. I'd suggest you to make sure that QApplication is created before (if it isn't) and see if it helps.
Also you have other errors about multiple Qt5 versions. It could be that these errors are somehow the reason of all the problems.


[core] Support only and skip on describeConformance (and other MUI describes)

The following now works
  describeConformance.only(<Alert onClose={() => {}} />, () => ({ ... }));

I was missing it when developing the new pickers test suites.

usually I don't have to skip the whole describe

I mostly use the only for sure


adds links to general program + workshops CFP

Adds links to pretalx general program and workshops call-for-papers

Looks good!
In the workshops registration link I would edit the dates a bit.
For example in English you don't use points in dates - 27. November 2023 - 14. January 2024. Correct is: 27 November 2023 - 14 January 2024.
Academic program submissions are not ready yet?

yes, academic will take a bit more time.


[Feature]: meteor-component-library css bundle is huge due to fonts

Package
@meteor/component-library
Package version
3.11.0
Link to minimal reproduction
https://stackblitz.com/edit/vitejs-vite-xmwwbk?file=src%2Fmain.js
Steps to reproduce

Create a vue + vite project
Install the meteor-component-library
Add a import<EMAIL_ADDRESS>Build the app

Actual behavior
The resulting css file is about ~4.5MB (~3.5MB gzipped) according to vite. Removing the inlined fonts will reduce the css bundle down to ~180KB (~25KB gzipped).
Expected behavior
Fonts aren't inlined as base64 within the same css file, but bundled separately to allow more selective import. Bundling 10 different fonts feels clumsy, and I'd like to be able to bundle, say, regular fonts only when I don't have bold or italic text.
System Info
No response
Any additional comments?
No response
Code of Conduct

[X] I have read and agree to follow Meteor's Code of Conduct

the attached PR is not merged, open it up again?

There's another PR that was merged, but is not released yet.


When I was setting up the app the Safari mobile in app browser made it nearly impossible to click the right scope for my project. The iPhone keyboard would not disappear in Vercel's drop-down. Not sure if there's a way you guys can fix this since it seems to be a UX issue with Vercel but maybe tell users that the fix is zooming out really far on the browser so that it renders appropriately!

Please give a detailed description of the issue you’re experiencing or the feedback you’d like to provide.
Feel free to attach any relevant screenshots or logs, and please keep the app version and device info in the issue!

App Version: 3.2.2		Device: iPhone 11
OS: iOS 17.2.1

Hey @SohamGovande, thanks for the feedback. This is a known issue and I have already informed the Vercel team. Their recent upgrade for personal accounts → team accounts seems to have also included some changes to this scope selector screen, so hopefully this issue is now fixed.


Clear jupyter notebook outputs

Every time we rerun a Jupyter notebook we get rather large git diffs because the cached outputs vary slightly. This is a little bit annoying to review and also bloats the repository size over time. Since the official documentation is now online, we do not need the rendered outputs here on GitHub anymore. So my suggestion would be to strip the notebooks of all outputs before pushing them. I had just a quick look into this article so I can't tell if it is helpful but maybe we can automatize this.

I suggest setting up a git pre-push hook for this
https://githooks.com/


Update renerocksai/telekasten.nvim

Repo URL:
https://github.com/renerocksai/telekasten.nvim
Checklist:

[x] The plugin is specifically built for Neovim, or if it's a colorscheme, it supports treesitter syntax.
[x] The lines end with a .. This is to conform to awesome-list linting and requirements.
[x] The title of the pull request is Add/Update/Remove `username/repo`  (notice the backticks around `username/repo`) when adding a new plugin.
[ ] The description doesn't mention that it's a Neovim plugin, it's obvious from the rest of the document. No mentions of the word plugin unless it's related to something else. No .. for Neovim.

NOTE: Noticed its description begins with A Neovim (lua) plugin for ... but this PR only updates the URL anyway.

[x] The description doesn't contain emojis.
[x] Neovim is spelled as Neovim (not nvim, NeoVim or neovim), Vim is spelled as Vim (capitalized), Lua is spelled as Lua (capitalized), Tree-sitter is spelled as Tree-sitter.
[x] Acronyms should be fully capitalized, for example LSP, TS, YAML, etc.

Thanks for the PR!


Update package.json

Update axios to 0.21.1 to resolve SSRF outlined here https://github.com/sendgrid/sendgrid-nodejs/issues/1217

Fixes
A short description of what this PR does.
Checklist

[x] I acknowledge that all my contributions will be made under the project's license
[ ] I have made a material change to the repo (functionality, testing, spelling, grammar)
[ ] I have read the Contribution Guidelines and my PR follows them
[ ] I have titled the PR appropriately
[ ] I have updated my branch with the main branch
[ ] I have added tests that prove my fix is effective or that my feature works
[ ] I have added the necessary documentation about the functionality in the appropriate .md file
[ ] I have added inline documentation to the code I modified

If you have questions, please file a support ticket, or create a GitHub Issue in this repository.

Closing in favor of #1239 due to it also updating the license year.

Closing in favor of #1239 due to it also updating the license year.


Add dynamic block for log_publishing_options

what
Module doesn't work with older ES versions (tested with 1.5 and 2.3)
log_publishing_options is not supported in older versions
Error creating ElasticSearch domain: InvalidTypeException: Application Logs option cannot be specified for ElasticSearch version : 1.5 & 2.3
references

https://github.com/cloudposse/terraform-aws-elasticsearch/issues/102

@JoostSaanen could you fix the auto format issues. Normally the bot user would be able to do this but because the fork doesnt have give the cloudpossebot access, it needs to be done manually. I believe you can do it using
make init && make readme

/test all

@JoostSaanen please @nitrocode's comment regarding rebuilding the readme. We'll need that to be done to move this PR forward. Thank you!

Ouch, missed this one. I'll have a look

/test all

@JoostSaanen Could you pls rebase the lastest changes from the master branch?
There are a few fixes for tests.
Thanks.

@cloudposse-mergebot  reopen please. this is an issue for me. This fix works


Allow for a flag to ignore Hub related failures and not fail the build

@vjkoskela brought up a pull request here:  https://github.com/blackducksoftware/hub-maven-plugin/pull/4
However this should be expanded to handle all potential failure cases for:

createHubOutput
deployhHub
checkPolicy (coming soon)

The latest release, 1.0.5, has the property 'hub.ignore.failure' which should have the capabilities @vjkoskela is after. If not, please open a new issue and we'll address it.


[NTR/gene] obsolete genetic skin disease

Preferred gene-related syndrome label
It seems to be that genodermatosis (lay synonym genetic skin disease) is a good term
@ahamosh  -- thoughts?
The term was made obsolete, but I think we want to keep it!
obsolete genetic skin disease
obsolete genetic skin disease

Why would you obsolete genodermatosis?

at one point we decided we didn't want to include genetic grouping classes because it was too difficult to keep the classifications current and up to date. But it sounds like we do want to have these terms (we discussed on the curation call and we all agreed to add these terms back, as needed).
@pnrobinson plans to work on this ticket. Note, we should not reinstate an obsoleted term, rather we should create a new term with a new ID:
https://mondo.readthedocs.io/en/latest/editors-guide/merging-and-obsoleting/#restoring-an-obsolete-ontology-term

@nicolevasilevsky @sabrinatoro can we add this term? If we could do a session together maybe you could show me how to make a PR then I could do things like this myself!

Hi Peter, yes, we can add it. I can go ahead and take care of it and we'd be happy to have an editing session with you to show you how to make PRs. We're meant to have a medical experts curation call on Thursday, we can plan to do it then.

I agree with un-obsoleting (is that a word) genodermatosis.  I was supposed to be in Cape Town this week, but my dad got sick, so I am in town.  I might be able to make the curation call on Thursday.