Very slow network speeds

Version
Microsoft Windows [Version 10.0.22000.556]
WSL Version

[X] WSL 2

Kernel Version
<IP_ADDRESS>
Distro Version
Ubuntu 20.04
Repro Steps

Install branch latest version of windows 11 (just did a complete reinstall of my computer)
Install everything wsl2 related from the docs (I did this twice to ensure it was not a faulty setup)
Install NVM from the docs
Try to download a node env (very slow speeds)
Try to download the same tar using curl instead (also very slow speeds)

Downloading this from windows is almost instant.
Speedtest in my windows environment:

Speedtest in my WSL environment
$ speedtest
Retrieving speedtest.net configuration...
Testing from REDACTED...
Retrieving speedtest.net server list...
Selecting best server based on ping...
Hosted by REDACTED [28.19 km]: 44.639 ms
Testing download speed
Download: 788.47 Mbit/s
Testing upload speed
Upload: 137.57 Mbit/s

Expected Behavior
I would expect it to not be much slower than my host machine.
Actual Behavior
~4 hours for 14mb makes it quite unusable...

Diagnostic Logs
Let me know if I should include the networking diagnostic from windows as well, they are long, so I did not add it.
WSL Networking Summary:
paul@PAUL-DESKTOP:~/temp/wsl/diagnostics $ ./networking.sh
If you see 'ping: socket: Operation not permitted' errors, run this command as root.
+ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 20.04.4 LTS
Release:        20.04
Codename:       focal
+ uname -a
Linux PAUL-DESKTOP <IP_ADDRESS>-microsoft-standard-WSL2 #1 SMP Wed Aug 25 23:20:18 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
+ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet <IP_ADDRESS>/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: bond0: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether d2:c0:01:6a:1b:ed brd ff:ff:ff:ff:ff:ff
3: dummy0: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 76:4b:c8:32:c2:9a brd ff:ff:ff:ff:ff:ff
4: tunl0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000
    link/ipip <IP_ADDRESS> brd <IP_ADDRESS>
5: sit0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000
    link/sit <IP_ADDRESS> brd <IP_ADDRESS>
6: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1350 qdisc mq state UP group default qlen 1000
    link/ether 00:15:5d:7c:a2:af brd ff:ff:ff:ff:ff:ff
    inet <IP_ADDRESS>/20 brd <IP_ADDRESS> scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::215:5dff:fe7c:a2af/64 scope link
       valid_lft forever preferred_lft forever
+ ip route show
default via <IP_ADDRESS> dev eth0
<IP_ADDRESS>/20 dev eth0 proto kernel scope link src <IP_ADDRESS>
++ ip route show
++ awk '/default/ { print $3 }'
+ gateway=<IP_ADDRESS>
+ ping -c 4 <IP_ADDRESS>
PING <IP_ADDRESS> (<IP_ADDRESS>) 56(84) bytes of data.

--- <IP_ADDRESS> ping statistics ---
4 packets transmitted, 0 received, 100% packet loss, time 3097ms

+ ping -c 4 <IP_ADDRESS>
PING <IP_ADDRESS> (<IP_ADDRESS>) 56(84) bytes of data.
64 bytes from <IP_ADDRESS>: icmp_seq=1 ttl=58 time=18.6 ms
64 bytes from <IP_ADDRESS>: icmp_seq=2 ttl=58 time=19.0 ms
64 bytes from <IP_ADDRESS>: icmp_seq=3 ttl=58 time=18.8 ms
64 bytes from <IP_ADDRESS>: icmp_seq=4 ttl=58 time=18.7 ms

