Addressing several routing issues.

#639
Several issues with routing.
Asp.Net Core vs Owin/WebAPI
Resources:
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/routing
https://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/routing
https://docs.microsoft.com/en-us/aspnet/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2
https://docs.microsoft.com/en-us/aspnet/web-api/overview/web-api-routing-and-actions/routing-in-aspnet-web-api
The majority of changes are within GetHttpPaths & ExpandOptionalHttpPathParameters.
The logic used to be:
             .....
            else if (routePrefixAttribute != null && routeAttributeOnClass != null)
                httpPaths.Add(routePrefixAttribute.Prefix + "/" + routeAttributeOnClass.Template);
            // TODO: Check if this is correct
            else if (routePrefixAttribute != null && (
                (method.GetParameters().Length == 0 && method.Name == "Get") ||
                method.Name == "Post" ||
                method.Name == "Put" ||
                method.Name == "Delete"))
            {
                httpPaths.Add(routePrefixAttribute.Prefix);
            }
            else if (routeAttributeOnClass != null)
                httpPaths.Add(routeAttributeOnClass.Template);
            else
                httpPaths.Add(Settings.DefaultUrlTemplate ?? string.Empty);

The Settings.DefaultUrlTemplate should not be considered when a RoutePrefix is present as was in PersonsController. I was unable to find any routing rules that governed the following:
else if (routePrefixAttribute != null && (
                (method.GetParameters().Length == 0 && method.Name == "Get") ||
                method.Name == "Post" ||
                method.Name == "Put" ||
                method.Name == "Delete"))

I am allowed to have a RoutePrefix with a GET method which has parameters. That's completely valid. The last else condition should allow for the MVC style of routing with {controller}/{action}/{id?}.
Also the default route convention in both Core and Web API has the {id} as optional so I changed the DefaultUrlTemplate to reflect that.
Lastly, the fix for handling RoutePrefix:
I inverted the logic:
.Select(p =>
    "/" + p
    .Replace("[", "{")
    .Replace("]", "}")
    .Replace("{controller}", controllerName)
    .Replace("{action}", actionName)
    .Trim('/'))
.SelectMany(p => ExpandOptionalHttpPathParameters(p, method))

to first expand the optional paths.
.SelectMany(p => ExpandOptionalHttpPathParameters(p, method))
.Select(p =>
    "/" + p
    .Replace("[", "{")
    .Replace("]", "}")
    .Replace("{controller}", controllerName)
    .Replace("{action}", actionName)
    .Trim('/'))

Before, if ExpandOptionalHttpPathParameters returned values, it would overwrite the the prior Select "/" + p.Replace(...) value.
Then within ExpandOptionalHttpPathParameters it no longer does two sequential recursive operations per-optional-route-segment (ie. ?}):
if (segment.EndsWith("?}"))
                {
                    // Only expand if optional parameter is available in action method
                    if (method.GetParameters().Any(p => segment.StartsWith("{" + p.Name + ":") || segment.StartsWith("{" + p.Name + "?")))
                    {
                        foreach (var p in ExpandOptionalHttpPathParameters(string.Join("/", segments.Take(i).Concat(new[] { segment.Replace("?", "") }).Concat(segments.Skip(i + 1))), method))
                            yield return p;
                    }
                    else
                    {
                        foreach (var p in ExpandOptionalHttpPathParameters(string.Join("/", segments.Take(i).Concat(segments.Skip(i + 1))), method))
                            yield return p;
                    }

                    yield break;
                }

Before, you would get back multiple paths for a single endpoint with a RoutePrefix. Now you get the correct amount.

Looks like a big improvement. Thank you. I will test this with my projects...

Thanks bud. I'm testing it further as well with our SaaS product's API. Will keep you posted if anything arises. Unfortunately our product is still on Owin/WebAPI so I won't be able to examine in depth with Core just yet.

Do you see breaking changes in .NET Core? It is important to different between them in some places... I'll have a look...

Not that I can think of. What I'd like to do is have a complete suite of unit tests that encapsulate all WebAPI routing possibilities and a second suite for all of Asp.net Core. When I get some time I'll get started on this.

That would be awesome...
Just FYI: The .NET Core projects are compiled against the NSwag NuGet packages (they have to be published first). You cannot directly change the code and rerun the unit tests... You have to switch to project references first. I have to improve the tooling here and migrate all project to .NET Standard 1.0 (its already supported but not yet converted).

Oo, I definitely was not aware of that. What's the reason for that?

With the previous tooling (project.json) you could not reference a .NET PCL (old version of .NET Standard 1.0) from a .NET Core project. Now its possible, but I need to fix the build scripts so that the packages are correctly built.


Block Game Additon issue

PR Description 📜
Please include summary related to the issue you have fixed and describe your PR in brief over here by specifying the issue number on which you were working below
Fixes #1706
Can u please review the code the game is no begin added to the website i tried a lot but was not able to solve what is the issue?? Thank you

Mark the task you have completed ✅

[ ] I follow CONTRIBUTING GUIDELINE & CODE OF CONDUCT of this project.
[ ] I have performed a self-review of my own code or work.
[ ] I have commented my code, particularly in hard-to-understand areas.
[ ] My changes generates no new warnings.
[ ] I have followed proper naming convention showed in CONTRIBUTING GUIDELINE
[ ] I have added screenshot for website preview in assets/images
[ ] I have added entries for my game in main README.md
[ ] I have added README.md in my folder
[ ] I have added working video of the game in README.md (optional)
[ ] I have specified the respective issue number for which I have requested the new game.

Add your screenshots(Optional) 📸

Thank you soo much for contributing to our repository 💗

Thank you @lmalkam ,for creating the PR and contributing to our GameZone 💗
Review team will review the PR and will reach out to you soon! 😇
Make sure that you have marked all the tasks that you are done with ✅.
Thank you for your patience! 😀

Hello @lmalkam, Don't change the JSON file.
I hope you would rectify it very soon.

Thank you  @lmalkam , for your valuable time and contribution in our GameZone 💗.
It’s our GameZone, so Let’s build this GameZone altogether !!🤝
Hoping to see you soon with another PR again 😇
Wishing you all the best for your journey into Open Source🚀


Eliminate Npgsql value boxing within codegen

Requires https://github.com/JasperFx/weasel/pull/136

@Hawxy I got this with a local rebase


Duplicate species hexanoate/hexanoic acid

Current behavior:
While dealing with #689, I found that the model has two species that correspond to the same metabolite: hexanoate MAM03684c and hexanoic acid MAM02120c. I have checked a couple other short- or medium-chained fatty acids, they do not seem to have duplicates. MAM03684c likely comes from Recon3D, and the other from elsewhere.
Expected feature/value/output:
Proposed curation: "merge" species by retaining hexanoic acid MAM02120c for consistency with other metabolite names, e.g. octanoic acid MAM02642c.
Identify identical reactions between the two, and remove the one for hexanoate. GPRs are likely to be the same for duplicate reactions, but needs checking as well. In case of unique reactions, swap hexanoate MAM03684c for hexanoic acid MAM02120c.
Any other tips/suggestions? Or good to go?

makes sense - go ahead please

fixed in #717


Time unit mismatch in File.prototype.getSignedPolicy

In the documentation expiration is in seconds, but in code, it's expected to be in milliseconds.
The given example use seconds.

Thanks for reporting!


allow build with system gtest

It seems the embedded copy of googletest is built if tests are enabled, please allow using gtest from the system.

We was convinced that gtest are natural exception to regular dependency handling practices. Unfortunately it tend to change API in non-portable ways. And we faced binary incompatibilities between subsequent minor releases when tried to use it as shared library. Google itself recommends embedding in https://github.com/google/googletest/tree/master/googletest/README.md. We can provide build option which would try to utilize system-provided gtest, but this would became a moving target.

Having an option to use a system installed one is good enough, at least for my use-case packaging this for Debian/Ubuntu Linux

@tjaalton : #1288 adds "blind" (no checks of the version, no support of gtest from custom location) build against system installed gtest via -DUSE_SYSTEM_GTEST=ON. Would that be enough as a short term solution? PR is for master branch, may not apply clean against 18.4.1.


High level comparison of kpt hydration with kustomize

The intention here is to do high level comparison of the kpt hydration features with kustomize. It will help us identify the gaps as well as help us understand in which scenario one is better than the other.

I think the FAQ is a first stab of addressing this.  I am going to wait for customer questions to see what else people want to know about.


Error connecting to transcription host. Please check your settings.

I encountered this error repeatedly when trying to transcribe my .m4a audio files. I saw the note you put on the README about server downtime, is this an error resulting in some of those issues?
Thanks for everything you do :)

I have the same issue.


Content-related changes for 2024 update

[ ] Update probable mistakes file with latest info
[ ] Update mapping file, ensuring latest correspondence between eBird and India checklist names (Create new SoIB_mapping_2024 from existing SoIB_mapping_2022)
[ ] Latest taxonomy changes wherever applicable in the code

Taxonomy updates in input data and scripts commited https://github.com/stateofindiasbirds/soib_2023/commit/f7c774a9cc3238b48b86cb7f1c02cd7243b8e23a

SoIB_mapping_2023.csv still has some columns yet to be mapped:

[ ] Map the following columns: BLI.Common.Name, BLI.Scientific.Name, IUCN.Category, WPA.Schedule, CITES.Appendix, CMS.Appendix

Also, this CSV will be regularly updated to reflect changes, e.g., updates to IUCN status 57ed26b.