--- <IP_ADDRESS> ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 18.639/18.811/19.028/0.143 ms
+ traceroute <IP_ADDRESS>
./networking.sh: line 28: traceroute: command not found
+ cat /etc/resolv.conf
nameserver <IP_ADDRESS>
+ type curl
+ curl -m 5 -v https://microsoft.com
*   Trying <IP_ADDRESS>:443...
* TCP_NODELAY set
* Connected to microsoft.com (<IP_ADDRESS>) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*   CAfile: /etc/ssl/certs/ca-certificates.crt
  CApath: /etc/ssl/certs
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
* TLSv1.3 (IN), TLS handshake, Finished (20):
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.3 (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / TLS_AES_128_GCM_SHA256
* ALPN, server accepted to use h2
* Server certificate:
*  subject: C=US; ST=WA; L=Redmond; O=Microsoft Corporation; CN=microsoft.com
*  start date: Jan 24 04:39:56 2022 GMT
*  expire date: Jan 19 04:39:56 2023 GMT
*  subjectAltName: host "microsoft.com" matched cert's "microsoft.com"
*  issuer: C=US; O=Microsoft Corporation; CN=Microsoft Azure TLS Issuing CA 06
*  SSL certificate verify ok.
* Using HTTP2, server supports multi-use
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
* Using Stream ID: 1 (easy handle 0x55dc5d401880)
> GET / HTTP/2
> Host: microsoft.com
> user-agent: curl/7.68.0
> accept: */*
>
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* old SSL session ID is stale, removing
* Connection state changed (MAX_CONCURRENT_STREAMS == 100)!
< HTTP/2 301
< date: Sat, 19 Mar 2022 09:44:03 GMT
< location: https://www.microsoft.com/
< server: Kestrel
< content-length: 0
< strict-transport-security: max-age=31536000; includeSubDomains
<
* Connection #0 to host microsoft.com left intact

So the issue seems to be originating from my network adapter, when I connect using my wifi everything works as expected,
I'm unsure how to further debug this problem to understand why it's happening on my network adapter.
I have a ASUS XG-C100F 10G SFP+ Network Adapter

I also experienced inconsistent and slow network speed with my ASUS XG-C100C.
Disabling IPv6 on the network adapter gave me expected network speeds in WSL2

@paul-vd What version of Windows/WSL are you running? There are a few reports of this issue going away in 22H2 (around version 10.0.22623.730 or later).
wsl --version should give enough information.

@scovetta this was "resolved" after disabling IPv6.
Here is my version info:

WSL version: <IP_ADDRESS>
Kernel version: <IP_ADDRESS>
WSLg version: 1.0.45
MSRDC version: 1.2.3575
Direct3D version: 1.606.4
DXCore version: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp
Windows version: 10.0.22621.674

I managed to "resolve" my super slow network issues in wsl2 in disabling ipv6.
My network device is a Marvell FastLinQ Edge 10Gbit Network Adapter and wsl --version outputs:
WSL version: <IP_ADDRESS>
Kernel version: <IP_ADDRESS>
WSLg version: 1.0.45
MSRDC version: 1.2.3575
Direct3D version: 1.606.4
DXCore version: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp
Windows version: 10.0.22621.674

I tried everything and finally I could solve it:

I changed the mirrors from /etc/resolv.conf → Not working
I tried to disable IPv6 from my network adapter → Not working

Finally I tried to disable IPv6 from the vEthernet of WSL and in W11 doesn't appears listed in the control panels, reading GitHub I found out that is because is a hidden device, from PowerShell I managed to disable it and right now WSL is has regular network speeds, the command:
Disable-NetAdapterBinding -Name "vEthernet (WSL)" -ComponentID ms_tcpip6 -IncludeHidden

I solved the problem by trying the following (Windows 11 Home).
Disable-NetAdapterLso -IncludeHidden -Name "vEthernet (WSL)"

Restarting the WSL network adapter worked for me. Had 5Mbps upload speed, after restart back to normal speeds (>800Mbps)
In Administrator Powershell:
Restart-NetAdapter -Name "vEthernet (WSL)" -IncludeHidden

I have the same problem:
Testing download speed................................................................................
Download: 2.15 Mbit/s
Testing upload speed......................................................................................................
Upload: 287.43 Mbit/s

Nothing helped me, only reboot solved it. And it randomly appears again

For me restarting the WSL adapter does not work. What worked is deactivating the wifi adapter in windows network control panel and activating it again, then it gained full speed, until it worked again.

This works for me.

For those of you that can't easily disable the "Large Send Offload Version 2 (IPv4)" (or IPv6) because the WSL adapter is hidden in the control panel, here are the steps I took to disable this setting via powershell:
(full disclosure: I have zero understanding/comprehension of what this setting does... so I'm essentially pressing buttons at random)
In PowerShell:
get-netadapter
This will give you a list of network adapters on your system:

Next, run the following command to view the advanced properties of the "vEthernet (WSL)" adapter:
Get-NetAdapterAdvancedProperty -Name "vEthernet (WSL)" | Format-Table -AutoSize
Here, you can see that this setting had a value of 1, which I speculate maps to "enabled".

Next, change the value to "Disabled":
Set-NetAdapterAdvancedProperty -Name "vEthernet (WSL)" -DisplayName "Large Send Offload Version 2 (IPv4)" -DisplayValue Disabled.

I applied this change and network speed in my WSL environment seemed to have improved.

I woke up this morning and found that my Windows box had been "updated". I also saw that my WSL speeds were slow again. I opened up this thread and followed the steps in my previous post and immediately saw the download speeds increase:

This is really bad. This suggests that updates are wiping out the workout that people are using.

For those of you that can't easily disable the "Large Send Offload Version 2 (IPv4)" (or IPv6) because the WSL adapter is hidden in the control panel, here are the steps I took to disable this setting via powershell: (full disclosure: I have zero understanding/comprehension of what this setting does... so I'm essentially pressing buttons at random)
In PowerShell:
get-netadapter
This will give you a list of network adapters on your system:
Next, run the following command to view the advanced properties of the "vEthernet (WSL)" adapter:
Get-NetAdapterAdvancedProperty -Name "vEthernet (WSL)" | Format-Table -AutoSize
Here, you can see that this setting had a value of 1, which I speculate maps to "enabled".

Next, change the value to "Disabled":
Set-NetAdapterAdvancedProperty -Name "vEthernet (WSL)" -DisplayName "Large Send Offload Version 2 (IPv4)" -DisplayValue Disabled.

I applied this change and network speed in my WSL environment seemed to have improved.

Thanks, the only response that works for me since we are running WSL on Windows 11 Pro

Looks like disabling Large Send Offload inside WSL/Linux also works:
sudo apt install ethtool

sudo ethtool -K eth0 tso off

sudo ethtool -k eth0 | grep 'tcp-segmentation-offload'

Credit: https://github.com/microsoft/WSL/issues/4901#issuecomment-1580750148

This is getting silly, I've had to "fix" this countless times now. Which is only possible due to this thread. So I had to modify the above instructions by @peterfelts and @davorpa as there seems to have been a new change. The adapter is now hidden from get-netadapter, and might have a different name.
I've made the assumption that the adapter will start with vEthernet and have WSL somewhere else following in the name. With that in mind here is a combined query to get the properties to check your setup

get-netadapter -IncludeHidden | Where-Object Name -like "vEthernetWSL"  | Get-NetAdapterAdvancedProperty -IncludeHidden | Format-Table -Autosize
That would list the advanced properties of your vEthernet WSL adapter.

To check only for LSOv2, you can run just the below

get-netadapter -IncludeHidden | Where-Object Name -like "vEthernetWSL"  | Get-NetAdapterAdvancedProperty -IncludeHidden | Where-Object DisplayName -like "Large Send Offload Version 2*"

Now to disable tjhe properties for both ipv4 and ipv6

get-netadapter -IncludeHidden | Where-Object Name -like "vEthernetWSL"  | Get-NetAdapterAdvancedProperty -IncludeHidden | Where-Object DisplayName -like "Large Send Offload Version 2*" | Set-NetAdapterAdvancedProperty -DisplayValue Disabled

Had to include | Format-Table -AutoSize toe get the full adapter name:
get-netadapter -IncludeHidden | Format-Table -AutoSize | Where-Object Name -like "vEthernet (WSL (Hyper-V firewall))" | Get-NetAdapterAdvancedProperty -IncludeHidden | Where-Object DisplayName -like "Large Send Offload Version 2*" | Set-NetAdapterAdvancedProperty -DisplayValue Disabled

I refactored that a bit to be more verbose
`# Get all network adapters, including hidden ones
Write-Host "Retrieving all network adapters, including hidden ones..."
$adapters = Get-NetAdapter -IncludeHidden
Filter the adapters to find the one with a specific name pattern
Write-Host "Filtering for network adapter with name like 'vEthernet (WSL (Hyper-V firewall))'..."
$targetAdapter = $adapters | Where-Object Name -like "vEthernet (WSL (Hyper-V firewall))"
Check if the target adapter is found
if ($targetAdapter) {
Write-Host "Network adapter found. Retrieving advanced properties..."
# For the found adapter, retrieve its advanced properties, including hidden ones
$advancedProperties = $targetAdapter | Get-NetAdapterAdvancedProperty -IncludeHidden
# From these properties, filter to find those with a display name matching a specific pattern
Write-Host "Filtering for properties with display name like 'Large Send Offload Version 2*'..."
$targetProperties = $advancedProperties | Where-Object DisplayName -like "Large Send Offload Version 2*"

# Check if the target properties are found
if ($targetProperties) {
    Write-Host "Properties found. Disabling 'Large Send Offload Version 2'..."
    # For each property that matches the criteria, set its value to 'Disabled'
    foreach ($property in $targetProperties) {
        Set-NetAdapterAdvancedProperty -InputObject $property -DisplayValue Disabled
        Write-Host "Property '$($property.DisplayName)' is now disabled."
    }
} else {
    Write-Host "No properties matching the criteria were found."
}

} else {
Write-Host "No network adapter matching the criteria was found."
}
`

This should be answer: https://github.com/microsoft/WSL/issues/4901#issuecomment-1845315463

This should be answer: #4901 (comment)

I'm sorry, but networkingmode=mirrored only breaks my networking completely, and I already have all the other features advertised on it working

I solved the problem by trying the following (Windows 11 Home).
Disable-NetAdapterLso -IncludeHidden -Name "vEthernet (WSL)"

Hi,
this command solves the problem for me. Unfortunately, I have to rerun the command after every reboot. Is there any way to make this change permanent?
Thanks and regards

None of these get me going consistently over 200mbps with speedtest-cli in the bare wsl, or over 30mbps in docker containers.  Network mode=mirrored results only in no networking working, as far as I can tell.

For those of you that can't easily disable the "Large Send Offload Version 2 (IPv4)" (or IPv6) because the WSL adapter is hidden in the control panel, here are the steps I took to disable this setting via powershell: (full disclosure: I have zero understanding/comprehension of what this setting does... so I'm essentially pressing buttons at random)
In PowerShell:
get-netadapter
This will give you a list of network adapters on your system:
Next, run the following command to view the advanced properties of the "vEthernet (WSL)" adapter:
Get-NetAdapterAdvancedProperty -Name "vEthernet (WSL)" | Format-Table -AutoSize
Here, you can see that this setting had a value of 1, which I speculate maps to "enabled".

Next, change the value to "Disabled":
Set-NetAdapterAdvancedProperty -Name "vEthernet (WSL)" -DisplayName "Large Send Offload Version 2 (IPv4)" -DisplayValue Disabled.

I applied this change and network speed in my WSL environment seemed to have improved.

This worked for me...  I had to change some of the values though. Here's the full:
Set-NetAdapterAdvancedProperty -Name "vEthernet (WSL (Hyper-V firewall))" -DisplayName "Large Send Offload Version 2 (IPv4)" -DisplayValue Disabled -IncludeHidden

Set-NetAdapterAdvancedProperty -Name "vEthernet (WSL (Hyper-V firewall))" -DisplayName "Large Send Offload Version 2 (IPv4)" -DisplayValue Disabled -IncludeHidden

This one got me from around 150-200mbps down to 350mbps down, and i'm now hitting my upload cap at close to 50mbps in bare WSL, still poking in docker at about 30mbps down, 1.5mbps up

Set-NetAdapterAdvancedProperty -Name "vEthernet (WSL (Hyper-V firewall))" -DisplayName "Large Send Offload Version 2 (IPv4)" -DisplayValue Disabled -IncludeHidden

This one got me from around 150-200mbps down to 350mbps down, and i'm now hitting my upload cap at close to 50mbps in bare WSL, still poking in docker at about 30mbps down, 1.5mbps up

try this once
`
PASTE ON POWERSHELL
Restart WSL Network Adapter
Restart-NetAdapter -Name "vEthernet (WSL (Hyper-V firewall))" -IncludeHidden
Set-NetAdapterAdvancedProperty -Name "vEthernet (WSL (Hyper-V firewall))" -DisplayName "Large Send Offload Version 2 (IPv4)" -DisplayValue Disabled -IncludeHidden
Set-NetAdapterAdvancedProperty -Name "vEthernet (WSL (Hyper-V firewall))" -DisplayName "Large Send Offload Version 2 (IPv6)" -DisplayValue Disabled -IncludeHidden
PASTE WSL Distro (Ubuntu)
upload speed
sudo apt install ethtool
sudo ethtool -K eth0 tso off
sudo ethtool -k eth0 | grep 'tcp-segmentation-offload'`

What I have experienced is when I create new WSL2 instance  then everything is fine. Download/Upload speeds are normal.
When I move this another drive, then the network speed becomes slow, while upload speed is same but download speed becomes very slow from 200mbps to 2-8mbps.

Looks like disabling TCP Segmentation Offload inside WSL/Linux also works:
sudo apt install ethtool

sudo ethtool -K eth0 tso off

sudo ethtool -k eth0 | grep 'tcp-segmentation-offload'

Credit: #4901 (comment)
That fixed my upload speed being really slow.

Thank you!!!! A thousand times thank you!! My download speed was OK (600 MBits/s) but my upload was like 1 MBit/s now it it also around 600, thank you again!!

I have tried so many things by now. The one that fixed it for me was:
Admin PowerShell:
wsl --shutdown
Disable-NetAdapterLso -IncludeHidden -Name "vEthernet *"

None of the options unfortunately worked for me. Any ideas of what else could be tried ? I'm definitely stuck
> wsl --version
WSL version: <IP_ADDRESS>
Kernel version: <IP_ADDRESS>-1
WSLg version: 1.0.65
MSRDC version: 1.2.5620
Direct3D version: 1.611.1-81528511
DXCore version: 10.0.26100.1-240331-1435.ge-release
Windows version: 10.0.26100.2605

> lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 22.04.5 LTS
Release:        22.04
Codename:       jammy

> Get-NetAdapterAdvancedProperty -Name "vEthernet*" | Format-Table -AutoSize

Name                       DisplayName                         DisplayValue                RegistryKeyword         RegistryValue
----                       -----------                         ------------                ---------------         -------------
vEthernet (Default Switch) IPv4 Checksum Offload               Rx & Tx Enabled             *IPChecksumOffloadIPv4  {3}
vEthernet (Default Switch) IPSec Offload                       Auth Header and ESP Enabled *IPsecOffloadV2         {3}
vEthernet (Default Switch) Jumbo Packet                        Disabled                    *JumboPacket            {1514}
vEthernet (Default Switch) Large Send Offload Version 2 (IPv4) Disabled                    *LsoV2IPv4              {0}
vEthernet (Default Switch) Large Send Offload Version 2 (IPv6) Disabled                    *LsoV2IPv6              {0}
vEthernet (Default Switch) Maximum Number of RSS Processors    8                           *MaxRssProcessors       {8}
vEthernet (Default Switch) Network Direct (RDMA)               Disabled                    *NetworkDirect          {0}
vEthernet (Default Switch) Maximum Number of RSS Queues        8                           *NumRSSQueues           {8}
vEthernet (Default Switch) Recv Segment Coalescing (IPv4)      Enabled                     *RscIPv4                {1}
vEthernet (Default Switch) Recv Segment Coalescing (IPv6)      Enabled                     *RscIPv6                {1}
vEthernet (Default Switch) Receive Side Scaling                Enabled                     *RSS                    {1}
vEthernet (Default Switch) RSS Base Processor Number           0                           *RssBaseProcNumber      {0}
vEthernet (Default Switch) Maximum RSS Processor Number        63                          *RssMaxProcNumber       {63}
vEthernet (Default Switch) RSS Profile                         Closest Processor Static    *RSSProfile             {2}
vEthernet (Default Switch) TCP Checksum Offload (IPv4)         Rx & Tx Enabled             *TCPChecksumOffloadIPv4 {3}
vEthernet (Default Switch) TCP Checksum Offload (IPv6)         Rx & Tx Enabled             *TCPChecksumOffloadIPv6 {3}
vEthernet (Default Switch) UDP Checksum Offload (IPv4)         Rx & Tx Enabled             *UDPChecksumOffloadIPv4 {3}
vEthernet (Default Switch) UDP Checksum Offload (IPv6)         Rx & Tx Enabled             *UDPChecksumOffloadIPv6 {3}
vEthernet (FSE HostVnic)   IPv4 Checksum Offload               Rx & Tx Enabled             *IPChecksumOffloadIPv4  {3}
vEthernet (FSE HostVnic)   IPSec Offload                       Auth Header and ESP Enabled *IPsecOffloadV2         {3}
vEthernet (FSE HostVnic)   Jumbo Packet                        Disabled                    *JumboPacket            {1514}
vEthernet (FSE HostVnic)   Large Send Offload Version 2 (IPv4) Disabled                    *LsoV2IPv4              {0}
vEthernet (FSE HostVnic)   Large Send Offload Version 2 (IPv6) Disabled                    *LsoV2IPv6              {0}
vEthernet (FSE HostVnic)   Maximum Number of RSS Processors    8                           *MaxRssProcessors       {8}
vEthernet (FSE HostVnic)   Network Direct (RDMA)               Disabled                    *NetworkDirect          {0}
vEthernet (FSE HostVnic)   Maximum Number of RSS Queues        8                           *NumRSSQueues           {8}
vEthernet (FSE HostVnic)   Recv Segment Coalescing (IPv4)      Enabled                     *RscIPv4                {1}
vEthernet (FSE HostVnic)   Recv Segment Coalescing (IPv6)      Enabled                     *RscIPv6                {1}
vEthernet (FSE HostVnic)   Receive Side Scaling                Enabled                     *RSS                    {1}
vEthernet (FSE HostVnic)   RSS Base Processor Number           0                           *RssBaseProcNumber      {0}
vEthernet (FSE HostVnic)   Maximum RSS Processor Number        63                          *RssMaxProcNumber       {63}
vEthernet (FSE HostVnic)   RSS Profile                         Closest Processor Static    *RSSProfile             {2}
vEthernet (FSE HostVnic)   TCP Checksum Offload (IPv4)         Rx & Tx Enabled             *TCPChecksumOffloadIPv4 {3}
vEthernet (FSE HostVnic)   TCP Checksum Offload (IPv6)         Rx & Tx Enabled             *TCPChecksumOffloadIPv6 {3}
vEthernet (FSE HostVnic)   UDP Checksum Offload (IPv4)         Rx & Tx Enabled             *UDPChecksumOffloadIPv4 {3}
vEthernet (FSE HostVnic)   UDP Checksum Offload (IPv6)         Rx & Tx Enabled             *UDPChecksumOffloadIPv6 {3}


[jax2tf] First draft of top_k conversion to tf.

We are able to use tf.math.top_k in most cases but:

bfloat16 and complex numbers are unsupported
tf.math.top_k works properly with args of type int32/64, uint32/64 and
float32/64. Other flavors of uints/ints and bool can not be used with
the operation by default, and they are thus promoted to their
equivalent 32 bit representation, and the result is casted back to the
original dtype.

A limitation right now is the handling of edge cases: TF and JAX order
np.inf and np.nan differently, resulting in inconsistencies in the case
where these values are present.

I tested this internally before merging.


Pypy binary fix

Continued from #223
Fix PyPy binary wheel names and tests.

All setuptools, pip and packaging needed updating in tox.

Looks like it's still failing?

test_extension_wheel_setuptools (__main__.SetuptoolsUnpacked) ... FAIL :disappointed:
Will take another look tomorrow - cannot reproduce failure locally.

Cool. If I find some time, I'll see if I can get a reliable conda-based reproduction. Thanks for working through this, btw.

Looks ok now, needed wheel as well in tox.
By locally I meant outside tox - tox is too slow to run locally for me.
Prefer to have the CI run different interpreters, faster, less configuration and allows for tests to be run locally.

Ah, excellent. Thanks so much for tracking this down. I'm glad it turned out to be just a matter of dependency versions.
I agree, I'm finding tox a bit painful to use (I've just been source .tox/pypy3/bin/activateing to do my one-off tests), but I don't want to try to shift away before getting a release out.
Thanks again for this.


Build: minor polish, update README

Unfortunately YAML builds in VSTS do not produce build badges yet.


“lxml & xmlsec libxml2 library version mismatch” error under uWSGI

If libxml2-dev was installed when uWSGI was built, then importing xmlsec within uWSGI leads to an incorrect error xmlsec.InternalError: (-1, 'lxml & xmlsec libxml2 library version mismatch'). There’s no such error outside of uWSGI.
(I can work around this error with --no-binary=lxml --no-binary=xmlsec, but that wastes a lot more CI time and shouldn’t be necessary.)
Reproduction in a fresh container:
$ docker run --rm -it ubuntu:22.04
root@076333186bac:/# apt update
…
root@076333186bac:/# apt install -y gcc libxml2-dev python3-dev python3-venv
…
root@076333186bac:/# python3 -m venv venv
root@076333186bac:/# . venv/bin/activate
(venv) root@076333186bac:/# pip install uWSGI xmlsec
…
Successfully installed lxml-5.2.1 uWSGI-<IP_ADDRESS> xmlsec-1.3.14
(venv) root@076333186bac:/# cat > app.py <<EOF
import xmlsec

def application(env, start_response):
    start_response("200 OK", [("Content-Type", "text/plain")])
    return [b"Hello, world!\n"]

EOF
(venv) root@076333186bac:/# python -c 'import xmlsec'
(venv) root@076333186bac:/# uwsgi --http :9090 --wsgi-file app.py
*** Starting uWSGI <IP_ADDRESS> (64bit) on [Mon May  6 22:18:16 2024] ***
compiled with version: 11.4.0 on 06 May 2024 22:17:53
os: Linux-6.8.7 #1-NixOS SMP PREEMPT_DYNAMIC Wed Apr 17 09:23:43 UTC 2024
nodename: 076333186bac
machine: x86_64
clock source: unix
detected number of CPU cores: 12
current working directory: /
detected binary path: /venv/bin/uwsgi
!!! no internal routing support, rebuild with pcre support !!!
uWSGI running as root, you can use --uid/--gid/--chroot options
*** WARNING: you are running uWSGI as root !!! (use the --uid flag) ***
*** WARNING: you are running uWSGI without its master process manager ***
your memory page size is 4096 bytes
detected max file descriptor number: 1024
lock engine: pthread robust mutexes
thunder lock: disabled (you can enable it with --thunder-lock)
uWSGI http bound on :9090 fd 4
spawned uWSGI http 1 (pid: 4203)
uwsgi socket 0 bound to TCP address <IP_ADDRESS>:46691 (port auto-assigned) fd 3
uWSGI running as root, you can use --uid/--gid/--chroot options
*** WARNING: you are running uWSGI as root !!! (use the --uid flag) ***
Python version: 3.10.12 (main, Nov 20 2023, 15:14:05) [GCC 11.4.0]
*** Python threads support is disabled. You can enable it with --enable-threads ***
Python main interpreter initialized at 0x55a23eea0bc0
uWSGI running as root, you can use --uid/--gid/--chroot options
*** WARNING: you are running uWSGI as root !!! (use the --uid flag) ***
your server socket listen backlog is limited to 100 connections
your mercy for graceful operations on workers is 60 seconds
mapped 72904 bytes (71 KB) for 1 cores
*** Operational MODE: single process ***
Traceback (most recent call last):
  File "app.py", line 1, in <module>
    import xmlsec
xmlsec.InternalError: (-1, 'lxml & xmlsec libxml2 library version mismatch')
unable to load app 0 (mountpoint='') (callable not found or import error)
*** no app loaded. going in full dynamic mode ***
uWSGI running as root, you can use --uid/--gid/--chroot options
*** WARNING: you are running uWSGI as root !!! (use the --uid flag) ***
*** uWSGI is running in multiple interpreter mode ***
spawned uWSGI worker 1 (and the only) (pid: 4202, cores: 1)

Some debugging information:
>>> import ctypes, lxml, xmlsec
>>> libxml2 = ctypes.CDLL("libxml2.so.2")
>>> ctypes.c_char_p.in_dll(libxml2, "xmlParserVersion").value
b'20913'
>>> lxml.etree.LIBXML_VERSION
(2, 12, 6)
>>> lxml.etree.LIBXML_COMPILED_VERSION
(2, 12, 6)
>>> xmlsec.get_libxml_version()
(2, 12, 6)
>>> xmlsec.get_libxml_compiled_version()
(2, 12, 6)

xmlParserVersion, LIBXML_VERSION, and LIBXML_COMPILED_VERSION are the same inside and outside uWSGI.

I'm getting this same error on a container that I just re-compiled and it was working fine.   I use python3-saml and that's breaking with this error when I run the container.
Here is the log:
[2024-05-20 02:54:20 +0000] [11] [ERROR] Exception in worker process
2024-05-19 22:54:20 Traceback (most recent call last):
2024-05-19 22:54:20   File "/usr/local/lib/python3.6/dist-packages/gunicorn/arbiter.py", line 583, in spawn_worker
2024-05-19 22:54:20     worker.init_process()
2024-05-19 22:54:20   File "/usr/local/lib/python3.6/dist-packages/gunicorn/workers/ggevent.py", line 203, in init_process
2024-05-19 22:54:20     super(GeventWorker, self).init_process()
2024-05-19 22:54:20   File "/usr/local/lib/python3.6/dist-packages/gunicorn/workers/base.py", line 129, in init_process
2024-05-19 22:54:20     self.load_wsgi()
2024-05-19 22:54:20   File "/usr/local/lib/python3.6/dist-packages/gunicorn/workers/base.py", line 138, in load_wsgi
2024-05-19 22:54:20     self.wsgi = self.app.wsgi()
2024-05-19 22:54:20   File "/usr/local/lib/python3.6/dist-packages/gunicorn/app/base.py", line 67, in wsgi
2024-05-19 22:54:20     self.callable = self.load()
2024-05-19 22:54:20   File "/usr/local/lib/python3.6/dist-packages/gunicorn/app/wsgiapp.py", line 52, in load
2024-05-19 22:54:20     return self.load_wsgiapp()
2024-05-19 22:54:20   File "/usr/local/lib/python3.6/dist-packages/gunicorn/app/wsgiapp.py", line 41, in load_wsgiapp
2024-05-19 22:54:20     return util.import_app(self.app_uri)
2024-05-19 22:54:20   File "/usr/local/lib/python3.6/dist-packages/gunicorn/util.py", line 350, in import_app
2024-05-19 22:54:20     __import__(module)
2024-05-19 22:54:20   File "/opt/app/tinyflask/__init__.py", line 11, in <module>
2024-05-19 22:54:20     import tinyflask.views
2024-05-19 22:54:20   File "/opt/app/tinyflask/views.py", line 24, in <module>
2024-05-19 22:54:20     from onelogin.saml2.auth import OneLogin_Saml2_Auth
2024-05-19 22:54:20   File "/usr/local/lib/python3.6/dist-packages/onelogin/saml2/auth.py", line 12, in <module>
2024-05-19 22:54:20     import xmlsec
2024-05-19 22:54:20 xmlsec.InternalError: (-1, 'lxml & xmlsec libxml2 library version mismatch')
2024-05-19 22:54:20 [2024-05-20 02:54:20 +0000] [11] [INFO] Worker exiting (pid: 11)

Here is my Dockerfile:
FROM ubuntu:bionic

RUN apt update
RUN apt-get update
RUN apt-get -y upgrade
RUN apt-get install -y pkg-config
RUN apt-get install -y software-properties-common apt-utils
RUN add-apt-repository -y ppa:deadsnakes/ppa
RUN apt-get install -y vim
RUN apt-get install -y python3.7
RUN apt-get install -y python3-pip

RUN apt-get install -y libxml2-dev libxmlsec1-dev

RUN mkdir -p /opt/app
WORKDIR /opt/app/
COPY . .
RUN pip3 install --upgrade pip
RUN pip3 install --no-cache-dir -r requirements.txt

RUN pip3 install python3-saml

RUN touch /var/log/cron.log

RUN echo "35 6 * * * root /usr/bin/python3 /opt/app/last_login.py >> /opt/app/audit.log" >> /etc/crontab

CMD (cron) && exec gunicorn tinyflask:app -b <IP_ADDRESS>:80 --workers 3 -k gevent

And this is the requirements.txt:
Click==7.0
Flask==1.1.1
Flask-Cors==3.0.8
gevent==1.4.0
greenlet==0.4.15
gunicorn==19.9.0
itsdangerous==1.1.0
Jinja2==2.10.1
MarkupSafe==1.1.1
Werkzeug==0.15.5
flask-compress==1.4.0
requests==2.24.0
python-dateutil==2.8.0
pytz==2021.1
pickleshare==0.7.5
xmltodict

I'm stuck.  Any help is appreciated.
Thanks

It seems like<EMAIL_ADDRESS>uses<EMAIL_ADDRESS>However<EMAIL_ADDRESS>has been released, and<EMAIL_ADDRESS>breaks because of this libxml2 version mismatch.
Not sure who should be in charge of fixing this, but I suppose using<EMAIL_ADDRESS>could work.

@eliasmazur I have the same use case as you. Based on what @andersk said, I've restricted the package version of LXML like so
lxml >= 4.6.5, !=4.7.0, <=5.2.1

My build is working again now.

Thanks for the help.  I realized I was restricting the all packages except xmlsec.  I restricted to an earlier version and it now works.  Looks like python3-saml was installing the latest xmlsec and that was causing the mismatch.

In my work, we use sigxml and xmlsec. Both install lxml with binaries, causing the same error.
xmlsec.InternalError: (-1, 'lxml & xmlsec libxml2 library version mismatch')
To resolve this, I install using the --no-binary pip flag. (work on Ubuntu 22.04, Python 3.10 and Pip 22.0.2)
pip install --no-binary lxml==4.6.3 lxml==4.6.3 --force-reinstall
pip install --no-binary xmlsec==1.3.13 xmlsec==1.3.13
pip install --no-binary signxml==3.2.2 signxml==3.2.2

Thanks for the help. I realized I was restricting all packages except xmlsec. I restricted to an earlier version and it now works. Looks like python3-saml was installing the latest xmlsec and that was causing the mismatch.

Hi,
we have the similiar issue can you provide us the version which u have mentioned

Would this mean that a new release/wheel is needed also built with<EMAIL_ADDRESS>I was very excited about being able to install binary wheels again with xmlsec 1.3.14, but it seems that a patch release of libxml broke that again?

@eliasmazur I have the same use case as you with python3-saml. Based on what @andersk said, I've restricted the package version of LXML like so
lxml >= 4.6.5, !=4.7.0, <=5.2.1

My build is working again now.

Trying this, the problem is not solved for us:
defusedxml==0.7.1
et-xmlfile==1.1.0
lxml==5.2.1
lxml_html_clean==0.1.1
xmlsec==1.3.14
xmltodict==0.12.0

still produces the uwsgi startup crash, while a normal python interpreter is fine (just as reported in the initial description). I have tried uwsgi 2.0.23 and 2.0.26 so far.
Making sure that libxml2-dev is NOT present in the system packages when uwsgi is being installed/built resolves the issue.

I came up with another workaround - compile uwsgi against libexpat instead of libxml2. You can do that by setting the UWSGI_PROFILE_OVERRIDE environment variable to xml=expat (or adding that part to it if you already have it set to something) for whatever command you use to install uwsgi, for example:
UWSGI_PROFILE_OVERRIDE=xml=expat pip install uwsgi

or
UWSGI_PROFILE_OVERRIDE="ssl=false;xml=expat" pip install uwsgi

Caveat: libexpat is supposedly slower than libxml2 (based on some old benchmarks found around the Internet), so if you're a heavy user of uWSGI features that depend on an XML parsing library, this may affect performance of your application. I am not sure what these features are, though.
Once your uwsgi is decoupled from libxml2, you should be able to use binary wheels for xmlsec and lxml. You should also be able to install the older version of xmlsec that didn't provide binary wheels, as long as you still have libxmlsec1-dev / libxml2-dev installed.

Thanks @D3X - that was a really good steer. IF you don't need XML support at all (it looks like it's only for supporting xml configuration of uwsgi, and... who does that??), you can:
UWSGI_PROFILE_OVERRIDE="xml=no" and it'll strip xml support altogether. From the uwsgi build system: https://github.com/unbit/uwsgi/blob/89cb161cda959697a4afe013f348b06646b960aa/uwsgiconfig.py#L1328-L1363


react-navigation error "invariant violation: invariant violation: scrollview child layout (["alignItems","justifyContent"]) must be applied through the contentContainerStyle prop"

I'm trying to use react-navigation but I get this error "invariant violation: invariant violation: scrollview child layout (["alignItems","justifyContent"]) must be applied through the contentContainerStyle prop"

I googled for solutions but all issues aren't related to react-navigation at all and I don't use anything else yet. I don't even understand the error.!

"react-native": "0.57.8"

"react-navigation": "^3.0.9"

"react-native-gesture-handler": "^1.0.12"

windows 10

android

redmi note 4 - android version 7.0

here are my codes

index.js

import {AppRegistry} from 'react-native'; import App from './App'; import {name as appName} from './app.json'; AppRegistry.registerComponent(appName, () => App);

App.js

import React, {Component} from 'react'; import {Platform, StyleSheet, Text, View} from 'react-native'; import {createAppContainer, createStackNavigator} from 'react-navigation'; import PostsScreen from './components/Posts'; import ToolsScreen from './components/Posts'; import FavouriteScreen from './components/Favourite'; const AppNavigator = createStackNavigator({   Posts: { screen: PostsScreen },   Tools: { screen: ToolsScreen },   Favourite: { screen: FavouriteScreen } }, {   initialRouteName: 'Posts',   }) const App = createAppContainer(AppNavigator); export default App;

Posts.js

import React, {Component} from 'react'; import {Platform, StyleSheet, Text, View} from 'react-native'; import { Container, Header, Content, Button } from 'native-base'; class PostsScreen extends Component {   render() {     const { navigate } = this.props.navigation;     return (       <Container>         <Content style={styles.content}>Posts Screen</Content>         <Button onPress= { ()=> navigate('Tools')} title="Tools"></Button>       </Container>     );   } } export default PostsScreen; const styles = StyleSheet.create({   content: {     flex: 1,     justifyContent: 'center',     alignItems: 'center',   }, });

Tools.js

import React, {Component} from 'react'; import {Platform, StyleSheet, Text, View} from 'react-native'; import { Container, Header, Content } from 'native-base'; class ToolsScreen extends Component {   render() {     return (       <Container>         <Content style={styles.content}>Tools Screen</Content>       </Container>     );   } } export default ToolsScreen; const styles = StyleSheet.create({   content: {     flex: 1,     justifyContent: 'center',     alignItems: 'center',   }, });

Please provide styles to the contentContainerStyle  instead of providing to ScrollView.

@strjoshi sorry, but I can't understand what do you mean. can you explain it more?

@strjoshi thanks! it works. but I still don't understand why, could you please tell me the reason?!

Please provide styles to the contentContainerStyle instead of providing to ScrollView.

A distinct lack of clear examples in the documentation, makes this statement confusing to me, please explain


New command: list API permissions for the current AAD app

Usage
m365 app permission list [options]
Description
Lists API permissions for the current AAD app
Options

Option
Description

-i, --appId [appId]
The app (client) ID of the Azure AD for which to list API permissions. Specify, if you have multiple Azure AD apps listed in the .m365rc.json file

Additional Info
This command get the ID of the Azure AD registration for which to list API permissions from the .m365rc.json file in the current directory. If the file is missing, is empty or its contents are malformed, the command will show an error. If there are multiple Azure AD apps in the file, the command will prompt the user to disambiguate. This is done interactively using inquirer. The command shows in one list application and delegated permissions as configured in the specified AAD app.
Since we'll be adding more app commands in the future, file handling and app disambiguation should be centralized so that it doesn't need to be reimplemented in each command.
Related to #2832

Command is code-complete and I'm working on tests


gwtmockito + gwtquery

One hurdle that I can't seem to get over when trying to unit test views is I often use gwtquery. Unfortunately, using gwtquery makes for untestable views.
Do you think a collaboration between you and @jDramaix would be possible in order to make gwtquery play nice with gwtmockito? gwtquery seems like a very popular library in the GWT world, so it would make sense to allow it within a unit test context.
Thanks a lot for your great work :)

@ekuefler I agree with you that GwtQuery is naturally very DOM-centric and plus they are static methods call in general where we cannot even verify. Unless we can make GwtMockito to work together with PowerMockito where we can delegate to use GwtMockitoTestRunner, which currently is not possible as both PowerMockito and GwtMockito's classloader modifcation(not sure if i got the terms correct) interferes with each other.
However that being said, the problem that is causing GwtMockito tests to fail when there is a Gquery code is due to the infamous JavaScriptObject#cast(). I suppose for now if you can help point out some workaround so that we can stub out all the GQuery objects to be a mock, then we will be okay,  just like how you get around the GWT.create issue.

Which class contains the call to JSO.cast()? A stack trace might be helpful. It's possible you can work around the problem in your test by annotating the test with @WithClassesToStub, passing the class that's making the cast() call. That will cause all methods in that class to be stubbed out so that it never has to do the cast. Of course, this could cause strange behavior in any class that depends on that class working in a particular way.

In GQuery.java there is cast happening there. If we tried to stub GQuery, we will fail eventually due to  the following limitation on mockito for "final":
public static final Class<Effects> Effects = GQuery.registerPlugin(
    Effects.class, new Plugin<Effects>() {
        public Effects init(GQuery gq) {
            return new Effects(gq);
        }
    });

Looks like the code you're referencing is from https://github.com/gwtquery/gwtquery/blob/master/gwtquery-core/src/main/java/com/google/gwt/query/client/plugins/Effects.java#L103, which is indeed doing a lot with statics, finals, and javascript casts that are going to interfere with mocking.
Have you tried annotating the test with @WithClassesToStub(GQuery.class)?  It's a sledgehammer though that will make pretty much all of GQuery not work, so you'll probably be pretty limited in how much your tests can do. But it might be enough if you're testing some business logic in a class that only uses GQuery incidentally.

@ekuefler: Ran recently into this issue and tried to add GQuery.class to @WithClassesToStub but ran into following issue:
java.lang.ExceptionInInitializerError
	at com.google.gwt.query.client.GQuery.<clinit>(GQuery.java:153)
	at com.gmi.nordborglab.browser.client.mvp.ApplicationView.<init>(ApplicationView.java:145)
	at com.gmi.nordborglab.browser.client.mvp.ApplicationViewTest.setUp(ApplicationViewTest.java:32)
...
Caused by: org.mockito.exceptions.base.MockitoException:
Cannot mock/spy class java.lang.Class
Mockito cannot mock/spy because :
 - final or anonymous class
	at com.google.gwtmockito.impl.StubGenerator.invoke(StubGenerator.java:116)
	at com.google.gwt.query.client.GQuery.registerPlugin(GQuery.java)
	at com.google.gwt.query.client.plugins.QueuePlugin.<clinit>(QueuePlugin.java:36)
	... 31 more

I also tried to add QueuePlugin to @WithClassesToStub but it does not help :-/


Fixed test deadlock in processor test

Pull Request Checklist
Please leverage this checklist as a reminder to address commonly occurring feedback when submitting a pull request to make sure your PR can be reviewed quickly:
See the detailed list in the contributing guide.

[ ] C++ Guidelines
[ ] Doxygen docs
[ ] Unit tests
[ ] No unwanted commits/changes
[ ] Descriptive title/description

[ ] PR is single purpose
[ ] Related issue listed

[ ] Comments in source
[ ] No typos
[ ] Update changelog
[ ] Not work-in-progress
[ ] External references or docs updated
[ ] Self review of PR done
[ ] Any breaking changes?

So, this only affected tests, and it is not possible/very unlikely that it affected actual code?
If it's not, let's add a changelog entry.

So, this only affected tests, and it is not possible/very unlikely that it affected actual code? If it's not, let's add a changelog entry.

No, it could affect code which used the processor.


Update v0.9 based on final changes to main branch

@Ayushdidit has kindly completed the last outstanding changes from the original migration of specs into markdown.
This brings the v0.9 branch up to date and ready to publish

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


retire mariadb102, replace with mariadb 105

self-explanatory

no.  Mariadb 10.5 is already supported, and mariadb 10.2 is supported for 2 more years.  just leave it for now.

no.  Mariadb 10.5 is already supported, and mariadb 10.2 is supported for 2 more years.  just leave it for now.


[Question] How to handle OnNewIntent() in WebUI project

Background and Description
I was following this tutorial from Microsoft for adding notifications to my mobile app. The app I'm building is just a webui.
MyApp/Main.razor:
<ContentView>
    <StackLayout>
        <BlazorWebView ContentRoot="WebUI/wwwroot" VerticalOptions="LayoutOptions.FillAndExpand">
            <MyApp.WebUI.App />
        </BlazorWebView>

    </StackLayout>
</ContentView>

After setting up project in Firebase and notification hub in Azure I was implementing the Xamarin Forms functionality and had an error.
Here in this code snippet it overrides onNewIntent:
protected override void OnNewIntent(Intent intent)
    {
        if (intent.Extras != null)
        {
            var message = intent.GetStringExtra("message");
            (App.Current.MainPage as MainPage)?.AddMessage(message);
        }

        base.OnNewIntent(intent);
    }

Problem
MainPage in (App.Current.MainPage as MainPage)?.AddMessage(message); is the name of the xaml file in shared client project in the example Xamarin Forms Project. However in my project after changing MainPage to MyApp.Main I am getting this error:
Cannot convert type 'Xamarin.Forms.Page' to 'MyApp.Main' via a reference conversion, boxing conversion, unboxing conversion, wrapping conversion, or null type conversion
My understanding is that I should point to my main page, so after I click to notification that event should add the message to my main page. Since I don't use xaml files I tried to point my entry point (not the App.cs but Main.razor) How should I proceed from here?
I believe I can use the notifications with WebUI, can't I? Any thoughts on this?

Hi @ktaze1 can you show more of the code that you have? Or upload your whole project as a GitHub repo?
What is the base class of MyApp.Main in your project? I'm guessing that it's the compiled Blazor page, in which case it won't derive from Xamarin.Forms.Page, so the code won't compile.
I've written up a small and simple sample that shows a more Blazor-oriented way to write this type of pattern.
The repo is here: https://github.com/Eilon/AddMessageNotificationSample
But to see the relevant changes for this, just look at this particular commit: https://github.com/Eilon/AddMessageNotificationSample/commit/fab66fd31bbbba8a13bf524f5c9e65a38c8d78dc
And then this is the SendMessageToMainPage method that you'd use whenever your app needs to "receive" a message and show it somewhere: https://github.com/Eilon/AddMessageNotificationSample/blob/main/AddMessageNotificationSample/App.cs#L28-L34
This particular sample shows using native UI, but the exact same pattern works with Web UI as well. You would remove the MessageList.razor that I show in this sample and instead do that in WebUI using HTML, but everything else should be the exact same in terms of AppState and change notifications.
I'm closing this issue because I think it covers everything, but feel free to let me know if you have any further questions. Thanks!


Onefetch languages checklist

This is the list of languages supported by onefetch, as of when this issue was created. This tool should support most of these in order to replace tokei.

[x] Abap
[x] ABNF
[x] Ada
[x] Assembly
[x] AutoHotKey
[x] Bash This will be Shell
[x] C
[x] Ceylon
[x] Clojure
[x] CMake
[x] CoffeeScript
[x] ColdFusion
[x] Coq
[x] Cpp
[x] Crystal
[x] CSharp
[x] Css
[x] D
[x] Dart
[x] Dockerfile
[x] Elisp
[x] Elixir
[x] Elm
[x] Emojicode
[ ] Erlang
[x] Fish This will be Shell
[ ] Forth
[ ] FortranLegacy
[ ] FortranModern
[ ] FSharp
[ ] GdScript
[ ] Glsl
[x] Go
[x] Graphql
[ ] Groovy
[x] Haskell
[ ] Haxe
[ ] Hcl
[ ] Hlsl
[ ] HolyC
[x] Html
[ ] Idris
[x] Java
[x] JavaScript
[x] Json
[ ] Jsonnet
[x] Jsx (NOTE: Like linguist, this will probably be combined with JavaScript)
[x] Julia
[x] Jupyter
[x] Kotlin
[ ] Lisp
[ ] LLVM
[x] Lua
[x] Makefile
[x] Markdown
[x] Nim
[ ] Nix
[ ] ObjectiveC
[ ] OCaml
[ ] Odin
[ ] Org
[ ] Pascal
[ ] Perl
[ ] Perl6
[x] Php
[x] PowerShell
[ ] Processing
[ ] Prolog
[ ] Protobuf
[ ] PureScript
[x] Python
[ ] Qml
[ ] R
[ ] Racket
[ ] Renpy
[x] Ruby
[x] Rust
[x] Sass
[ ] Scala
[ ] Scheme
[x] Sh (Shell)
[x] Solidity
[x] Sql
[x] Svelte
[ ] Swift
[ ] SystemVerilog
[ ] Tcl
[ ] Tex
[x] Toml
[x] Tsx (See note on JSX)
[x] TypeScript
[ ] Vala
[ ] Verilog
[ ] Vhdl
[x] VimScript
[ ] VisualBasic
[x] Vue
[ ] WebAssembly
[ ] Wolfram
[ ] Xaml
[x] Xml
[ ] XSL
[x] Yaml
[x] Zig
[ ] Zsh

Made with:
#!/usr/bin/env ruby
require 'yaml'

filepath = ARGV[0]

langs = YAML.load_file(filepath)

langs.keys.each do |lang|
  puts "- [ ] #{lang}"
end

script.rb path/to/onefetch/languages.yaml

Related: #22

@atluft Pinging you since you made https://github.com/o2sh/onefetch/pull/789
I'm completely unfamiliar with Verilog. Would you be willing to make a PR to add support? If/when onefetch switches to this, then onefetch will be able to detect *.v as verilog :wink:

@o2sh, @jake-87 pinging you guys since you added support for fortran modern and fortran legacy. Not familiar with Fortran at all. Is there a reason that onefetch separated Fortran into modern and legacy besides the fact that that's what tokei did? Is the difference between the two significant enough to be considered different languages?
Also, I'm noticing that some of the extensions tokei uses for modern are mapped to Fortran Free Form in linguist.

@spenserblack To make a long story short (and off the top of my head, mostly), they were implemented as different things mostly because they're really quite different languages - you can't take legacy fortran code and make it compile in modern fortran without quite a few changes, and vice-versa (The syntax may initially look similar, but there's many differences in how you structure it and what restrictions are placed on the programmer). If they're easy to tell apart (and they are, because they use different file extensions), then it makes more sense to consider them as seperate languages.
As for whether "Fortran Free Form" would be a better name, you could consider it as such, although I'd personally expect "Legacy FORTRAN" to be "Fortran fixed form", which seems confusing, so maybe "Legacy" and "Modern" are better names.

@jake-87 Thanks for the info!

Hi @alessandroasm! I'm pinging you because you've previously contributed to onefetch to support LLVM. We're considering changing our language detection tool. If you're interested, we'd love your help!

Hi @spsandwichman! I'm pinging you because you've previously contributed to onefetch to support Odin. We're considering changing our language detection tool to gengo. Gengo needs a bit more language support, so, if you're interested, we'd love your help!

Hi @jephthai! I'm pinging you because you've previously contributed to onefetch to support Forth. We're considering https://github.com/o2sh/onefetch/pull/1152. Gengo needs a bit more language support, so, if you're interested, we'd love your help!

Hi @LordMZTE! I'm pinging you because you've previously contributed to onefetch to support Haxe. We're considering changing our language detection tool to gengo. Gengo needs a bit more language support, so, if you're interested, we'd love your help!

Hi @PsypherPunk! I'm pinging you because you've previously contributed to onefetch to support HCL. We're considering changing our language detection tool to gengo. Gengo needs a bit more language support, so, if you're interested, we'd love your help!

Hi @HallerPatrick! I'm pinging you because you've previously contributed to onefetch to support ProtoBuf. We're considering changing our language detection tool to gengo. Gengo needs a bit more language support, so, if you're interested, we'd love your help!
Or maybe I should ping @0rax? No worries if you don't know any Rust: I'm just pinging people that are likely familiar with the language to expedite getting Gengo into Onefetch and finally resolving https://github.com/o2sh/onefetch/issues/26.

Hi @rcon56! I'm pinging you because you've previously contributed to onefetch to support Wolfram. We're considering changing our language detection tool to gengo. Gengo needs a bit more language support, so, if you're interested, we'd love your help!

Hi @wigust! I'm pinging you because you've previously contributed to onefetch to support Scheme. We're considering changing our language detection tool to gengo. Gengo needs a bit more language support, so, if you're interested, we'd love your help!

Hi @progDes007! I'm pinging you because you've previously contributed to onefetch to support HLSL. We're considering changing our language detection tool to gengo. Gengo needs a bit more language support, so, if you're interested, we'd love your help!

Checking tokei, yes, it seems that Lisp is Common Lisp: https://github.com/XAMPPRocky/tokei/pull/717. Thanks for pointing that out!

****


Support elmjutsu (Patreon, PayPal, GitHub Sponsors)

Hi there!
First I want to thank you for making elmjutsu! I realize it is critical to my Elm development workflow. I have tried the extensions for VS Code and IntelliJ, but they lack a few key features that elmjutsu has.
The key features for me are all Special Completions. This significantly speeds up my development process and saves me from RSI flare-ups!
Here are some of my favorite ones:

Auto-complete case statements and model construction
Auto-generate encoders/decoders

With that said, how can I support the great work you've done? I didn't see a way to support you, such as a Patreon, PayPal, or GitHub Sponsors link.

Hi @absynce,
Thank you for the very kind words :heart:
I can relate with your RSI issues since I had mild carpal tunnel syndrome before.  That's also part of the reason why I added lots of autocompletions :D  Auto-generation of encoders/decoders seems to be a favorite.  A possible feature in the future is using voice to code haha.
As for supporting the project, submitting issues (bugs, suggestions, etc.) is good enough for me :)

Okay, then I will close this, keep an eye out for issues, and share suggestions. 😃
How are you imagining voice-to-code would work in this case? I tried doing that a bit with Dragon NaturallySpeaking, but it frustrated me.

Hi @absynce,
For voice-to-code, I was thinking static typing would help in narrowing down the possible actions each step of the way.  For example, when I say "String.repeat", it would know that the next would most probably be an integer and the ASR would then place higher priorities to int variables in scope or actual integers.  It's also possible to train the ASR with the symbol names from the imported packages.  These are just ideas so I don't know how hard or easy they are to implement haha.
What's frustrating with voice-to-code in your experience?

Hi @halohalospecial,
Those sound like useful ideas! A good way to find out how easy they are to implement is to try. 😄
With Dragon, it was designed more for writing text than code. This made it difficult to use in a code editor to input correct syntax or variables. Even using it for writing email was frustrating, because it seemed to lag, which would distract me, and lead me to make silly mistakes. However, other folks have made it work. I'm excited to see "Voice Driven Development: Who needs a keyboard anyway?" by Emily Shea at Strange Loop to inspire me to try again.


Add Product Model and Family Variant for Akeneo's latest version 2.3

Hello,
Thank you for the project. I made a quite a bit of improvements. It was too late before I realized that I should have created multiple pull requests instead. Sorry about that.

Add ProductModel and Family Variant endpoints
Upgrade to Net Standard 2.0
Replace LibLog file with NuGet latest package
Enhance pagination perfomance by Search-After method
https://api.akeneo.com/documentation/pagination.html
From Akeneo:

Do note that the Search after method is better than Offset method in term of performances. It is strongly recommended to use it when requesting entities that have high data volume such as the products, the product models, the published products and the assets.

@progunnerr , @dsonnet is the method GetAllAsync working? I'm trying to get all "products" per 100 items, but the method doesn't respond the second time it tries to get items. I also tried lowering the items per call but without success.

@dsonnet Will add the support -an overload method  should do.
@denhul Hi, trying to understand the issue. So the GetAllSync method will return all the products in the first call. Why is there a need for the second call? Can you please also explain - "get all "products" per 100 items"?

@progunnerr: if you look at the function itself, it's inside a do while and inside the do while it calls the function GetManyAsync with a limit (max 100 results per call).
I noticed the Akeneo version is an older version and an update would probably solve my issue. The serialization of a product crashed because it contained an "amount" with value null (PIM-7746: Fix issue when an attribute code is numeric in version 2.3.12 (2018-10-17)). So I've asked them to do an update of the system.


Meter management

@jamesjefferies is there something I need to do with the school_times functionality on the schools#new form? I just looks blank and there are no times to fill in.

@jamesjefferies is there something I need to do with the school_times functionality on the schools#new form? I just looks blank and there are no times to fill in.

This is on the 'we need to fix school onboarding' process - ideally, when you create a new school, it creates your school times for you - I don't think it does that at the moment, it's a behind the scenes task. So I don't think it needs doing as part of this PR, but it is something on the onboarding list which we might be best looking at sooner rather than later (due to new schools)

@jamesjefferies is there something I need to do with the school_times functionality on the schools#new form? I just looks blank and there are no times to fill in.

This is on the 'we need to fix school onboarding' process - ideally, when you create a new school, it creates your school times for you - I don't think it does that at the moment, it's a behind the scenes task. So I don't think it needs doing as part of this PR, but it is something on the onboarding list which we might be best looking at sooner rather than later (due to new schools)

Ok, thanks.

@jamesjefferies I've merged this into aws-eb-test and deployed.


Add plugin scores caching

The "update_docs" lane went down from 10 minutes to 1 and a half
minutes, and the "plugin_scores" action went down from 9:40
minutes to a little over 1 minute 🎉
The other advantage is that there are fewer requests to the GitHub API made ❤

@milch, I see what you mean, but I think that not having the name as the key would make the file hard to read in case you need to debug it. And wouldn't the delete unused entries part add extra complexity too?

Right, deleting unused entries would definitely complicate things a bit, but it's a nice thing to have regardless
The name could obviously still be included in the hash. But like I said, I'm fine with merging this either way


Bug: Building with build-tools v29.0.2

Description
A problem occurred configuring project ':lottie-react-native'.
> Failed to install the following Android SDK packages as some licences have not been accepted.
     build-tools;29.0.2 Android SDK Build-Tools 29.0.2
     platforms;android-29 Android SDK Platform 29
  To build this project, accept the SDK license agreements and install the missing components using the Android Studio SDK Manager.
  Alternatively, to transfer the license agreements from one workstation to another, see http://d.android.com/r/studio-ui/export-licenses.html

Steps to Reproduce
yarn android
Versions
node - v14.15.3
react native - 0.64.0-rc.2
emulator - 30

Hello @productfrontenddeveloper ,
I'm having the same issue. Did you find any solution for this?
Thanks!


feat: set sequence fov size in engine setup_sequence + add test

This PR sets the useq.MDASequence _fov_size attribute (https://github.com/pymmcore-plus/useq-schema/blob/8bac21de522dd09dc5302fb11f8000ce87eb95e9/src/useq/_mda_sequence.py#LL120C5-L120C65) in the MDAEngine  when the setup_sequence method is called + test
related to closed PR https://github.com/pymmcore-plus/pymmcore-widgets/pull/142.

@fdrgsp , is this ready to go and still relevant?

@fdrgsp , is this ready to go and still relevant?

Yes, it is ready to go. now.


Erratum in docs

Summary
What change needs making?
In the docs, recursion section has an erratum in the Workflow template
      - name: tails                     # keep flipping coins if "tails"
        template: coinflip
        when: "{{steps.flip-coin.outputs.result}} == tails"

Template must be flip-coin
Thanks in advance and BTW, very nice work with argo workflow!!!

Could you like to submit a PR to fix?

Can I work on this ?


Prospector not killed on VSCode close

Environment data

VS Code version: 1.27.2
Extension version (available under the Extensions sidebar): 2018.8.0
OS and version: Linux
Python version (& distribution if applicable, e.g. Anaconda): python 3.6
Type of virtual environment used (N/A | venv | virtualenv | conda | ...): pipenv
Relevant/affected Python packages and their versions: prospector 1.1.2

Actual behavior
Sometimes prospector (because of pylint, see PyCQA/pylint#2198) can take a VERY long time to run.
After closing VSCode, prospector continued to run.
Expected  behavior
On closing VSCode, the linter should be stopped.
Steps to reproduce:

I opened one file from pandas, I suspect that vscode started prospector on it (is it actually normal that the linter is run on a file outside my project?)
I closed VSCode
A process was continuing to run (and eat all my CPU ;):

/home/victor/.local/share/virtualenvs/bretl-YRwJFXpT/bin/python -m prospector --absolute-paths --output-format=json frame.py

If the file is outside of your workspace or not one you explicitly opened in the editor then we are not triggering the linter on it and it's prospector itself doing this.
If I'm misunderstanding the issue and the file is actually in your workspace then let me know and I will re-open the issue.

@brettcannon I just verified, and it is vscode-python that is running prospector on files that are outside of the workspace. If this is not meant to happen, I can open another issue.
Just for the record, I added the following line just before there:
this.outputChannel.append(`running for ${relativePath}`);

And when I open (via ctrl+click on a type) pd.DataFrames (or other types in my python path but not in my workspace), I see the following output:
running for frame.py##########Linting Output - prospector##########

So it is clearly vscode-python running this.
Furthermore, even if it wasn't vscode-python running this, I expect that when vscode-python is running a process, that it kills it when closing vscode: when I move frame.py inside my workspace, I open it and then close vscode, the prospector process is not closed.
The original issue description still holds and I think should be reopened.

If you are going to the definition then you are implicitly opening the file, so that's what is triggering the linting of the file outside of your workspace.

If you are going to the definition then you are implicitly opening the file, so that's what is triggering the linting of the file outside of your workspace.

That's what I understood yes. Anyway this ticket is not about that, @brettcannon should I open another issue to discuss maybe improving the plugin not to execute linting on file outside of the workspace?

@victornoel yes please.

Can you please verify, @DonJayamanne ?

I can confirm, we do not kill linters that take a long time to run, even when VSC is restarted. I.e. we do not add handlers to kill such processes.

Solution: Global fix (add hooks into process.ts file to kill the process when VSC restarts.
Will need a handle for IDisposable inside proccess.ts.

Solution:

Keep track of all processes spawned in ProcessService
Add IDisposableRegistry as a DI dependency
Kill all processes in dispose method.

Closing in favor of https://github.com/Microsoft/vscode-python/issues/3331


🐞 Saving a file does not save pasted content

Description
All text is lost when saving as Plain Text File.
To Reproduce

open new CodeEdit window
type some text
save as Plain Text File

The file is saved but is empty - no text is found. The given file name is used and the file created at the selected location.
Expected behavior
Data should not be lost on save and a Plain Text File should be created with all the text that was there prior to saving.
Version information
CodeEdit: 1.0 (0)
macOS: 13.1
Additional context
No response

@foss- this appears to be happening with other filetypes as well. This feels like a pretty serious regression...

I'm not able to replicate this...

@matthijseikelenboom Maybe share the steps you are taking when attempting to reproduce. Still reproduce here with 0.0.1 (15).

I'm not able to replicate this either. Step To Reproduce:

Open CodeEdit
Create a new file at Welcome Window
Type some text
Save as Plain Text File (.txt)

Tested on CodeEdit 0.0.1-alpha.15

Confirming above steps work now.
I am still able to reproduce the issue however with:

open new file
click into first line
paste any text
save as plain text file

Empty file is stored.

I can replicate the problem with the new steps. But it seems that anything pasted into the editor won't be saved, the same problem for existing files.

This seems to be related to copy/paste/undo/redo behavior. Try to undo your paste and you'll see it won't work. So it looks like it doesn't really gets pasted in the document in the first place.

That is fascinating....

Not sure what change resolved this problem, but it is gone in Version 0.0.3-alpha (32). Closing.


[RFC] Adding ConnectionGraph altering and irEmiting APIs

Type of issue: feature request
What is the use case for changing the behavior?
Impact: API addition (no impact on existing code)
Development Phase: proposal
I'm using this CircuitGraph from this branch to write my own Transform.(cherry pick from this branch.)
It's really convenience to trace the sink and source of the register.
However, I found there might still need some APIs to modify the graph(not just analysis).
Currently I need to pass Statement to ConnectionGraph.asTarget(if we can provide a targetLookup like irLookup might be more convenient) maping Statement to Target in the CircuitGraph. After this, I use some methods of CircuitGraph to trace the sinks and sources, analyze them and finally use irLookup to map Target to FirrtlNode, constructing a new FirrtlNode by hand.
I think it might cost a lot to find each Statement in Circuit again and again. I wonder if it is possible for us to provide a set of APIs to alter CircuitGraph directly?
I only find API mapping Circuit to ConnectionGraph
def buildCircuitGraph(circuit: Circuit): ConnectionGraph

while not exist
def buildCircuit(circuit: ConnectionGraph): Circuit

and we might also need some new ideas to provide a higher API to operate ConnectionGraph.
This can provide a new way for Transform, like altIR tried, I think this can provide a higher abstraction level than DiGraph, to make Transform, which need connection analysis(like ConstantPropogation), more simple and elegance.

I'm glad you found that useful! I understand the desire to modify CircuitGraph directly and have those changes represent themselves in the AST. I haven't spent any time thinking about it, but I do have a question. Would it be possible to first do all of the graph traversals (source/sinks) and collect the results in an intermediate datastructure, and then traverse the AST to apply all of the changes at once?  This solves the per-query iteration through the AST to collect the Statement.

Would it be possible to first do all of the graph traversals (source/sinks) and collect the results in an intermediate datastructure, and then traverse the AST to apply all of the changes at once?

Yes that's much helpful for currently Transform writing! Like I said that ConnectionGraph can be converted by Circuit with the buildCircuitGraph function, but can not generate a new Circuit.
This might need a new set of APIs to modify the ConnectionGraph intermediate datastructure and a converter for Circuit generation, that sounds like a large work.
This might provide a new IR like https://github.com/freechipsproject/firrtl/pull/671 tried to, but a more integrated way to do that.

I'm still concerned about shifting the ground truth from the IR to some other data structure. I get nervous about adding additional converters to and from the IR. I tend to view this activity as equivalent to writing a new backend and frontend.
It's a lot simpler to assume we have one ground truth, the IR, and then "analyses" that produce data structures derived from the IR. The user then uses @azidar's approach of:

Perform the analysis
Build up data structures necessary to apply modifications
Apply all modifications

The problem with this approach is that it's low-level. A transform writer has to deal with manipulating the IR.
One way to help with this, and as an alternative way of viewing what this RFC is asking for, would be to build out a type hierarchy under Transform of classes that expose higher-level APIs for transform writers. These may require analyses passes to be run earlier (which the dependency API allows us to codify). E.g., a certain transform may provide APIs for manipulating the IR that require CircuitGraph information. These APIs are really manipulating the IR, but they provide a more targeted functionality for transform writers (and potentially less bugs in transforms).
LLVM does something like this with it's different types of passes, e.g., ones for manipulating basic blocks or functions only. Note: LLVM's aim here, I believe, is more to have passes expose what they're doing so that it can group and chain passes together. For passes manipulating functions, the optimizations can't cross a function boundary, so you can take two function passes, make a larger pass, and then apply the optimizations of the first and the second to each function serially.
In summary:

How can we make transform writing easier?
What APIs can we expose to users and what analyses do they require?
Can we do this without introducing another IR?

I agree with @seldridge that introducing a new IR could be a bad idea which might also introduce a formal verification problem and can't compare the difference between the IR transforms.
https://github.com/freechipsproject/firrtl/issues/1132 provides a better idea than introducing a new IR. Sorry for my wrong direction.
So how about introduce CircuitGraph as information that https://github.com/freechipsproject/firrtl/issues/1132 needed, add new Transform subclass that prerequire a, for example, CircuitGraphAnalysisTransform, and expose the CircuitGraph API analysis API for Transform developer, as for AST modification, remains the old way for a better coherence.
This analysis can provide a better way for ConstantPropagation implementation, which takes me a lot of time to understand :P.
And it also can provide a better way in connectivity-based-renamed for a readable AST(rather than a lot of 'T' name)

closed since #1603 merged.


Cpu consumption

How can I view the cpu consumption of the pox controller?

What is the name of the process associated with the POX controller?
How I can find the pid of the POX controller? In mininet i can run dump command?
Thanks

POX is written in Python, so the process name is probably whatever your Python interpreter is called (e.g., python3).
I guess you find the PID the same way you find any PID.  If Mininet is running POX, then it seems like Mininet would be in the best position to know.  Or you could use POX's misc.pidfile component to save the PID to a file...?

POX is written in Python, so the process name is probably whatever your Python interpreter is called (e.g., python3).
I guess you find the PID the same way you find any PID. If Mininet is running POX, then it seems like Mininet would be in the best position to know. Or you could use POX's misc.pidfile component to save the PID to a file...?

Could be "python3 -u /home/mininet/pox/pox.py forwarding.l3_detectionEntropy"?

Yes, that's certainly POX.

Yes, that's certainly POX.

Thank you very much!


Add bibliography entry workflow

We need a workflow to add a bibliography entry. We don't want to build a reference manager, so we just want to support some options to integrate existing reference manager outputs.
For a start we could do:

CrossRef search
Paste a BibTex entry (maybe also multiple entries)

Challenges:

Map CrossRes entry to JATS  element.
Map BibTex to JATS  element
Make this configurable (so publishers can choose which strategies they want to enable)

Let's do #60 #59 and #58 first. This is not too urgent. @jure but maybe you are interested in having this in the author interface. Still let's to the XML solution first, then you have a starting point.


hex should support the alpha channel

Thanks for the library! I saw that currently alpha is always set to FF, which limits its usefulness. Could you update so that alpha value could also be supported? e.g. when the hex has 8 digits, use the last 2 as alpha, if the hex has 6 digits, default to FF

Hi @hyouuu,
I don't have enough time for the moment, but this is a good idea. I'll update the lib in the next weeks,  or if you have time you are welcomed to contribute.
Best

The last version now support the alpha channel with the hex strings.


Give info what configuration is missing to capture errors

When the Raven client starts up it emits a log line staging Raven xxx configured not to capture errors.
I was too excited to follow the instructions when signing up on sentry.io, so I missed the server configuration. Would it be helpful to state the reason for not capturing errors (like: "no server configured" or "environment not listed")? If yes, I'm happy to contribute a PR!

@clupprich Absolutely!

Closed by #602 - this will be release in 2.2.0 very soon.


[FEATURE REQ] Support sendX5c in ClientCertificateCredential to allow SubjectName+issuer validation

Library or service name.
Azure.Identity
Is your feature request related to a problem? Please describe.
When requesting a token via AuthenticationContext.AcquireTokenAsync (in the Microsoft.IdentityModel.Clients.ActiveDirectory assembly), there are overloads that accept the sendX5c parameter:

This parameter enables application developers to achieve easy certificates roll-over in Azure AD: setting this parameter to true will send the public certificate to Azure AD along with the token request, so that Azure AD can use it to validate the subject name based on a trusted issuer policy. This saves the application admin from the need to explicitly manage the certificate rollover (either via portal or powershell/CLI operation)

This is critical for auto rotation scenarios, where you have your cert auto-renewed in KeyVault and you want your certs to maintain their access to their AAD apps following such renewals.
There is currently no way that I can tell so specify this parameter in Azure.Identity's ClientCertificateCredential, forcing users to drop to the lower AuthenticationContext level.

@ohadschn Thanks for filling this issue. Adding support for SubjectName / Issuer authentication with the ClientCertificateCredential is currently on our backlog. While support for this did not make it into our current round of previews for the Azure.Identity library, I expect this will be one of the first features we work on after we GA what is currently in preview. I hope to have at least a preview of SubjectName / Issuer support ealry this fall. I'll update this issue once we have more information available.

@schaabs Is there a way we can create AzureCredentials from an access token ? If it was possible, we could fetch the access token using ADAL (sending sendX5c:true) and use it to create the credentials.

Use the solution here before Azure.Identity support SendX5c https://github.com/Azure/azure-sdk-for-net/issues/12864#issuecomment-669291729

This has been implemented in #14636, and is available in 1.3.0-beta.1 or later. The feature is still in preview so if you have any feedback on its usability please open an issue and let us know.


How do I turn dns_parser::Packet back into bytes?

How do I serialize it back?
I want the library to be able to round-trip DNS packet from bytes to structured representation and back.

There is no such thing out of the box. We can probably add one, but I guess there are few more complications:

Some hop-by-hop things might need to be changed when forwarding, like EDNS0 records
AA bit and authority header might need to be changed as far as I understand
And request_id have to be updated
Also, the structure of Packet itself doesn't make it easy to edit things in the packet (i.e. slices pointing to the original buffer)

All of that makes it doubtful to have a generic round-trip function. But it should be easy enough to write the one for your specific use case. We might provide some helper functions, though. So contributions are welcome.

Is owned, static PacketBuf and corresponding bytes generation function, maybe with "forwarding helper" function which modifies things as you suggested in scope of this crate of better be done as separate crate?

Implemented deep_clone on multiple types, leading to parallel hierarchy of PacketBuf, QuesitonBuf, RDataBuf and so on. Started implementing write_to that converts those types back into bytes.
Is pull request welcome or it's better to live in a separate fork?

Hi!
Sorry, for a late response. Please open a PR! It's easier to judge looking at the code.


sync with epic/11ty

:tada: This PR is included in version 3.0.0-beta.15 :tada:
The release is available on:

npm package (@beta dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


add brotli_effort option

Currently, when doing JPEG recompression, the jbrd is brotli-compressed with effort 11 (hardcoded), and when brob boxes are created, they are brotli-compressed with effort 9 (also hardcoded). This adds an encoder option to set a custom brotli effort for the uses of brotli in the JPEG XL file format.

The default Brotli effort is still hardcoded in cjxl. What about making it dependent on cjxl's effort (of course with possibility to override manually)?

The default Brotli effort is still hardcoded in cjxl. What about making it dependent on cjxl's effort (of course with possibility to override manually)?

This PR does add an option --brotli_effort to cjxl.

The default Brotli effort is still hardcoded in cjxl. What about making it dependent on cjxl's effort (of course with possibility to override manually)?

This PR does add an option --brotli_effort to cjxl.

I might be wrong, but from what I've seen --brotli-effort is an independent option which defaults to hardcoded 9. What I propose is to couple it with cjxl's --effort option (just like some encoding options are disabled/enabled by default based on --effort).

Ah, that makes sense, yes.

Updated to have a default of -1, which means it will use a default value of 2+effort for jbrd and 4 for brob.

Updated to have a default of -1, which means it will use a default value of 2+effort for jbrd and 4 for brob.

I smell some trouble with jbrd when maximum --effort will be increased above 9...

Updated to have a default of -1, which means it will use a default value of 2+effort for jbrd and 4 for brob.

I smell some trouble with jbrd when maximum --effort will be increased above 9...

If and when we change the range of effort, we'll anyway have to go through all places where it is used, to make sure things still make sense. Good point though.