[ ] 00_plot_functions.R needs significant update to incorporate one new year in graphs (2022, 2023 coded manually). This will stabilise once CAT reaches 10 years.
[ ] 20_website_database.R may or may not need updates in file/folder naming (L 97, 98, 102). TBD.
[ ]  20_website_SoIB_main.R: proprange2022/Range Coverage columns and BLI name columns to be updated. 2015\u20132023 in may or may not need update (TBD).
[ ] Future-year projected value columns (including extra.years object), and High Priority breakup comparisons, in resolve_trends_and_occupancy.R and classify_and_summarise.R to be updated as appropriate (TBD).
[ ] Code for fixing to certain version of results (fix_to_printed_results.R) to be checked/updated before resolving and classifying.

Ashwin updated all probable mistakes in 5dbe8e2c4337d86e79cf965e914670ac7b31251c
Now ready for all runs


Update to PROJ release 6.1.0

https://github.com/OSGeo/proj.4/milestone/15
May 1, 2019

Looks like PROJ 6.1.0 release is delayed to May 15th.

Pipelines have been updated and the next release will include 6.1.0.


Jakarta XML Binding 3.0 Release Tasks

The release has been approved by the EMO, please complete:

[x] promote api staging release promotes the specification api jars to maven central. An example release job script can be found here https://wiki.eclipse.org/MavenReleaseScript.
[x]  go through the merged jakarta.ee specification website page to verify all the links are valid.
[x]  approve the compatibility request.
[x]   The compatible implementation project/vendor MUST send an email to<EMAIL_ADDRESS>for approval of the compatible implementation for trademark usage.
[x]  merge any final release branch as appropriate for the branch management for the project.

done already


Question regarding inference

Hello Mohit,
I'm trying to run PERACT in pybullet with similar environments as RLBench for manipulation. I have few questions regarding this:

I'm confused as to how to set the episode_length parameter during training. In your repo, all the RLBench episodes were atleast 100+ timesteps and in your colab notebook, the episode_length parameter was configured as 10 and in your code, it was 25. How should this be decided?

During inference, what should the time_step input be that should be given with the input observation. Suppose the training of the task had 100 timesteps and 4 key points at every 25th timestep. Now if we want to run PERACT during inference on this task, how should we give the time_steps for the observations? Since PERACT predicts the keypoint poses, should our input time_steps be 0,1,2,3 or 0,25,50,75?

Can you please elaborate on this.
Thank you

Hi Mohit, yeah it is related to the same issue. So essentially, the time steps during inference should then be 0,1,2,..
Thank you for the clarifications! I'll try them out.
Also I have another question, the franka panda arm renders in complete black color in pybullet instead of its usual white color and texture (picture attached) . This is an issue with the pybullet.  All my training and inference data would be having this black colored arm. Do you think this will impact the performance of peract?

I don't think it matters at all. As long as it's consistently the same color across train and test.

Great! Thank you for the clarifications Mohit!


Please support --refresh-stage-encryption in SingleDB mode.

Is your feature request related to a problem? Please describe.
Refresh stage encryption is an option in the main CLI but not in SingleDB CLI.
Describe the solution you'd like
Please add the option   --refresh-stage-encryption       Additionally refresh stage encryption parameters for existing external stages to singledb mode.
Describe alternatives you've considered
I will drop and recreate the resources for now I guess.
Additional context
I have several stages that need encryption turned on.
thanks

@josdotso , added --refresh-stage-encryption and --refresh-secrets in 0.25.2. Please give it a try.

Thank you!


Decimals not being humanized for BigDecimal numbers

It seems there is a problem generating the humanized version of BigDecimal decimal part.
-> % irb
irb(main):001:0> require 'humanize'
=> true
irb(main):002:0> 123.45.humanize
=> "one hundred and twenty-three point four five"
irb(main):003:0> BigDecimal.new("123.45")
=> 0.12345e3
irb(main):004:0> BigDecimal.new("123.45").humanize
=> "one hundred and twenty-three"

I haven't checked it yet. But, if you know how to fix it, pull request is very much appreciated.

For the record, I was the one who added BigDecimal.

You're welcome, @skuark. Thanks for reporting the issue.


Change message under 'Recent Activity' when no logs to show

Purpose
Change the description of an empty 'Recent Activity' widget to be consistent with the fact that there is no longer a watch button/feature.
Changes
Change description of empty 'Recent Activity' widget from "No logs to show. Click the watch icon on a project's page to get activity updates here." to "No logs to show."
Ticket
[OSF-6022]

Punchlist

[ ] remove trailing letter—https://github.com/CenterForOpenScience/osf.io/pull/5510#discussion_r61082613

Whoops, sorry about that trailing 'g'! It has been resolved!

👍
:-)


Issue#3076

Have you read the Contributing Guidelines on Pull Requests?
Yes, I have read the contributing guidelines on pull requests
Description
Program to check whether the given number by the user are Pythagorean triplet or not.
Checklist

[Yes ] I've read the contribution guidelines.
[Yes ] I've checked the issue list before deciding what to submit.
[Yes ] I've edited the README.md and link to my code.

Related Issues or Pull Requests
issue no. 3076

@palakgoel123 Issue was not assigned to you. Please be sure that you are already assigned on that issue before start working on any PR

@palakgoel123 Sorry for inconvenience caused.


scheduler: fix not setSchedPendingUsage condition

这个 PR 实现什么功能/修复什么问题:
是否需要 backport 到之前的 release 分支:

2.10.0

/area scheduler

Codecov Report

:exclamation: No coverage uploaded for pull request base (release/2.11@35b4454). Click here to learn what that means.
The diff coverage is n/a.

@@              Coverage Diff               @@
##             release/2.11   #3145   +/-   ##
==============================================
  Coverage                ?   7.15%
==============================================
  Files                   ?     476
  Lines                   ?   76846
  Branches                ?       0
==============================================
  Hits                    ?    5500
  Misses                  ?   70882
  Partials                ?     464

Flag
Coverage Δ

#aFlag
7.15% <ø> (?)

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 35b4454...772981f. Read the comment docs.


use cuid for createInbox

The createInbox implementation is a bit inefficient both in terms of size and uniqueness, I would suggest a much better implementation such as https://github.com/ericelliott/cuid.

Thanks I will take a look..

I'm not sure but I believe, especially depending on the javascript engine, using only Math.random for unique id generation makes it not entirely unlikely to get collisions.

True depends on entropy pool underlying. Thanks again for all feedback on Node.js client. Will get these issues taken care of..

FYI, working on nuid() version for Node.js. But did benchmark current implementation, which I agree is not too great, against cuid.
~/Development/go/src/github.com/nats-io/node-nats/benchmark> node -v
v5.7.0

~/Development/go/src/github.com/nats-io/node-nats/benchmark> node cuid_perf.js
cuid() Performance Test
130301/sec

~/Development/go/src/github.com/nats-io/node-nats/benchmark> node inbox_perf.js
createInbox() Performance Test
205782/sec

@derekcollison: One faster way would be to have a pool of ids. Since you know when the inbox is no longer used old ids can be re-used.

I think nuid approach will work well and avoid collisions with other clients vs reuse pool.

@derekcollison: :+1:


Add flags exclusive feature

See https://github.com/spf13/cobra/blob/master/user_guide.md#flag-groups
But this feature has not yet been released. It will be part of Cobra v1.5.0 which should be around June 2022.

fix in c58f163


Frontend: Mobile - Input fields turn white

System information
OS & Version: Android
Browser & Version: Chrome Android
Expected behavior
The fields stay in the same color.
Actual behavior
On mobile, when writing a value to the input field, the the color of the field turns white.

Will this be fixed if #962 gets resolved?

Yes, i believe this is a duplicate issue.


Add armv7 support

Fix the sizing of libc::timespec for arm. Now it compiles on raspberry pi.

Great, thanks


Drop down popup not moving with Modal sheet

Screenshot
Screenshot

First clicked on the text field then clicked a drop down (Service type here), Modal dragged to bottom along with keyboard close, but the pop not moving with that

can you add your output of flutter doctor by running flutter doctor -v

[✓] Flutter (Channel stable, 2.0.5, on Linux, locale en_IN)
• Flutter version 2.0.5 at /usr/local/flutter
• Framework revision adc687823a (6 weeks ago), 2021-04-16 09:40:20 -0700
• Engine revision b09f014e96
• Dart version 2.12.3
[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
• Android SDK at /home/vilsad/Android/Sdk
• Platform android-30, build-tools 30.0.3
• Java binary at: /usr/bin/java
• Java version OpenJDK Runtime Environment (build 1.8.0_292-8u292-b10-0ubuntu1~18.04-b10)
• All Android licenses accepted.
[✓] Chrome - develop for the web
• Chrome at google-chrome
[!] Android Studio (not installed)
• Android Studio not found; download from https://developer.android.com/studio/index.html
(or visit https://flutter.dev/docs/get-started/install/linux#android-setup for detailed instructions).
[✓] Connected device (2 available)
• SM J500F (mobile) • fc28deb9 • android-arm    • Android 6.0.1 (API 23)
• Chrome (web)      • chrome   • web-javascript • Google Chrome 90.0.4430.93

Hi @sunilm316
Can you please provide your flutter doctor -v and a minimal complete reproducible code sample, and expected results vs actual results
Thank you

Without additional information, we are unfortunately not sure how to resolve this issue.
We are therefore reluctantly going to close this bug for now.
Please don't hesitate to comment on the bug if you have any more information for us; we will reopen it right away!
Thanks for your contribution.
Could everyone who still has this problem please file a new issue with the exact description of what happens, logs, and the output of flutter doctor -v.
All system setups can be slightly different, so it's always better to open new issues and reference related issues.


[Suggestion]: Option to disable all chat relay functionality, only allow linking

Explain your idea
Use case:
I want whitelist based on discord role, but I don't want to have chat relay in discord
Problem:
You cannot disable chat relay functionality
Setting invalid channel ID breaks the mod
Workaround:
Use hidden channel for chat relay
Possible solutions:
Config key to disable chat relay
Use another config option ("disabled") in [advanced] section to disable specific messages individually
If this is platform-dependant, which platform is this about?
No response

I'd still like to see this functionality :eyes:

I don't use this mod as of right now but if I plan to use it in future I'd want to have this option


mp-metrics

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/Aries-cdi-pr/36/


circumvent escapes through potential throw calls

Problem
After #12 , we will escape all the arguments of a bulit-in call that may throw, using "effect-freeness" checks computed by inlinear.
#12 is necessary to fix #6, e.g. objects can certainly escape as an exception.
julia> analyze_escapes((Any,)) do a
           getfield(a, :may_not_field)
       end
var"#11#12"(_2::Any →)
1 ↑ 1 ─ %1 = Main.getfield(_2, :may_not_field)::Any
2 ◌ └──      return %1

But now we end up with much looser analysis accuracy.
The "effect-freeness" check can fail to prove no-throw for very basic builtins like getfield.
E.g. in the following case, getfield(::RefValue{String}, :x) can't be proven to be no-throw because of the datatype_min_ninitialized check:
julia> analyze_escapes() do
           r = Ref("Hi")
           r[]
       end
var"#13#14"(_2::Base.RefValue{String} ↓)
1 → 1 ─ %1 = %new(Base.RefValue{String}, "Hi")::Base.RefValue{String}
2 ↑ │   %2 = Base.getfield(%1, :x)::String # escape !
3 ◌ └──      return %2

And more importantly, most array operations (i.e. arrayref/arrayset) will inevitably escape since there is implicit BoundError check but inference doesn't analyze array shape in general:
julia> analyze_escapes() do
           a = [0,1,2]
           a[2]
       end
var"#15#16"(_2::Vector{Int64} ↓)
 1 → 1 ─ %1  = Core.tuple(0, 1, 2)::Core.Const((0, 1, 2))
 2 → │   %2  = $(Expr(:foreigncall, :(:jl_alloc_array_1d), Vector{Int64}, svec(Any, Int64), 0, :(:ccall), Vector{Int64}, 3, 3))::Vector{Int64}
 3 ◌ │         Base.arraysize(%2, 1)::Int64
 4 ◌ └──       goto #7 if not true
 5 → 2 ┄ %5  = φ (#1 => 1, #6 => %17)::Int64
 6 ◌ │   %6  = φ (#1 => 1, #6 => %18)::Int64
 7 → │   %7  = φ (#1 => 1, #6 => %10)::Int64
 8 → │   %8  = Base.getfield(%1, %5, true)::Int64
 9 ◌ │         Base.arrayset(false, %2, %8, %7)::Vector{Int64}
10 → │   %10 = Base.add_int(%7, 1)::Int64
11 ◌ │   %11 = (%6 === 3)::Bool
12 ◌ └──       goto #4 if not %11
13 ◌ 3 ─       Base.nothing::Nothing
14 ◌ └──       goto #5
15 → 4 ─ %15 = Base.add_int(%6, 1)::Int64
16 ◌ └──       goto #5
17 → 5 ┄ %17 = φ (#4 => %15)::Int64
18 ◌ │   %18 = φ (#4 => %15)::Int64
19 ◌ │   %19 = φ (#3 => true, #4 => false)::Bool
20 ◌ │   %20 = Base.not_int(%19)::Bool
21 ◌ └──       goto #7 if not %20
22 ◌ 6 ─       goto #2
23 ◌ 7 ┄       goto #8
24 ↑ 8 ─ %24 = Base.arrayref(true, %2, 2)::Int64  # escape !
25 ◌ └──       return %24

Solution ideas
There are mainly two solutions:

we can improve inference and improve "effect-freeness" check – e.g. introduce new lattice to recognize uninitialized fields, introduce shape analysis
copy an thrown object from stack to heap on exception when it's valid

The first option will improve inference in general and benefit other optimizations,
but it needs much more works; especially introducing lattice element is hard under the current lattice implementation and we will rather need lattice overhaul before that.
So the second one will be the best option for us especially within this GSoC term.
The conditions when we can "copy from stack to heap on exception"
After the discussion with @vtjnash, I think we need to prove that two conditions hold in order to circumvent no-throw checks:

there is no overlap of lifetimes of an thrown object and exception object
the object that may throw doesn't have a finalizer

Condition 1. No lifetime overlap
The first condition is necessary because otherwise "the copy on exception" would be invalid:
local o = make_o()
try
    setfield!(o, maybe_undefined, "foo") # we can't copy `o` from stack to heap here because there is an overlap of `o` and `err`
catch err
    o.x = "bar"
    print(err.x)
end

In order to analyze it, I think the simple lexical (non-interprocedural) analysis would be enough because an exception can only be handled within try/catch clause.
Condition 2. No finalizer
If the object in question has the finalizer, then we shouldn't allocate it on the stack.
This is because the finalizer can't be safely hooked when it can refer to the stack, which may have been reused or abandoned:
local o = open_o() # we shouldn't allocate `o` in the stack here
finalize(o) do o
    close(o)
end
checkbounds(a, i) # may throw
return read(o) # we can call `finalize(o)` here

To circumvent this limitation, we can think of 1.) calling all finalizers of local variables on the stack on exception, 2.) unwinding the stack and call finalizers.
But they would fairly complicate the implementation.
And in the first place, the benefit of stack allocation would be negligible in the presence of the cost of the finalizer call.

Let me try to understand this. The current check is strict because we have to prevent escapes via throw, but this causes much looser analysis. To gain an accurate analysis and the ability to prevent escapes via throw. We do not use the effect-free check as it is too strict, instead, we modify the runtime to do a stack-to-heap promotion if we find an NoEscape object (therefore stack allocated) is thrown.

We do not use the effect-free check as it is too strict

No, we will still use the effect-freeness check, but in a case when it judges a call may throw, we will make additional efforts to allocate objects on stack even when it can throw.

instead, we modify the runtime to do a stack-to-heap promotion if we find a NoEscape object (therefore stack allocated) is thrown.

The conditions when we can "copy from stack to heap on exception" explains when we can allocate objects on stack even when it may throw.

No, we will still use the effect-freeness check, but in a case when it judges a call may throw, we will make additional efforts to allocate objects on stack even when it can throw.

that is, we allocate the object on stack even though it is analyzed as an escape within a call that may throw?

When it is valid, yes.
We will make the following additional checks when inlinear can't prove a call is no-throw:

there is no overlap of lifetimes of an thrown object and exception object
the object that may throw doesn't have a finalizer


Activating containers in batch when launching a service

When adding multiple Redis Sentinel containers at once, it is recommended to wait for other Sentinels to already know about the first one before adding the next. This is important to guarantee that majority is only achieved in one side of the network partition.
Would it be possible to schedule a service activation similar to what is currently possible when upgrading? This would allow launching a single Sentinel container (batch=1) every X seconds (e.g. interval=30s) until the scale had been fulfilled.

Instead of being catalog specific, I think this is a general enhancement request for when launching services. When it gets added to the cattle side, we could implement a rancher-compose method, which could then be used for catalog entries.

With the release of Rancher 2.0, development on v1.6 is only limited to critical bug fixes and security patches.


Faster init with LoRA

Purpose: accelerate peft model initialisation with LoRA config.
see issue description in https://github.com/huggingface/peft/issues/871
The idea is to avoid costly calls of weight initialisation functions in CPU, when those weights are not necessary and will be replaced by the original weights anyways.
This PR initially changes only init for Linear layers.
potential further improvements:

apply to Embedding and Conv2d layers
apply to compressed layer types, like Linear4bit, Linear8bit
init LoRA modules (A, B) right on target device, not CPU

The docs for this PR live here. All of your documentation changes will be reflected on that endpoint.

I wonder if we can use skip_init or something else from PyTorch instead of monkey patching a hard-coded list of initialization methods.

well, I borrowed this idea from GPTQ code. But I support your idea to avoid monkey patching.
Let me try this improvement - I will write back soon.

@BenjaminBossan !
skip_init() turned out not very convenient to apply from inside of a subclass. However, looking at its source code, I got an idea to use meta device. It works much faster than my original code, since meta tensors are faster than empty cpu tensors. Thanks for the suggestion!
To accomodate this change I also:
- made self.to(self.weight.device) in LoraLayer.update_layer() conditional, to avoid moving loras to 'meta' device
- removed  self.weight.requires_grad = False in Linear.__init__() for it is not relevant.   # lora.py:850
Now with Llama-2-7B application of Guanaco LoRA adapter takes 1.5 seconds vs 103 seconds originally.

@poedator Great, thanks for experimenting. This looks like a very nice speedup indeed. I'm not 100% sure if we can remove all of that code, but let's see. Could you please run make style on your code? Then the code quality checks should pass and the unit tests should run.

I added couple more commits to pass device param to LoRA layer constructors to initialize LoRA adapters right at the target device. Apparently I need to do some more local testing ...
As a matter of introduction: I am a junior researcher @ Yandex, 2d name in this paper: https://arxiv.org/abs/2306.03078. We use HF packages daily and want them to get even better ).

Thanks for applying the fixes and providing more context.
Unfortunately, the tests are failing right now. The main reason seems to be that the code path when init_lora_weights=False is not properly implemented yet, resulting in the weights staying on meta device. This needs to be fixed and it might require a bit of fiddling, as the logic is a bit all over the place. It would probably help if we cleaned up the initialization logic, but that requires some non-trivial refactoring.
To proceed, would you be up for fixing the failing tests for the code path I mentioned?

@BenjaminBossan
I updated the PR to catch up with #807 and also limited my changes to just the Linear layer init to prove the concept.
Some of the tests with init_lora_weights=False are also failing locally (test_merge_layers_09 and 10). This is puzzling because they do not seem to involve LoRA for Linear. Nevertheless I want to see this PR coming thru, so let me try to fix it with your guidance.
pls be more specific on the failing tests. do you want me to update the tests code or to change some LoRA code?

Thanks for the updates and the further investigation. Regarding the failing tests, the idea is that all existing tests should pass after the change. There could be tests that need adjustment, but I'm not aware of any. Anyway, for me, all the tests passed. As you can see, the CI passes too. So not sure why they failed for you.
I think the strategy you suggested, which is to start with one layer type first, is valid. We can do that and once that has proven to work well, we can tackle the others.
I did some further digging into the code and IIUC, I think the weight initialization happening in these two lines is completely unnecessary:
https://github.com/huggingface/peft/blob/0b2f950cc212dd8acda983760c0aba2bf4872a00/src/peft/tuners/lora/layer.py#L142
https://github.com/huggingface/peft/blob/0b2f950cc212dd8acda983760c0aba2bf4872a00/src/peft/tuners/lora/layer.py#L151
It creates a randomly initialized self.weight (and possibly self.bias) on the lora layer, which is then initialized with kaiming init twice! And later, it is replaced by the original weight of the target layer, so the whole initialization was unnecessary:
https://github.com/huggingface/peft/blob/0b2f950cc212dd8acda983760c0aba2bf4872a00/src/peft/tuners/lora/model.py#L213
Therefore, I think this step could be completely skipped. Since we're talking about the full sized weight here, not the smaller LoRA weights, this could take quite some time. The fix you proposed would create that weight on the meta device, but I wonder if we can rewrite the code to completely skip the initialization instead. If you want to explore that, feel free to do so, otherwise I'll take a look at it later. If you have some benchmark script to test the initialization speed, please share it.

Also I may try to pass device argument to LoRAs inits so they are created on Cuda where they belong (still faster). But that may be better left to a separate PR.

Yes, that's indeed best left for a separate PR.

@poedator I attempted to remove the redundant initializations completely in #887. If you have time to test potential speedups of that branch, it would be great.

@poedator I attempted to remove the redundant initializations completely in #887. If you have time to test potential speedups of that branch, it would be great.

Thanks for the initiative. Let me test #887 later today.

Thanks for providing the script @poedator. Could you please paste your measurements for reference? Unfortunately, I still haven't gotten access to Llama 2 (really not sure why it's still pending), so I can't test that model. For the others, I got:
# main, x3
test 1 with model bert-base took  0.186 sec.
test 2 with model bloomz-1b7 took 3.740 sec.
test 1 with model bert-base took  0.208 sec.
test 2 with model bloomz-1b7 took 3.889 sec.
test 1 with model bert-base took  0.187 sec.
test 2 with model bloomz-1b7 took 3.762 sec.

# PR 887, x3
test 1 with model bert-base took  0.019 sec.
test 2 with model bloomz-1b7 took 0.057 sec.
test 1 with model bert-base took  0.019 sec.
test 2 with model bloomz-1b7 took 0.030 sec.
test 1 with model bert-base took  0.019 sec.
test 2 with model bloomz-1b7 took 0.029 sec.

So this looks like a very decent speed up, ~10x, although in practice a lot of time is spent on loading the model in the first place, so overall clock time is only 11 vs 7 sec.

let me know if you prefer to proceed with #887 or with this PR.

My impression is that it would be even better not to initialize the weights at all instead of initializing them on meta device. Having useless inits is just causing confusion. The main advantage with initializing with meta is that the code changes are smaller, so they're less likely to accidentally break something. But from what I can tell, removing the inits should also not break anything.
@younesbelkada @pacman100 Do you have an opinion on that? How should we proceed?

Could you please paste your measurements for reference?
my results were at the top of the gist with code
let me also copy them here:

Switched to branch 'pr887'       # PR #887 by Benjamin Bossan
test 1 with model bert-base took 0.048 sec.
test 2 with model bloomz-1b7 took 0.607 sec.
test 3 with model Llama2-7b took 5.863 sec.

Switched to branch 'fast_init'   # PR #872 by poedator@
test 1 with model bert-base took 0.063 sec.       ~3x
test 2 with model bloomz-1b7 took 0.528 sec.      ~7x
test 3 with model Llama2-7b took 5.618 sec.       ~15x

Switched to branch 'main'         # main version, commit 85013987aa82aa1af3da1236b6902556ce3e483e
test 1 with model bert-base took 0.224 sec.
test 2 with model bloomz-1b7 took 3.842 sec.
test 3 with model Llama2-7b took 76.174 sec.  <---- terribly slow (vs 7 sec for loading whole 7B model)

tested on fast machine with A100 and 16 kernels.
all timing is net of loading time, only get_peft_model()

The current way of proceeding looks great IMO as the code change is quite minimal for a nice gain, also I think meta device has been introduced in torch>=1.13 which is the current min requirement for PEFT: https://github.com/huggingface/peft/blob/main/setup.py#L45

Thank you @poedator and @BenjaminBossan for making the LoRA init super fast  🚀. I really like both approaches, favouring Benjamin's as it avoids the inits of weights altogether.

Anything else missing for merging this PR?

Since #887 is merged, I think we can close this one. Progress for other layers/adapters is tracked in #896.


Update the framename to reflect authority and scopes

This PR fixes #1225 by making the frame name unique for scopes+authority when making silent calls

Coverage increased (+1.2%) to 74.003% when pulling cac0e8578b20f5267a3d2bbb2bcf34a8aef0f868 on unique-framename into b6b80bfc2369040424d7475bec8c6c323dfa093d on dev.

@jasonnutter @sameerag thanks for looking into this! I wonder, should the frame name / identifier also include a moniker for "silent" or "popup" so otherwise-duplicate token requests don't collide for these different operations? Or silent vs. popup is disambiguated via some other mechanism?

@sameerag I attempted to hack your changes into the MSAL source (code shown below) using the non-minified version.
I see that the target function is only invoked a single time during the concurrent requests.
/**
 * @hidden
 * Acquires access token using a hidden iframe.
 * @ignore
 */
UserAgentApplication.prototype.renewToken = function (scopes, resolve, reject, account, serverAuthenticationRequest) {
    var scope = scopes.join(" ").toLowerCase();
    this.logger.verbose("renewToken is called for scope:" + scope);
    var frameName = "msalRenewFrame" + scope + serverAuthenticationRequest.authority;
    console.log("Using frame name: " + frameName, serverAuthenticationRequest);
    var frameHandle = WindowUtils_1.WindowUtils.addHiddenIFrame(frameName, this.logger);
    this.updateCacheEntries(serverAuthenticationRequest, account);
    this.logger.verbose("Renew token Expected state: " + serverAuthenticationRequest.state);
    // Build urlNavigate with "prompt=none" and navigate to URL in hidden iFrame
    var urlNavigate = UrlUtils_1.UrlUtils.urlRemoveQueryStringParameter(UrlUtils_1.UrlUtils.createNavigateUrl(serverAuthenticationRequest), Constants_1.Constants.prompt) + Constants_1.Constants.prompt_none + Constants_1.Constants.response_mode_fragment;
    window.renewStates.push(serverAuthenticationRequest.state);
    window.requestType = Constants_1.Constants.renewToken;
    this.registerCallback(serverAuthenticationRequest.state, scope, resolve, reject);
    this.logger.infoPii("Navigate to:" + urlNavigate);
    frameHandle.src = "about:blank";
    this.loadIframeTimeout(urlNavigate, frameName, scope).catch(function (error) { return reject(error); });
};

I made the similair change to the other function ("renewIdToken") as shown above. When I run my sample again using the concurrent discovery flow, I see that above function is only called once, despite calling acquire token silent 10 times with different authority values:

However, when I included my "disambiguation" code from the sample to force unique scope strings for each token request, I do see that this function is called for each set of scopes:
function beginTenantDiscoveryConcurrent(loginToken) {
    console.log('Beginning tenant discovery concurrent:', loginToken);
    for (let i = 1; i <= 9; i++) {
        let tenant = 'azurestackci0' + i + '.onmicrosoft.com';
        let disambiguation = '';
        for (let j = 0; j < i; j++) {
            disambiguation += ' openid'
        }
        let scopes = ['openid', disambiguation];
        msal.acquireTokenSilent({
            forceRefresh: true,
            scopes: scopes, //['openid'],
            authority: 'https://login.microsoftonline.com/' + tenant
        }).then(function (token) {
            console.log('Tenant ' + tenant + '(fromCache: ' + token.fromCache + '):', getAccessTokenClaims(token).tid);
        }).catch(function (error) {
            console.log('Tenant ' + tenant + ':', error.message);
        });
    }
}

If I dig into the code of acquire token silent a bit more, I see this code which looks like it is caching windows requests only by scope here, and not including authority (or popup vs silent related to what I was discussing with @jasonnutter):

Please note I'm not entirely certain in above investigation, but it does seem to be the issue. Please let me know if I've missed something.
Thanks again for looking into this!

@sameerag I further hacked the code to replace all references of:
window.activeRenewals[scope]

to:
window.activeRenewals[scope + authority]

I can verify that this change works with my specific sample, however there are some further design issues.
First, the signature and context of this function does not have any authority information provided to it, so there was no way for me to even "hack" the code to include the correct authority; instead the function signature would need to be modified to have authority context:
/**
 * @hidden
 * Used to add the developer requested callback to the array of callbacks for the specified scopes. The updated array is stored on the window object
 * @param {string} expectedState - Unique state identifier (guid).
 * @param {string} scope - Developer requested permissions. Not all scopes are guaranteed to be included in the access token returned.
 * @param {Function} resolve - The resolve function of the promise object.
 * @param {Function} reject - The reject function of the promise object.
 * @ignore
 */
UserAgentApplication.prototype.registerCallback = function (expectedState, scope, resolve, reject) {
    var _this = this;
    // track active renewals
    window.activeRenewals[scope] = expectedState;

Second, I found this function that did have enough context for me to hack the code to include an authority reference, though of course a better design might always pass scope and authority around everywhere. Honestly, scopes are meaningless without the associated authority in general, so probably through the entire code base you want to associate the two concepts.
/**
 * @hidden
 * Calling _loadFrame but with a timeout to signal failure in loadframeStatus. Callbacks are left.
 * registered when network errors occur and subsequent token requests for same resource are registered to the pending request.
 * @ignore
 */
UserAgentApplication.prototype.loadIframeTimeout = function (urlNavigate, frameName, scope) {
    return tslib_1.__awaiter(this, void 0, Promise, function () {
        var expectedState, iframe, hash, error_2;
        return tslib_1.__generator(this, function (_a) {
            switch (_a.label) {
                case 0:
                    let hackedAuthority = frameName.substr(frameName.indexOf('https:'));
                    expectedState = window.activeRenewals[scope + hackedAuthority];

Those were the only references in the code I found to "window.activeRenewals" so it is promising. In fact, the problematic method above (registerCallback) is called 4 times in the code base, and in each call, it has a handle to "serverAuthenticationRequest" which has the authority parameter! So instead of just passing the expected state to that function, it could pass the authority as well, though I think for a cleaner code you might consider just passing the entire "serverAuthenticationRequest" object to this function?
IDK, I'll let you folks take a look. But pretty sure these are the necessary fixes.

@keystroke you could be right as our renewal code blocks concurrency if the request is made for the same scopes, and that could be executed before creating an iframe. I will check this more closely and make changes accordingly.

If just changing the frame name to include authority works and provides value on its own, I would like to scope this PR to just include that change. Any further improvements can be made incrementally.

I am scoping this PR to name change only and will bring up a new PR to address the concurrency check accounting for authority. @jasonnutter  and @keystroke, can you help with the reviews, I have addressed the feedback.

@jasonnutter @sameerag I understand you are trying to scope this PR to the first half of a potential solution, however I'm not sure of the value of that, can you take a look at the changes in #1279 to consider a more complete / direct approach?

@keystroke Gotya. @sameerag will chat and follow up. Thanks!

Updates look good!

@sameerag Is this ready to be merged?


No scroll on Dialog with FullScreen

Bug type
Component
Component name
No response
What happened?
no scroll on dialog with fullscreen
Expected behavior
dialog fullscreen with scroll
Reproduction link
https://try.mudblazor.com/snippet/mawnETFzrLCCtHMO
Reproduction steps

open dialog fullscreen
no scroll when overflow

Relevant log output
No response
Version (bug)
6
Version (working)
No response
What browsers are you seeing the problem on?
Firefox, Chrome, Microsoft Edge, Safari
On what operating system are you experiencing the issue?
Windows, Mac OSX, Linux, iOS, Android, Other
Pull Request

[ ] I would like to do a Pull Request

Code of Conduct

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

Hi @carumsoft, this is happening because overflow-y is set to hidden when the  dialog is in full screen. You can fix this by adding the following CSS to your component.
<style>
    .mud-dialog-fullscreen {
        overflow-y: scroll
    }
</style>

Here is a demo of this solution applied to your sample code: https://try.mudblazor.com/snippet/QumRkfcIUBpkULVE

Thank you.


Update api-create-app-user-context.md

Added  full scope"https://api.securitycenter.windows.com/AdvancedQuery.Read"
Fixes https://github.com/MicrosoftDocs/microsoft-365-docs/issues/12573

@mjcaparas Please merge this PR. Thanks


Enhance code base to allow new website crawler

Currently there is quite an effort necessary to support a new website in TumblThree (for example reddit or instagram).
Roughly, the following steps have to be done:

Implement the ICrawler interface and override the Crawl method to start the crawler and a DownloadBlogAsync task from the IDownloader interface. Here, most of the code should be equivalent.
The url validator needs adjustments to detect proper urls.
Add a BlogType.
Add a Crawler to the CrawlerFactory.
Add a BlogType to the BlogFactory.
You might have to to add a new DetailsView.cs if you want different checkboxes or statistics.

It might be worth streamlining these tasks. At least for a simple RegEx grepper there should only be a few lines of code necessary (i.e. the url, the name of the new downloader/crawler and the RegEx).

It should be quite straight forward to add new sites like 500px, instagram, or twitter. The downloader and most of the UI should be able to take different websites.
You can check this commit for the addition of the Twitter downloader as the most recent example. This commit also contains code refactorings to make the naming of the classes and methods more general.


Add search option to CLI + atomic_lib

@AlexMikhalev is interested in this

To rephrase I need to be able to query from Rust using atomic_lib, cli is option and is an example of how to use API.

Alex does not necessarily need this feature at the moment.

@AlexMikhalev does need this feature now!

@AlexMikhalev The lib code for building a search URL is added to the latest development.

Also added the CLI search! Let me know if you run into issues :)


Use flake8 rather than pycodestyle

[x] Closes https://github.com/pydata/xarray/issues/2990
[ ] Fully documented, including whats-new.rst for all changes and api.rst for new API

I also ran isort, which created more changes that I would have hoped. Lmk if that's OK.
We could also enable isort by default. It's a balance: it reduces the chance of merge conflicts and adds automatic consistency, but at the cost of making first-time contributions a bit more difficult.

Also fixes https://github.com/pydata/xarray/issues/2833

Hello @max-sixty! Thanks for updating this PR. We checked the lines you've touched for PEP 8 issues, and found:

In the file doc/conf.py:

Line 58:1: E265 block comment should start with '# '
Line 97:1: E265 block comment should start with '# '
Line 117:1: E265 block comment should start with '# '
Line 121:1: E265 block comment should start with '# '
Line 131:1: E265 block comment should start with '# '
Line 134:1: E265 block comment should start with '# '
Line 138:1: E265 block comment should start with '# '
Line 142:1: E265 block comment should start with '# '
Line 148:1: E265 block comment should start with '# '
Line 151:1: E265 block comment should start with '# '
Line 168:1: E265 block comment should start with '# '
Line 172:1: E265 block comment should start with '# '
Line 175:1: E265 block comment should start with '# '
Line 195:44: E231 missing whitespace after ','
Line 195:51: E231 missing whitespace after ','
Line 202:1: E265 block comment should start with '# '
Line 210:1: E265 block comment should start with '# '
Line 213:1: E265 block comment should start with '# '
Line 217:1: E265 block comment should start with '# '
Line 220:1: E265 block comment should start with '# '
Line 226:1: E265 block comment should start with '# '
Line 229:1: E265 block comment should start with '# '
Line 232:1: E265 block comment should start with '# '
Line 235:1: E265 block comment should start with '# '
Line 240:1: E265 block comment should start with '# '
Line 243:1: E265 block comment should start with '# '
Line 252:1: E122 continuation line missing indentation or outdented
Line 253:1: E122 continuation line missing indentation or outdented
Line 253:1: E265 block comment should start with '# '
Line 255:1: E122 continuation line missing indentation or outdented
Line 256:1: E122 continuation line missing indentation or outdented
Line 256:1: E265 block comment should start with '# '
Line 258:1: E122 continuation line missing indentation or outdented
Line 259:1: E122 continuation line missing indentation or outdented
Line 259:1: E265 block comment should start with '# '
Line 266:3: E121 continuation line under-indented for hanging indent
Line 272:1: E265 block comment should start with '# '
Line 276:1: E265 block comment should start with '# '
Line 279:1: E265 block comment should start with '# '
Line 282:1: E265 block comment should start with '# '
Line 285:1: E265 block comment should start with '# '
Line 288:1: E265 block comment should start with '# '
Line 301:1: E265 block comment should start with '# '
Line 310:3: E121 continuation line under-indented for hanging indent
Line 316:1: E265 block comment should start with '# '
Line 319:1: E265 block comment should start with '# '
Line 322:1: E265 block comment should start with '# '
Line 325:1: E265 block comment should start with '# '

Will wait for a couple of days to see if there's a response on the pep8speaks config issue; otherwise will revert to the existing config.
Tests pass apart from dask-dev which breaks on master

This is ready to merge after a review. pep8speaks checks the config in master, and so this needs to be merged in order for the config to be updated

Thanks!


Fix typo in Query Methods documentation

Hi there. This fixes a typo in the docs' sample call for one of the query method keywords.

[x] You have read the Spring Data contribution guidelines.
[x] You use the code formatters provided here and have them applied to your changes. Don’t submit any formatting related changes.
[x] You submit test cases (unit or integration tests) that back your changes.
[x] You added yourself as author in the headers of the classes you touched. Amend the date range in the Apache license header if needed. For new types, add the license header (copy from another file and set the current year only).

Thanks for finding and fixing this. This is merged in all relevant branches.


[Hub Generated] Public private branch 'appplatform/mason/BYOC_api_copy_from_xiangyang'

This is a PR generated at OpenAPI Hub. You can view your work branch via this link.
Changelog
Add a changelog entry for this PR by answering the following questions:

What's the purpose of the update?

[ ] new service onboarding
[ ] new API version
[ ] update existing version for new feature
[ ] update existing version to fix swagger quality issue in s360
[ ] Other, please clarify

When are you targeting to deploy the new service/feature to public regions? Please provide the date or, if the date is not yet available, the month.
When do you expect to publish the swagger? Please provide date or, the the date is not yet available, the month.
If updating an existing version, please select the specific langauge SDKs and CLIs that must be refreshed after the swagger is published.

[ ] SDK of .NET (need service team to ensure code readiness)
[ ] SDK of Python
[ ] SDK of Java
[ ] SDK of Js
[ ] SDK of Go
[ ] PowerShell
[ ] CLI
[ ] Terraform
[ ] No refresh required for updates in this PR

Contribution checklist:

[ ] I commit to follow the Breaking Change Policy of "no breaking changes"
[ ] I have reviewed the documentation for the workflow.
[ ] Validation tools were run on swagger spec(s) and errors have all been fixed in this PR. How to fix?

If any further question about AME onboarding or validation tools, please view the FAQ.
ARM API Review Checklist

Applicability: :warning:
If your changes encompass only the following scenarios, you should SKIP this section, as these scenarios do not require ARM review.

Change to data plane APIs
Adding new properties
All removals

Otherwise your PR may be subject to ARM review requirements. Complete the following:

[ ] Check this box if any of the following apply to the PR so that label "WaitForARMFeedback" will be added automatically to begin ARM API Review. Failure to comply may result in delays to the manifest.

Adding a new service
Adding new API(s)
Adding a new API version
-[ ] To review changes efficiently, ensure you are using OpenAPIHub to initialize the PR for adding a new version. More details, refer to the wiki.

[ ] Ensure you've reviewed following guidelines including ARM resource provider contract and REST guidelines. Estimated time (4 hours). This is required before you can request review from ARM API Review board.

[ ] If you are blocked on ARM review and want to get the PR merged with urgency, please get the ARM oncall for reviews (RP Manifest Approvers team under Azure Resource Manager service) from IcM and reach out to them.

Breaking Change Review Checklist
If any of the following scenarios apply to the PR, request approval from the Breaking Change Review Board as defined in the Breaking Change Policy.

[ ] Removing API(s) in a stable version
[ ] Removing properties in a stable version
[ ] Removing API version(s) in a stable version
[ ] Updating API in a stable or public preview version with Breaking Change Validation errors
[ ] Updating API(s) in public preview over 1 year (refer to Retirement of Previews)

Action: to initiate an evaluation of the breaking change, create a new intake using the template for breaking changes. Addition details on the process and office hours are on the Breaking change Wiki.
Please follow the link to find more details on PR review process.

The PR is created based on the updates in the private branch. The updates in the PR has already been reviewed and approved with this PR Azure/azure-rest-api-specs-pr/6055

Close this PR, will re-open around. To Azure Spring Cloud team internal:

The PR to main branch to be triggered by the pipeline after merging into release branch. After that PR got approved, you should generated the PR to azure-rest-api-spec repo by the tool in the previous GitHub PR to azure-rest-api-specs-pr repo. Then hold on the merge until the release until manifest applied. More details are noted in https://dev.azure.com/msazure/AzureDMSS/_wiki/wikis/AzureDMSS.wiki/216540/Release-Swagger-to-customer

The latest ARM manifest is already applied, could you please help approve and merge this PR? @raych1

Synced offline to create another PR target to private repo main branch.

Hi, @LGDoor. The PR has be closed for a long time and it's related branch still exist. Please tell me if you still need this branch or i will delete it in 14 days.

Hi, @LGDoor. The PR has be closed for a long time and it's related branch still exist. Please tell me if you still need this branch or i will delete it in 14 days.

Hi, @LGDoor. The PR has be closed for a long time and it's related branch still exist. Please tell me if you still need this branch or i will delete it in 14 days.


April 2024 CPU - JDK8 Triage

Release Summary Report for release-openjdk8-pipeline
Warning: The release summary report is not yet complete. Currently, it only contains partial results.
Report generated at: Wed, 17 Apr 2024 12:15:53 GMT aggregated to temurin/issues/38
TRSS Build and TRSS Grid View
Jenkins Build URL https://ci.adoptium.net/job/build-scripts/job/release-openjdk8-pipeline/49/
Started by upstream project "build-scripts/utils/releaseTrigger_jdk8u" build number 2618 at 4/16/2024, 10:03:16 PM

✔ results in these Tables means the activity has successfully completed.
⏳ results means that we are actively working on closing off the runs needed for this version, platform, binaryType.
⛔ means there is no build planned for that version/platform combination.
⏸ means activity not yet started.

Platform
Status
Results

x86-64_mac
✔
all pass

x86-64_linux
⏸
comment

x86-64_windows
⏸
comment

aarch64_linux
⏸
comment

arm_linux
⏸
comment

x86-64_alpine-linux
⏸
comment

x86-32_windows
⏸
comment

ppc64le_linux
⏸
comment

x86-64_solaris
⏸
comment

sparcv9_solaris
⏸
comment

ppc64_aix
⏸
comment

aarch64_linux

x86-64_windows
Test_openjdk8_hs_extended.openjdk_x86-64_windows ⚠ UNSTABLE ⚠
Test_openjdk8_hs_extended.openjdk_x86-64_windows_rerun ⚠ UNSTABLE ⚠
Rerun failed
java -version
openjdk version "1.8.0_412"
OpenJDK Runtime Environment (Temurin)(build 1.8.0_412-b08)
OpenJDK 64-Bit Server VM (Temurin)(build 25.412-b08, mixed mode)

Test_openjdk8_hs_extended.openjdk_x86-64_windows_testList_1 ⚠ UNSTABLE ⚠
hotspot_jre_1 => deep history 12/15 passed | possible issues
hotspot_jre_0 => deep history 24/25 passed | possible issues
jdk_io_0 => deep history 16/17 passed | possible issues
jdk_other_0 => deep history 23/25 passed | possible issues
jdk_text_0 => deep history 16/17 passed | possible issues
jdk_text_1 => deep history 23/24 passed | possible issues
jdk_jfr_1 => deep history 13/19 passed | possible issues
jdk_tools_0 => deep history 23/24 passed | possible issues
jdk_instrument_1 => deep history 22/23 passed | possible issues
Test_openjdk8_hs_sanity.openjdk_x86-64_windows ⚠ UNSTABLE ⚠
Rerun failed
java -version
openjdk version "1.8.0_412"
OpenJDK Runtime Environment (Temurin)(build 1.8.0_412-b08)
OpenJDK 64-Bit Server VM (Temurin)(build 25.412-b08, mixed mode)

jdk_lang_0 => deep history 38/39 passed | possible issues
jdk_lang_1 => deep history 38/39 passed | possible issues
jdk_security1_0 => deep history 23/37 passed | possible issues
jdk_security1_1 => deep history 23/37 passed | possible issues
jdk_security2_0 => deep history 36/37 passed | possible issues
jdk_security2_1 => deep history 36/37 passed | possible issues
jdk_security4_0 => deep history 33/37 passed | possible issues
jdk_security4_1 => deep history 36/37 passed | possible issues
jdk_util_0 => deep history 35/39 passed | possible issues
jdk_util_1 => deep history 34/39 passed | possible issues
jdk_jdi_jdk8_0 => deep history 37/39 passed | possible issues
jdk_jdi_jdk8_1 => deep history 37/38 passed | possible issues
Test_openjdk8_hs_sanity.openjdk_x86-64_windows_rerun ✅ SUCCESS ✅
Rerun all
java -version
openjdk version "1.8.0_412"
OpenJDK Runtime Environment (Temurin)(build 1.8.0_412-b08)
OpenJDK 64-Bit Server VM (Temurin)(build 25.412-b08, mixed mode)

Test_openjdk8_hs_sanity.system_x86-64_windows ⚠ UNSTABLE ⚠
Rerun failed
java -version
openjdk version "1.8.0_412"
OpenJDK Runtime Environment (Temurin)(build 1.8.0_412-b08)
OpenJDK 64-Bit Server VM (Temurin)(build 25.412-b08, mixed mode)

TestJlmLocal_1 => deep history 39/40 passed | possible issues
Test_openjdk8_hs_sanity.system_x86-64_windows_rerun ✅ SUCCESS ✅
Rerun all
java -version
openjdk version "1.8.0_412"
OpenJDK Runtime Environment (Temurin)(build 1.8.0_412-b08)
OpenJDK 64-Bit Server VM (Temurin)(build 25.412-b08, mixed mode)

sparcv9_solaris
Test_openjdk8_hs_extended.openjdk_sparcv9_solaris ⚠ UNSTABLE ⚠
Test_openjdk8_hs_extended.openjdk_sparcv9_solaris_rerun ✅ SUCCESS ✅
Rerun all
java -version
openjdk version "1.8.0_412"

OpenJDK Runtime Environment (Temurin)(build 1.8.0_412-b08)

OpenJDK 64-Bit Server VM (Temurin)(build 25.412-b08, mixed mode)

Test_openjdk8_hs_extended.openjdk_sparcv9_solaris_testList_1 ⚠ UNSTABLE ⚠
hotspot_jre_0 => deep history 17/26 passed | possible issues
Was caused by a timeout on one of the agents:
TEST RESULT: Error. Agent error: java.lang.Exception: Agent 1 timed out with a timeout of 960 seconds; check console log for any additional details

The test timeouted on: test-siteox-solaris10u11-sparcv9-1
And passed later on (the same machine): test-siteox-solaris10u11-sparcv9-1

ppc64_aix
Test_openjdk8_hs_extended.openjdk_ppc64_aix ⚠ UNSTABLE ⚠
Test_openjdk8_hs_extended.openjdk_ppc64_aix_rerun ⚠ UNSTABLE ⚠
Rerun failed
java -version
openjdk version "1.8.0_412"

OpenJDK Runtime Environment (Temurin)(build 1.8.0_412-b08)

OpenJDK 64-Bit Server VM (Temurin)(build 25.412-b08, mixed mode)

Test_openjdk8_hs_extended.openjdk_ppc64_aix_testList_1 ⚠ UNSTABLE ⚠
hotspot_jre_1 => deep history 0/16 passed | possible issues
hotspot_jre_0 => deep history 1/27 passed | possible issues

x86-64_solaris
Test_openjdk8_hs_extended.openjdk_x86-64_solaris ⚠ UNSTABLE ⚠
Test_openjdk8_hs_extended.openjdk_x86-64_solaris_rerun ⚠ UNSTABLE ⚠
Rerun failed
java -version
openjdk version "1.8.0_412"
OpenJDK Runtime Environment (Temurin)(build 1.8.0_412-b08)
OpenJDK 64-Bit Server VM (Temurin)(build 25.412-b08, mixed mode)

Test_openjdk8_hs_extended.openjdk_x86-64_solaris_testList_0 ⚠ UNSTABLE ⚠
jdk_security3_0 => deep history 2/8 passed | possible issues
jdk_rmi_0 => deep history 20/22 passed | possible issues
Test_openjdk8_hs_sanity.openjdk_x86-64_solaris ⚠ UNSTABLE ⚠
Rerun failed
java -version
openjdk version "1.8.0_412"
OpenJDK Runtime Environment (Temurin)(build 1.8.0_412-b08)
OpenJDK 64-Bit Server VM (Temurin)(build 25.412-b08, mixed mode)

jdk_security4_0 => deep history 36/39 passed | possible issues
Test_openjdk8_hs_sanity.openjdk_x86-64_solaris_rerun ✅ SUCCESS ✅
Rerun all
java -version
openjdk version "1.8.0_412"
OpenJDK Runtime Environment (Temurin)(build 1.8.0_412-b08)
OpenJDK 64-Bit Server VM (Temurin)(build 25.412-b08, mixed mode)

x86-64_alpine-linux
Test_openjdk8_hs_extended.openjdk_x86-64_alpine-linux ⚠ UNSTABLE ⚠
Test_openjdk8_hs_extended.openjdk_x86-64_alpine-linux_rerun ⚠ UNSTABLE ⚠
Rerun failed
java -version
openjdk version "1.8.0_412"
OpenJDK Runtime Environment (Temurin)(build 1.8.0_412-b08)
OpenJDK 64-Bit Server VM (Temurin)(build 25.412-b08, mixed mode)

Test_openjdk8_hs_extended.openjdk_x86-64_alpine-linux_testList_1 ⚠ UNSTABLE ⚠
hotspot_jre_1 => deep history 7/10 passed | possible issues
Test_openjdk8_hs_extended.openjdk_x86-64_alpine-linux_testList_2 ⚠ UNSTABLE ⚠
jdk_net_1 => deep history 6/12 passed | possible issues

x86-32_windows
Release Summary Report for release-openjdk8-pipeline
Report generated at: Sat, 20 Apr 2024 17:55:14 GMT
TRSS Build and TRSS Grid View
Jenkins Build URL https://ci.adoptium.net/job/build-scripts/job/release-openjdk8-pipeline/50/
Started by upstream project "build-scripts/utils/releaseTrigger_jdk8u" build number 2618 at 4/18/2024, 1:27:16 PM
All pass


disable output coloring

Hi,
In pytest project I'm using allure report to capture the assertion errors, but due to the shell coloring, the ouput seems off:

I was wondering if you think that adding --no-diff-color option?

Might be a good idea to handle NO_COLOR (https://no-color.org/).

I can try and make a pull request


[rewrite:router] m.route.get() doesn't always return the last fully resolved view.

Description:
Assuming #1268 is fixed, the moment a route is requested, the result of m.route.get() changes. If it is called in the previous view code that is still active pending the resolution of the new one, it may break user code.
This is more likely to be troublesome in with async resolutions, but even when resolution is immediately finalized, there's a delay beween the moment window.location is set and the moment resolution occurs and bad things may happen in the mean time.
Currently, the only way to reliably know what route was last resolved is to cache m.route.get() just before resolving. That mandates, everywhere you need to access the path corresponding to the active view:

using RouteResolvers
wrapping resolve into a resolveAndSetPath(resolve, m.route.get()) function that must re-implement https://github.com/lhorie/mithril.js/commit/00d555b9f41c071f1c455d6ead9f5e1bfcac684a in userland.

Steps to Reproduce:
This is done using a build that addresses #1268 (and most other routers issues while being smaller .min.gzipped than the current rewrite tip)
http://jsbin.com/cecakawuce/edit?js,output
m.route(document.body, '/item/5', {
  '/item/:id': {view: function () {
    return m('a', {
      onclick: m.route.link,
      href: m.route.get()
    }, "Current item")
  }},
'/whoops': {onmatch: function () {} }
})

setTimeout(function(){ m.route.set('/whoops') }, 200)
setTimeout(function(){ m.redraw() }, 250)

Expected:
Current item links to /item/5
Actual:
/whoops

Edit: Added a link to the live jsbin.

Fixed now that #1290 has landed


ADR to handle dataset information in TIMDEX

Purpose and background context
This PR introduces a new Architecture Decision Record (ADR) that proposes to add a new form field to the TIMDEX data model.
This discussion was kicked off when seeking to understand what TIMDEX fields to use for facet filters in a new geospatial TIMDEX UI.  Reaching a decision on where to store this data in a TIMDEX record will unblock work for DataEng (work to store the data) and EngX (utilize the data for facets).
Includes new or updated dependencies?
NO
Changes expectations for external applications?
NO
What are the relevant tickets?

https://mitlibraries.atlassian.net/browse/GDT-193

Developer

[ ] All new ENV is documented in README
[ ] All new ENV has been added to staging and production environments
[ ] All related Jira tickets are linked in commit message(s)
[ ] Stakeholder approval has been confirmed (or is not needed)

Code Reviewer(s)

[ ] The commit message is clear and follows our guidelines (not just this PR message)
[ ] There are appropriate tests covering any new functionality
[ ] The provided documentation is sufficient for understanding any new functionality introduced
[ ] Any manual tests have been performed and verified
[ ] New dependencies are appropriate or there were no changes

@ghukill and @ehanson8 Thank you for writing up detailed descriptions for possible solutions. Here are my thoughts:

Option 1: Didn't feel strongly; he reason stated in the "Cons".
Option 2: Didn't feel strongly; I did think the term "Form" was a bit confusing.
Option 3: Kinda' dug this solution; But I still thought "Form" didn't suit "data types" or "file formats".
Option 4: Definitely felt like this was the most understandable solution. ✅

Question: Would it be a big lift if we were to:

Create a new class transmogrifier.models.FileFormatType:class FileFormatType:
   value: str = field(validator=instance_of(str))  # Required subfield
   kind: str | None = field(default=None, validator=optional(instance_of(str)))

Update TIMDEX model TimdexRecordfile_formats: list[str] | None = field(default=None, validator=optional(list_of(FileFormatType)))

Such that....we can specify---
FileFormatType(value="application/pdf", kind="MIME")
FileFormatType(value="Shapefile", kind="Image file format")

As if this discussion doesn't have enough context, wanted to add a bit more.
After some normalization of terms in the GeoHarvester (specifically dct_format_s to these terms, and gbl_resourceType_sm to these and these terms), here are the counts across MIT and OGM records: https://docs.google.com/spreadsheets/d/10oNtwD-3HagVHFfa00sB8eWs5EVmmWMiLSq2q08VU-w/edit#gid=61712783.
This gives a pretty good preview of what kind of actual values we're looking to slot into the data model, and see in the UI.
One observation: for the OGM gbl_resourceType_sm field, you can see a longer tail of values than the MIT records.  This is because the Aardvark schema allows for either LOC or OGM terms here.
I would propose we filter this down in Transmogrifier to only allow the values we want to see for "Data Types", e.g. "Polygon", "Point", etc., and then put the rest into subjects, as they are quite nicely formed and we even have some namespace/provenance to understand where they come from.

@ghukill and @ehanson8 Thank you for writing up detailed descriptions for possible solutions. Here are my thoughts:

Option 1: Didn't feel strongly; he reason stated in the "Cons".
Option 2: Didn't feel strongly; I did think the term "Form" was a bit confusing.
Option 3: Kinda' dug this solution; But I still thought "Form" didn't suit "data types" or "file formats".
Option 4: Definitely felt like this was the most understandable solution. ✅

Question: Would it be a big lift if we were to:

Create a new class transmogrifier.models.FileFormatType:class FileFormatType:
   value: str = field(validator=instance_of(str))  # Required subfield
   kind: str | None = field(default=None, validator=optional(instance_of(str)))

Update TIMDEX model TimdexRecordfile_formats: list[str] | None = field(default=None, validator=optional(list_of(FileFormatType)))

Such that....we can specify---
FileFormatType(value="application/pdf", kind="MIME")
FileFormatType(value="Shapefile", kind="Image file format")

?

A couple thoughts here...
If we did this, I'd propose naming the class class FileFormat which matches the CamelCase style of other field-specific classes that slow into a snake_case form in the final record.
As for this change itself, a couple of considerations:

for any sources that currently write file_formats, we'd have to update transformation and reharvest to ensure they now have a complex object with value/kind
I think we might struggle with programatically applying kind to non-mimetype values, where it's a bit subjective how to classify them.

Having been down this road a bit with preservation systems, I think we might want to stay out of the game of trying to juggle "friendly" and mimetype forms. There are python library we could lean on to give us one from the other, but there are always edge cases.
Zooming out a bit -- something I think Option 4 kind of raises as a question -- perhaps we don't need mimetypes at all? Or, not needed for file_formats? And/or, add mimetype to links only as floated above?
To me, the appeal of Option 4 would be:

no structural changes to TIMDEX data model; file_formats remains a list of strings
update sources that do currently write to file_formats to write "human" friendly forms, e.g. "PDF" instead of application/pdf which would then match the "human" friendly forms that Aardvark would introduce like GeoTIFF or Shapefile.

Given the considerations you mentioned, it seems like the additional changes I proposed would prove challenging, so please feel ignore! I do like the idea of "updat[ing] sources that do currently write to file_formats to write "human" friendly forms". Curious to see what others think! 🤓

I'd like my approval to signal a specific option. Could you update the status to Approved and the decision to Option 5 and dismiss all current reviews.
I do support option 5, but it's unclear if all of the other approvals are approving option 5 or something else because the document doesn't have a decision listed :)
Thanks!

Thanks for the ADR logistical help here @JPrevost!  ADR marked as "Accepted", decision logged, and all reviewers have been re-requested.


I did not receive my stellar

I did not receive my stellar this month, I am qualified to receive them but they never arrived, I had a message telling me that they were about to be approved and nothing ever came.  How should I claim it?

Good evening, I would like to know how to claim my stellar, I am qualified but they did not arrive


Styled-components class not attached to element

Good day,
thank you for creating this library, it looks nice!
I would like to show it only on a small screen size while using Styled-components. I therefore tried to instantiate the Hamburger as follows:
const StyledHamburger = styled(Hamburger)`
	@media(min-width: 770px){
		display: none;
	}
`;

However, as the className is not attached to the element, this does not work. See the Styled-components documentation for more information.

Hi!
The reason for not passing a className is because it could be error-prone, with users accidentally overwriting required styles. I realized a while ago this might not be the best reasoning though, so in the next breaking version I'll change this. Until that moment, you could wrap the component in a <div> on which you apply these styles, or use the .hamburger-react className manually.

Thanks for the quick reply! I did figure something like that and have indeed used the .hamburger-react className to get it done. I am looking forward to the next version!


[Feature]: Make dotnet CLI the default installation method.

Related Problem
No response
The Elevator Pitch
.NET continues to evolve into its 3rd major unified release known as .NET 7. However, the default installation method is still "Package Manager" which is mostly a Visual Studio / Windows concept.
There are some challenges here. The first is the expected tool to use. Developers on Unixy-systems won't have straight-forward access to setting up a powershell instance with the NuGet package provider installed. This makes copy/pasting not so straight-forward for new developers to the platform.
Another reason is that much of the Microsoft Learn content uses dotnet add package (i.e. https://learn.microsoft.com/en-us/training/modules/dotnet-dependencies/). Seasoned users will generally know the syntax or can use the functionality built in today to return them to their preferred tab.

Pitch: Change the default to dotnet CLI as it's the most cross-platform friendly installation method today.
Additional Context and Details
No response

This change makes a lot of sense. Based on the data, the ".NET CLI" tab is the most frequently switched-to tab, and the 2nd most frequently copied. "Package Manager" is the most frequently copied but perhaps that is because it is the current default.
@JonDouglas/@clairernovotny, what are your thoughts on these specific actions:

Switch ".NET CLI" to be the first tab and "Package Manager" to be the 2nd.
Make ".NET CLI" the default (as requested)
optional: rename "Package Manager" to "VS Package Manager" (might clarify it's just a VS thing)

optional: rename "Package Manager" to "VS Package Manager" (might clarify it's just a VS thing)

Personally I'd skip this. The tabs don't look great on small screens, this would regress further with longer text. Also, the Package Manager tab's content has this notice below it: This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of [Install-Package](https://docs.microsoft.com/en-us/nuget/reference/ps-reference/ps-ref-install-package).
+1 to bullets 1 and 2 though!

Thanks for the suggestion, @JonDouglas! This is done.


Fix file headers

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 79.006%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
1351

Relevant Lines:
1710

💛  - Coveralls


Re-enable the temporary survey dialog

Overview
Re-enable the temporary survey dialog created in #869 for a new survey.
Describe the solution you'd like

Get the new survey details from @katieashaw
Re-enable the dialog

You may want to merge this with #1151 @jwalgran

Thanks.
Duplicate of #1151.


Update to the Dockerfile to debug the pipeline

The echo will allow us to see if the release variable is being picked up from the build_args_file in the pipeline.

Can this be tested locally instead?

Can this be tested locally instead?


[postprocessor/ffmpeg] Always use the 'file:' protocol for filenames (fixes #6874)

WARNING: I haven't tested it in windows.
@yan12125 I think that we don't call run_ffmpeg_multiple_files with an url in any place, but _ffmpeg_filename_argument can be adapted to support urls.

Works fine on Windows. Note that #6874 does not affect Windows since path is sanitized from forbidden characters.

I think that we don't call run_ffmpeg_multiple_files with an url in any place

You're right. Just merge it.

Cherry picked in 8a7bbd160641dbbc13f68aaa26dfa49b71483a8e


Add Rutgers University

https://www.cs.rutgers.edu/
https://www.cs.rutgers.edu/people/professors
https://www.cs.rutgers.edu/people/graduate-students
URLs for Rutgers University ^

https://www.rutgers.edu/
^ Official University URL
Other URLs in the commit are for the Computer Science Program and show that<EMAIL_ADDRESS>is a valid email address.

@dg1013 I am sorry, the domain rutgers.edu is removed from our trusted domains list because it was abused in the past. If you are the student of this school, please enroll to GitHub Student Developer Pack at https://education.github.com/discount_requests/application. Then apply for JetBrains educational subscription with your GitHub account (GitHub tab at https://www.jetbrains.com/shop/eform/students).

I tried to apply through my Github account, but it doesn't show any forms to fill out.


change: make the other Cree words links

I was upset that only ê-kî-nitawi-kâh-kîmôci-kotiskâwêyâhk was the only Cree word that was a link, so I made the other ones links too

Codecov Report

Merging #552 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #552   +/-   ##
=======================================
  Coverage   91.33%   91.33%
=======================================
  Files          71       71
  Lines        2540     2540
=======================================
  Hits         2320     2320
  Misses        220      220

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 de3d347...a096817. Read the comment docs.

@eddieantonio Should itwêwina itself be linkable?

Good point @aarppe! I also added links to for us and our partners on the front page!


Missing arrow character on Gnome Terminal

I installed spaceship-prompt on Ubuntu 19.04 and the arrow icon is ⇡0% ➜.

I'm not sure which arrow you're describing. If you meant the second line, there are two sections in that image. battery section indicating it's charging state and level, then char section printing the arrow.
Closing this now, Feel free to reopen or create new issue if not resolved.


[Feature Request]: support custom model

I would like to thank the author for open-sourcing AssisChat. After trying it, I feel it is not inferior to any paid iOS application. The AssisChat UI design is excellent and beautiful, and its sharing and keyboard extension capabilities are also very strong, solving many of my problems ;)
Seeing that the project now supports OpenAI and Claude API, as well as custom API domain, is fantastic. If it could also add support for custom model names, it would allow more users of other services to use AssisChat, such as OpenRouter, Perplexity, and others.
FYI, here is an example of openrouter API request:
curl https://openrouter.ai/api/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENROUTER_API_KEY" \
  -d '{
  "model": "openai/gpt-3.5-turbo",
  "messages": [
    {"role": "user", "content": "What is the meaning of life?"}
  ]
}'

Thanks for feedback. I'll check it while I'm available. Or feel free to submit a PR. ❤


pageserver: default to 4MiB stack size and add env var to control it

Motivation
In https://github.com/neondatabase/neon/pull/8832 I get tokio runtime worker stack overflow errors in debug builds.
In a similar vein, I had tokio runtimer worker stack overflow when trying to eliminate async_trait.
The 2MiB default is kind of arbitrary - so this PR bumps it to 4MiB.
It also adds an env var to control it.
Risk Assessment
With our 4 runtimes, the worst case stack memory usage is 4 (runtimes) * ($num_cpus (executor threads) + 512 (blocking pool threads)) * 4MiB.
On i3en.3xlarge, that's 8384 MiB.
On im4gn.2xlarge, that's 8320 MiB.
Before this change, it was half that.
Looking at production metrics, we do have the headroom to accomodate this worst case case.
Alternatives
The problems only occur with debug builds, so technically we could only raise the stack size for debug builds.
However, it would be another configuration where debug != release.
Future Work
If we ever enable single runtime mode in prod (=> https://github.com/neondatabase/neon/issues/7312 ) then the worst case will drop to 25% of its current value.
Eliminating the use of tokio::spawn_blocking / tokio::fs in favor of tokio-epoll-uring (=> https://github.com/neondatabase/neon/issues/7370 ) would reduce the worst case to 4 (runtimes) * $num_cpus (executor threads) * 4 MiB.

cc #8296 which wanted to increase it for safekeepers