Unexpected scaling of sharding/pmap

Description
If I were to run a constant size function and scale it linearly across more and more CPUs/GPUs (just running the same function and the same input again on another device), I would expect the time to execute to stay roughly the same since each CPU is just doing the same computation. There would be some overhead due potentially due to arrays moving around in memory/dispact/collecting but if my arrays are O(10 floats) this would be tiny I imagine. However, if I do this in jax with pmap or sharding on CPU or GPU I see that the time noticeably increases with more devices. Is this something to do with how jax manages distribution or something I am doing wrong?
Here is the example code:
import jax
import jax.numpy as jnp
import jax.random as jr
import matplotlib.pyplot as plt
import multiprocessing
import numpy as np
import os
import time

import jax.experimental.mesh_utils as mesh_utils
import jax.sharding as jshard

devices_to_use = multiprocessing.cpu_count()

os.environ["XLA_FLAGS"] = "--xla_force_host_platform_device_count={}".format(devices_to_use)
print(jax.devices())

def vectorized_solve(y0, v):
    return jax.vmap(solve, in_axes=(0, None))(y0, v)

def solve(init, var):
    return jnp.mean(init @ var)

n_per_device = 100
problem_size = 20
all_devices_to_use = [i for i in range(1, 7)]

all_total_traj = []
all_timings_aux = []
all_timings = []
y0s = []

vectorized_jit = jax.jit(vectorized_solve)

key = jax.random.PRNGKey(42)
reps = 500

for devices_to_use in all_devices_to_use:

    devices = jax.devices("gpu")[:devices_to_use]
    print(len(devices))
    device_mesh = mesh_utils.create_device_mesh((len(devices), 1), devices)
    sharding = jshard.PositionalSharding(devices).reshape((len(devices), 1))
    sharding_replicate = sharding.replicate()

    n_traj_total = len(devices) * n_per_device

    y_0 = jnp.ones((n_traj_total, problem_size))
    y_0 = y_0 + jax.random.uniform(key, shape=y_0.shape)

    y0_shard = jax.device_put(y_0, sharding).block_until_ready()

    var = jax.random.uniform(key, shape=(problem_size, 5))
    var_shard = jax.device_put(var, sharding_replicate).block_until_ready()

    _ = vectorized_jit(y0_shard, var_shard).block_until_ready()
    tot = 0
    for i in range(reps):
        start_time = time.time()
        results = vectorized_jit(y0_shard, var_shard).block_until_ready()
        end_time = time.time()
        tot += (end_time - start_time)
    tot /= reps
    all_timings.append(tot)

    pmap = jax.pmap(vectorized_solve, in_axes=(0, None), devices=devices)
    y_0 = y_0.reshape((len(devices), n_per_device, problem_size))
    _ = pmap(y_0, var).block_until_ready()

    tot = 0
    for i in range(reps):
        start_time = time.time()
        results = pmap(y_0, var).block_until_ready()
        end_time = time.time()
        tot += (end_time - start_time)
    tot /= reps

    all_timings_aux.append(tot)

fig, axs = plt.subplots()
axs.plot(all_devices_to_use, all_timings, linestyle="--", marker="o", label="shard eval")
axs.plot(all_devices_to_use, all_timings_aux, linestyle="--", marker="o", label="pmap eval")
axs.legend()
axs.set_xlabel("Number of devices")
axs.set_ylabel("Total Time")
axs.set_yscale("log")
fig.tight_layout()
plt.show()

GPU:

CPU:

In my mind, these lines should be almost flat. The arrays getting returned are very small and the arrays getting sharded are also very small.
As an even more trivial example, I took the code from the docs on sharding. If I do 8 arrays on 8 devices it is slower than doing 4 arrays on 4 devices (by a noticeable margin). This I find to be very surprising.

System info (python version, jaxlib version, accelerator, etc.)
jax:    0.4.26
jaxlib: 0.4.26
numpy:  1.26.4
python: 3.10.12 (main, Nov 20 2023, 15:14:05) [GCC 11.4.0]
jax.devices (6 total, 6 local): [cuda(id=0) cuda(id=1) ... cuda(id=4) cuda(id=5)]
process_count: 1

release='5.15.0-89-generic', version='#99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023', machine='x86_64')

My hypothesis is that in this case the main bottleneck is communication and not compute, since your input sizes are so small. Communication cost scales with the number of devices so the more devices there are the slower the operation is - e.g. if the devices are connected in a ring topology it would take O(# devices) time to perform an all-reduce to compute the mean over all values.
If you scale up the size of the inputs the computation would likely become compute bound and the problem would go away. For example, with the sharding docs example you pasted below, running on a pod of 8 TPUs gets you the following numbers:
Input size: (1024 * 8, 1024 * 8)
8 devices
5 loops, best of 5: 510 µs per loop
4 devices
5 loops, best of 5: 662 µs per loop
Input size: (1024 * 8 * 10, 1024 * 8)
8 devices on
5 loops, best of 5: 2.39 ms per loop
4 devices
5 loops, best of 5: 4.41 ms per loop
As you can see, using 4 devices takes about twice as long as using 8 devices, which is expected.


bug: Docker build failing on npm install pnpm

I run into this error on the RUN npm install pnpm of the Dockerfile both when I attempt to run docker build -t da-service . locally as well as with VS Code Dev Containers:
ERROR: failed to solve: process "/bin/sh -c npm install pnpm" did not complete successfully: exit code: 1

Details
[+] Building 72.0s (11/14)
 => [internal] load .dockerignore                                                                                0.0s
 => => transferring context: 123B                                                                                0.0s
 => [internal] load build definition from Dockerfile                                                                                0.0s
 => => transferring dockerfile: 429B                                                                                0.0s
 => [internal] load metadata for docker.io/library/node:18.14-alpine                                                                                1.1s
 => [ 1/10] FROM docker.io/library/node:18.14-alpine@sha256:f8a51c36b0be7434bbf867d4a08decf0100e656203d893b9b0f8b1fe9e40daea                            0.0s
 => [internal] load build context                                                                                0.0s
 => => transferring context: 383.18kB                                                                                0.0s
 => CACHED [ 2/10] WORKDIR /usr/src/app                                                                                0.0s
 => CACHED [ 3/10] COPY package*.json ./                                                                                0.0s
 => CACHED [ 4/10] COPY tsconfig.json ./                                                                                0.0s
 => CACHED [ 5/10] COPY src ./src                                                                                0.0s
 => CACHED [ 6/10] COPY .env ./                                                                                0.0s
 => ERROR [ 7/10] RUN npm install pnpm                                                                                70.8s
------
 > [ 7/10] RUN npm install pnpm:
#0 62.30 npm WARN deprecated<EMAIL_ADDRESS>Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.
#0 62.61 npm WARN deprecated<EMAIL_ADDRESS>This functionality has been moved to @npmcli/fs
#0 68.46 npm WARN deprecated<EMAIL_ADDRESS><EMAIL_ADDRESS>is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.
#0 70.12 npm notice
#0 70.12 npm notice New minor version of npm available! 9.5.0 -> 9.6.5
#0 70.12 npm notice Changelog: <https://github.com/npm/cli/releases/tag/v9.6.5>
#0 70.12 npm notice Run `npm install -g<EMAIL_ADDRESS>to update!
#0 70.12 npm notice
#0 70.12 npm ERR! code 1
#0 70.12 npm ERR! path /usr/src/app/node_modules/node-libcurl
#0 70.12 npm ERR! command failed
#0 70.12 npm ERR! command sh -c node-pre-gyp install --fallback-to-build
#0 70.12 npm ERR! Failed to execute '/usr/local/bin/node /usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js configure --fallback-to-build --module=/usr/src/app/node_modules/node-libcurl/lib/binding/node_libcurl.node --module_name=node_libcurl --module_path=/usr/src/app/node_modules/node-libcurl/lib/binding --napi_version=8 --node_abi_napi=napi --napi_build_version=0 --node_napi_label=node-v108' (1)
#0 70.12 npm ERR! node-pre-gyp info it worked if it ends with ok
#0 70.12 npm ERR! node-pre-gyp info using<EMAIL_ADDRESS>#0 70.12 npm ERR! node-pre-gyp info using<EMAIL_ADDRESS>| linux | arm64
#0 70.12 npm ERR! node-pre-gyp info check checked for "/usr/src/app/node_modules/node-libcurl/lib/binding/node_libcurl.node" (not found)
#0 70.12 npm ERR! node-pre-gyp http GET https://github.com/JCMais/node-libcurl/releases/download/v3.0.0/node_libcurl-v3.0.0-node-v108-linux-arm64-musl.tar.gz
#0 70.12 npm ERR! node-pre-gyp ERR! install response status 404 Not Found on https://github.com/JCMais/node-libcurl/releases/download/v3.0.0/node_libcurl-v3.0.0-node-v108-linux-arm64-musl.tar.gz
#0 70.12 npm ERR! node-pre-gyp WARN Pre-built binaries not installable for<EMAIL_ADDRESS>and<EMAIL_ADDRESS>(node-v108 ABI, musl) (falling back to source compile with node-gyp)
#0 70.12 npm ERR! node-pre-gyp WARN Hit error response status 404 Not Found on https://github.com/JCMais/node-libcurl/releases/download/v3.0.0/node_libcurl-v3.0.0-node-v108-linux-arm64-musl.tar.gz
#0 70.12 npm ERR! gyp info it worked if it ends with ok
#0 70.12 npm ERR! gyp info using<EMAIL_ADDRESS>#0 70.12 npm ERR! gyp info using<EMAIL_ADDRESS>| linux | arm64
#0 70.12 npm ERR! gyp info ok
#0 70.12 npm ERR! gyp info it worked if it ends with ok
#0 70.12 npm ERR! gyp info using<EMAIL_ADDRESS>#0 70.12 npm ERR! gyp info using<EMAIL_ADDRESS>| linux | arm64
#0 70.12 npm ERR! gyp ERR! find Python
#0 70.12 npm ERR! gyp ERR! find Python Python is not set from command line or npm configuration
#0 70.12 npm ERR! gyp ERR! find Python Python is not set from environment variable PYTHON
#0 70.12 npm ERR! gyp ERR! find Python checking if "python3" can be used
#0 70.12 npm ERR! gyp ERR! find Python - "python3" is not in PATH or produced an error
#0 70.12 npm ERR! gyp ERR! find Python checking if "python" can be used
#0 70.13 npm ERR! gyp ERR! find Python - "python" is not in PATH or produced an error
#0 70.13 npm ERR! gyp ERR! find Python
#0 70.13 npm ERR! gyp ERR! find Python **********************************************************
#0 70.13 npm ERR! gyp ERR! find Python You need to install the latest version of Python.
#0 70.13 npm ERR! gyp ERR! find Python Node-gyp should be able to find and use Python. If not,
#0 70.13 npm ERR! gyp ERR! find Python you can try one of the following options:
#0 70.13 npm ERR! gyp ERR! find Python - Use the switch --python="/path/to/pythonexecutable"
#0 70.13 npm ERR! gyp ERR! find Python   (accepted by both node-gyp and npm)
#0 70.13 npm ERR! gyp ERR! find Python - Set the environment variable PYTHON
#0 70.13 npm ERR! gyp ERR! find Python - Set the npm configuration variable python:
#0 70.13 npm ERR! gyp ERR! find Python   npm config set python "/path/to/pythonexecutable"
#0 70.13 npm ERR! gyp ERR! find Python For more information consult the documentation at:
#0 70.13 npm ERR! gyp ERR! find Python https://github.com/nodejs/node-gyp#installation
#0 70.13 npm ERR! gyp ERR! find Python **********************************************************
#0 70.13 npm ERR! gyp ERR! find Python
#0 70.13 npm ERR! gyp ERR! configure error
#0 70.13 npm ERR! gyp ERR! stack Error: Could not find any Python installation to use
#0 70.13 npm ERR! gyp ERR! stack     at PythonFinder.fail (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/find-python.js:330:47)
#0 70.13 npm ERR! gyp ERR! stack     at PythonFinder.runChecks (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/find-python.js:159:21)
#0 70.13 npm ERR! gyp ERR! stack     at PythonFinder.<anonymous> (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/find-python.js:202:16)
#0 70.13 npm ERR! gyp ERR! stack     at PythonFinder.execFileCallback (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/find-python.js:294:16)
#0 70.13 npm ERR! gyp ERR! stack     at exithandler (node:child_process:427:5)
#0 70.13 npm ERR! gyp ERR! stack     at ChildProcess.errorhandler (node:child_process:439:5)
#0 70.13 npm ERR! gyp ERR! stack     at ChildProcess.emit (node:events:513:28)
#0 70.13 npm ERR! gyp ERR! stack     at ChildProcess._handle.onexit (node:internal/child_process:289:12)
#0 70.13 npm ERR! gyp ERR! stack     at onErrorNT (node:internal/child_process:476:16)
#0 70.13 npm ERR! gyp ERR! stack     at process.processTicksAndRejections (node:internal/process/task_queues:82:21)
#0 70.13 npm ERR! gyp ERR!  System Linux 5.15.49-linuxkit
#0 70.13 npm ERR! node-pre-gyp ERR! command "/usr/local/bin/node" "/usr/src/app/node_modules/.bin/node-pre-gyp" "install" "--fallback-to-build"
#0 70.13 npm ERR! node-pre-gyp ERR! cwd /usr/src/app/node_modules/node-libcurl
#0 70.13 npm ERR! node-pre-gyp ERR! node -v v18.14.2
#0 70.13 npm ERR! node-pre-gyp ERR! node-pre-gyp -v v1.0.10
#0 70.13 npm ERR! node-pre-gyp ERR! not ok
#0 70.13
#0 70.13 npm ERR! A complete log of this run can be found in:
#0 70.13 npm ERR!     /root/.npm/_logs/2023-04-29T11_25_18_036Z-debug-0.log
------
Dockerfile:11
--------------------
   9 |
  10 |     # Install pnpm locally in your project directory
  11 | >>> RUN npm install pnpm
  12 |
  13 |     # Install project dependencies using pnpm
--------------------
ERROR: failed to solve: process "/bin/sh -c npm install pnpm" did not complete successfully: exit code: 1

However, when I use
FROM mcr.microsoft.com/devcontainers/typescript-node:18 as base

from VS Code's Dev Container image repository at the top of the Dockerfile instead of
FROM node:18.14-alpine as base

the build succeeds (both locally and in Dev Containers).
Details
[+] Building 180.1s (15/15) FINISHED
 => [internal] load .dockerignore                                                                                0.0s
 => => transferring context: 123B                                                                                0.0s
 => [internal] load build definition from Dockerfile                                                                              0.0s
 => => transferring dockerfile: 462B                                                                                0.0s
 => [internal] load metadata for mcr.microsoft.com/devcontainers/typescript-node:18                                               0.9s
 => [ 1/10] FROM mcr.microsoft.com/devcontainers/typescript-node:18@sha256:c258d970c416c860c973e1e8cd4b1c8e8245f187374dd15904ef  13.3s
 => => resolve mcr.microsoft.com/devcontainers/typescript-node:18@sha256:c258d970c416c860c973e1e8cd4b1c8e8245f187374dd15904ef1f4  0.0s
 => => sha256:0f398117670bb193f5c6cb1afff2f10d6904e5689050acb5cd7f21d6c7c73183 5.05kB / 5.05kB                                    0.0s
 => => sha256:80e7bb3929f7456a5e49b259d265f6c30093f52eea2f07aaf726ff784c9db628 22.34kB / 22.34kB                                  0.0s
 => => sha256:5884e7f2c8c61aa845de4902fc29639b58861ae6c2d80bafe82082c0456c0740 5.15MB / 5.15MB                                    1.4s
 => => sha256:dc80b8cdbfd36cb20231d807a50d704945d1df4da8f6e23197ccfcb629970491 53.71MB / 53.71MB                                  1.3s
 => => sha256:c258d970c416c860c973e1e8cd4b1c8e8245f187374dd15904ef1f4893da1069 1.61kB / 1.61kB                                    0.0s
 => => sha256:1b792b01ed3c8dc1488cd8aac41ab7d49bb17f3fa22b2e6c846078cec81a1c00 10.87MB / 10.87MB                                  0.3s
 => => sha256:8f993d5b17f32f4b8a535c25e182e5d8412625beee450e513ca57036e8fdd6dc 54.68MB / 54.68MB                                  1.2s
 => => sha256:c26edf98ece5babdb6b65e76738cef2c2d05e7075161753d3ba95cd84480d211 189.73MB / 189.73MB                                5.5s
 => => sha256:ef4553a29827be949323a49bbe126aac00893203a3234abe3a2915aa4b0b768a 4.20kB / 4.20kB                                    1.4s
 => => extracting sha256:dc80b8cdbfd36cb20231d807a50d704945d1df4da8f6e23197ccfcb629970491                                         1.3s
 => => sha256:14531ce9f0a46be86d89363abbf533499226c7734e56c3fbb7d70a8da9562be7 2.28MB / 2.28MB                                    1.8s
 => => sha256:f12d0fbf1676444f72f7a86719bd3c8a5ef70c77eaee331304d13da832785a54 45.58MB / 45.58MB                                  2.1s
 => => sha256:5f64eb351b344b535e5676014358c3045349fae2d10e4d45048067a26b17229c 452B / 452B                                        1.9s
 => => sha256:ab52160beb8c299b9cbc1871d4437a0d0078c195ada9dea92f2a53a82253e3c6 615B / 615B                                        2.0s
 => => sha256:e0f12e4dc616e9fec18d255bce2751e03ef5960f80ce27de2576ec82c7193135 152B / 152B                                        2.1s
 => => sha256:a33a868bf74e055264aa2e67907b2ee45baad5137175331a231f7124bc6bddce 6.26MB / 6.26MB                                    2.3s
 => => sha256:d9cb5ee1791cf6684e30ed87c27271dd350924a08a24aed403a26a8a0bce061c 424B / 424B                                        2.2s
 => => sha256:23c5221cc21eb8202f5b0db2749d236d2e521f59a415d6a0cc3d80bee7262403 140B / 140B                                        2.3s
 => => sha256:10036c11447f8cc70b7d8c0cc445c09566d0294f8dde91d4947e646fc418c1e0 226B / 226B                                        2.5s
 => => sha256:7c1be147ae7daee0b71b616dd01799d8fd2a6ea30a06a75ed75a6c9162e16162 242B / 242B                                        2.5s
 => => sha256:cc2dab73aa3b44c7df8ab5a98761184bc50e0ce81ce816def15ebbd45c6561dd 63.84MB / 63.84MB                                  3.5s
 => => sha256:b987a2df6707ff61a783e9a34937aa492905afe0ea58d46c30d30f4d410b790a 45.42MB / 45.42MB                                  5.3s
 => => extracting sha256:5884e7f2c8c61aa845de4902fc29639b58861ae6c2d80bafe82082c0456c0740                                         0.1s
 => => extracting sha256:1b792b01ed3c8dc1488cd8aac41ab7d49bb17f3fa22b2e6c846078cec81a1c00                                         0.2s
 => => extracting sha256:8f993d5b17f32f4b8a535c25e182e5d8412625beee450e513ca57036e8fdd6dc                                         1.2s
 => => sha256:56c4f704dae79d7c9189f368c3b25cf49a3468f2e52428fe90fd512a2cf60067 7.50MB / 7.50MB                                    3.8s
 => => sha256:4986921bf90f08cb3416b4091551f98b5877239ef0d6ecb4ea15e14f8ffd8576 45.01MB / 45.01MB                                  4.7s
 => => sha256:abb08069452b8612dde53d164d725d549da7499bf3c1a391c6cf00175fa79ecd 431B / 431B                                        4.8s
 => => sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1 32B / 32B                                          5.3s
 => => sha256:57ca398a74ea4a23446ebacabc36cc2f55617cf4cbc7b129cb2255984ebab8c2 231B / 231B                                        5.3s
 => => sha256:4a0a367cb9ab2a26403cf52f5c723ab43789ab0af63a8d46b3765d46c0f78e47 61.00MB / 61.00MB                                  6.7s
 => => sha256:36975edf19b3a66496b611274d51b2d10fd73084a97811fcc0e9b37b7d253562 247B / 247B                                        5.5s
 => => extracting sha256:c26edf98ece5babdb6b65e76738cef2c2d05e7075161753d3ba95cd84480d211                                         2.4s
 => => extracting sha256:ef4553a29827be949323a49bbe126aac00893203a3234abe3a2915aa4b0b768a                                         0.0s
 => => extracting sha256:f12d0fbf1676444f72f7a86719bd3c8a5ef70c77eaee331304d13da832785a54                                         0.7s
 => => extracting sha256:14531ce9f0a46be86d89363abbf533499226c7734e56c3fbb7d70a8da9562be7                                         0.1s
 => => extracting sha256:5f64eb351b344b535e5676014358c3045349fae2d10e4d45048067a26b17229c                                         0.0s
 => => extracting sha256:ab52160beb8c299b9cbc1871d4437a0d0078c195ada9dea92f2a53a82253e3c6                                         0.0s
 => => extracting sha256:e0f12e4dc616e9fec18d255bce2751e03ef5960f80ce27de2576ec82c7193135                                         0.0s
 => => extracting sha256:a33a868bf74e055264aa2e67907b2ee45baad5137175331a231f7124bc6bddce                                         0.2s
 => => extracting sha256:d9cb5ee1791cf6684e30ed87c27271dd350924a08a24aed403a26a8a0bce061c                                         0.0s
 => => extracting sha256:23c5221cc21eb8202f5b0db2749d236d2e521f59a415d6a0cc3d80bee7262403                                         0.0s
 => => extracting sha256:10036c11447f8cc70b7d8c0cc445c09566d0294f8dde91d4947e646fc418c1e0                                         0.0s
 => => extracting sha256:7c1be147ae7daee0b71b616dd01799d8fd2a6ea30a06a75ed75a6c9162e16162                                         0.0s
 => => extracting sha256:b987a2df6707ff61a783e9a34937aa492905afe0ea58d46c30d30f4d410b790a                                         0.6s
 => => extracting sha256:cc2dab73aa3b44c7df8ab5a98761184bc50e0ce81ce816def15ebbd45c6561dd                                         0.7s
 => => extracting sha256:56c4f704dae79d7c9189f368c3b25cf49a3468f2e52428fe90fd512a2cf60067                                         0.1s
 => => extracting sha256:4986921bf90f08cb3416b4091551f98b5877239ef0d6ecb4ea15e14f8ffd8576                                         0.7s
 => => extracting sha256:abb08069452b8612dde53d164d725d549da7499bf3c1a391c6cf00175fa79ecd                                         0.0s
 => => extracting sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1                                         0.0s
 => => extracting sha256:57ca398a74ea4a23446ebacabc36cc2f55617cf4cbc7b129cb2255984ebab8c2                                         0.0s
 => => extracting sha256:36975edf19b3a66496b611274d51b2d10fd73084a97811fcc0e9b37b7d253562                                         0.0s
 => => extracting sha256:4a0a367cb9ab2a26403cf52f5c723ab43789ab0af63a8d46b3765d46c0f78e47                                         0.7s
 => [internal] load build context                                                                                0.0s
 => => transferring context: 383.18kB                                                                                0.0s
 => [ 2/10] WORKDIR /usr/src/app                                                                                1.3s
 => [ 3/10] COPY package*.json ./                                                                                0.0s
 => [ 4/10] COPY tsconfig.json ./                                                                                0.0s
 => [ 5/10] COPY src ./src                                                                                0.0s
 => [ 6/10] COPY .env ./                                                                                0.0s
 => [ 7/10] RUN npm install pnpm                                                                                81.6s
 => [ 8/10] RUN npx pnpm install                                                                                30.0s
 => [ 9/10] RUN chown -R node:node /usr/src/app                                                                                37.1s
 => [10/10] RUN npm run build                                                                                11.1s
 => exporting to image                                                                                4.8s
 => => exporting layers                                                                                4.8s
 => => writing image sha256:4ad3cecb90c56f2139cbc66447a1c9eb07531b7d0e9257e3d7e614f4a13f9585                                      0.0s
 => => naming to docker.io/library/da-service

And then I can run docker run -d -p 3008:3008 da-service no problem.
Environment
Docker Desktop 4.19.0 on Apple M1 Pro using MacOS Ventura Version 13.3.1

Thanks for raising, PR welcome with the fix if not will look after bank holiday

Thanks for raising, PR welcome with the fix if not will look after bank holiday

For sure, just linked above!


[Feature] Add Future Fonts to the font section of frontend.

Description
Future Fonts is a unique platform that focuses on showcasing and supporting fonts that are still in development. It offers a glimpse into the creative process behind typeface design and allows designers to share their experimental and innovative work with the public.
Screenshots
No response
Checklist

[X] I have checked the existing issues
[X] I have read the Contributing Guidelines
[X] I am willing to work on this issue (optional)
[X] I am a GSSoC'23 contributor

@Akanksha-202 hi, do you still want to work on this?

Actually it's a new link that I wanted to add and I have created the issue in the wrong template

Actually it's a new link that I wanted to add and I have created the issue in the wrong template

oh, okay thanks


add support for ceph_dev (git builder)

My intention is to push all dev containers to registry.ceph.com (https://github.com/ceph/ceph-docker/issues/444), similar to what we do for package builds in shaman.ceph.com.


Mouse cursor disappears when keyboard is used

When I press any key on my keyboard while in atom-shell app, mouse cursor hides until mouse moves again. This might be just the right option for some of the apps, but we are really struggling with this behavior in our atom-shell app Avocode.
Our interface is similar to graphic editors - you have big canvas with opened document and set of tools you can use. All tools have keyboard shortcuts for activation and when you press for example shortcut for color picker, then instead of changing cursor to eyedropper (which we do in css), the cursor hides and won't show up again until you move your mouse. The experience seems broken
I went a little further while writing this issue and discovered that this is probably issue just on Mac (although not confirmed) which is caused by this snipped of code from chromium (I searched in latest stable release source)
// from chromium-39.0.2171.95/content/browser/renderer_host/render_widget_host_view_mac.mm
…
// Determine whether we should autohide the cursor (i.e., hide it until mouse
// move) for the given event. Customize here to be more selective about which
// key presses to autohide on.
+ (BOOL)shouldAutohideCursorForEvent:(NSEvent*)event {
  return ([event type] == NSKeyDown &&
             !([event modifierFlags] & NSCommandKeyMask)) ? YES : NO;
}

Is is possible that this could be overridden by atom-shell app via any kind of setting/flag? Thanks for any help

I've run into this multiple times. The way I work around it is to create an element containing the cursor image where the cursor would be after the key is pressed and then on the mouse move event when the cursor reappears I hide the element.
The downsides to this approach are that the cursor would get cut off on the edge of the window, and if you are trying to do anything where you need to hold a key down while moving the cursor... well, hardware cursors feel much more responsive than html elements so it's kind of a drag.

I'll add an option for this in BrowserWindow, thanks for finding out the troubling line.

Hi, is there some progress in this matter?

This is somewhat off-topic but I'm having the same problem but with the text cursor, not the mouse cursor.  I assume it has something to do with losing focus.  Can someone point me to any issue about that?  If not I'll create one.


[Chore] Fix components where react rules aren't followed

Explanation of Change
This PR aims to fix some of the code that react-compiler signalizes as not compliant with React rules.
After investigating, it won't be easy to get rid of a significant number of react-compiler eslint comments in one PR, rather it should be a planned project like withOnyx migration/TS migration. But I don't think it is our priority at the moment. That being said, I think we can come back to this once it is a bigger priority for us (before upgrading to React v19)
Fixed Issues
$ https://github.com/Expensify/App/issues/51972
PROPOSAL: N/A
Tests

Search page

Go to the Search page > Exepenses
Verify that after clicking on column headers, the transition to new data is smooth and no loader is displayed

Example of how it shouldn't work
https://github.com/user-attachments/assets/fb803ac6-07c5-4909-9196-5f33e8b0885c

Verify that expenses screen works fine and comments, changes are correctly displayed
Verify that reactions are correctly displayed under the messages
Verify that when linking to a invalid page the last visited path is loaded correctly (video in the original PR)

Navigate to /a/hello
Verify that in the background, an initial report loads (not an infinite skeleton)
Press on the < in the RHP
Verify that you see the report that loaded while the RHP was open.

Transfer owner on workspace (more context here)

Log in to the App
Open paid workspace where you are an admin but not an owner
Go to the members screen
Press on the owner member
Press the Transfer owner button
After adding payment card and there is no more errors, make sure it shows the success page
Go through error screens and see if there is no glitches (it should show correct copy immediately)
On the Outstanding balance error page, make sure it shows the amount value correctly formatted

Offline tests
N/A
QA Steps
Same as tests
PR Author Checklist

[x] I linked the correct issue in the ### Fixed Issues section above
[x] I wrote clear testing steps that cover the changes made in this PR

[x] I added steps for local testing in the Tests section
[x] I added steps for the expected offline behavior in the Offline steps section
[x] I added steps for Staging and/or Production testing in the QA steps section
[x] I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
[x] I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).

[x] I included screenshots or videos for tests on all platforms
[x] I ran the tests on all platforms & verified they passed on:

[x] Android: Native
[x] Android: mWeb Chrome
[x] iOS: Native
[x] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[x] MacOS: Desktop

[x] I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
[x] I followed proper code patterns (see Reviewing the code)

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
[x] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method

[x] If any non-english text was added/modified, I verified the translation was requested/reviewed in #expensify-open-source and it was approved by an internal Expensify engineer. Link to Slack message:

[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

[x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[x] I followed the guidelines as stated in the Review Guidelines
[x] I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
[x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[x] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[x] I verified that if a function's arguments changed that all usages have also been updated correctly
[x] If any new file was added I verified that:

[x] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[x] If a new CSS style is added I verified that:

[x] A similar style doesn't already exist
[x] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))

[x] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[x] If the PR modifies the form input styles:

[x] I verified that all the inputs inside a form are aligned with each other.
[x] I added Design label so the design team can review the changes.

[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.

Screenshots/Videos

Android: Native

Android: mWeb Chrome

iOS: Native

iOS: mWeb Safari

MacOS: Chrome / Safari

MacOS: Desktop

We can ignore Changed files ESlint check as PR touches many files

@ntdiary FYI I'm OOO 7-11 November, but the PR should be ready for you to review 😄

Assigned @dominictb as per the request in Slack

@dominictb Code adjusted, thank you!

ESLint checks are failing with error  'withOnyx' is deprecated. Use useOnyxinstead ofwithOnyx whenever possible.. That is unrelated to this PR so I won't block on it.

See comment above

:hand: This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release.


Bump codeql-action to v2

Changes
See https://github.blog/changelog/2022-04-27-code-scanning-deprecation-of-codeql-action-v1/
/kind misc
Submitter Checklist
As the author of this PR, please check off the items in this checklist:

[ ] Has Docs included if any changes are user facing
[ ] Has Tests included if any functionality added or changed
[x] Follows the commit message standard
[x] Meets the Tekton contributor standards (including
functionality, content, code)
[x] Has a kind label. You can add one by adding a comment on this PR that contains /kind <type>. Valid types are bug, cleanup, design, documentation, feature, flake, misc, question, tep
[x] Release notes block below has been updated with any user facing changes (API changes, bug fixes, changes requiring upgrade notices or deprecation warnings)
[ ] Release notes contains the string "action required" if the change requires additional action from users switching to the new release

Release Notes
NONE

/assign @afrittoli @vdemeester @lbernick @jerop

thank you @abayer
/lgtm


How to use Trained ENAS Model (for Prediction)

I’m new to Auto-Gluon and following the below URL, I’m able to Create a ENAS network (using Sequential Block), Evaluate Network Latency, Train and store the Model.
https://auto.gluon.ai/tutorials/nas/enas_proxylessnas.html
I’m clear with the training part and want to use this trained model for prediction on a test dataset (similar to mnist). Although they’ve shown below code –
mynet_static = mx.gluon.nn.SymbolBlock.imports("enas-symbol.json", ['data'], "enas.params")
y = mynet_static(mx.nd.zeros((1, 1, 28, 28)))
But this piece of code is not clear to me. Can somebody please HELP me on this with example?

We are removing ENAS / NAS in the next release (v0.4), as the code is unsupported and has not been updated in a long time. I'd recommend trying out other packages if you are interested in NAS.


very different topography between 0.6.0 and 0.8.6

Check the altitude of a 1-degree, 5x5 grid of lat/long points centered on -67, 103;
oceansdb==0.6.0 has most of these points at a couple kilometers above sea level;
oceansdb==0.8.6 has many of them at or below sea level.
My first guess would be "ice versus no ice", but is that because that ice is actually gone, or is it because we're just not including it in the topo data in 0.8.6 (or something else entirely)? Thanks in advance!

Hi @BillMills , I'm so sorry. Somehow I missed this before! I'll check it on this weekend and get back to you.

The difference is that on 0.6 the default etopo was the 5 min arc resolution, while the 0.8 uses the more recent 1 min (bedrock).
Since the size of the files are 30 MB versus 890 MB, I'm moving back the default resolution to 5 min, and anyone interested in the high resolution should ask that explicitly, like
ETOPO(resolution='1min')
I might change CoTeDe to ask explicitly for the 1 min.
Thanks for the note, and I'm really sorry that I didn't answer before.


Create a Python library for generating VtR arch.xml file

Currently we generate all the arch.xml files by either;

Hand using XML includes
@davesha1's Verilog to arch.xml generator.

As @jhol points out, it would be much easier to generate a lot of the definitions in Python and then dump the XML from that.
This would also make it easier to do the many variations of the testing architectures.

We could also look at migen to generate Verilog from the  same structures.

The Verilog to arch generator could use this API too...

@jhol has some examples of how this might work here -> https://github.com/jhol/icestorm/blob/vtr-py/icebox/vtr.py

Have worked on create an XML, parsing an XML, with Python.
Is this what the issue needs?

Hi @mridubhatnagar,
We want to be able to programmatically generate Verilog to Routing FPGA architecture files. These XML files describe the internals of an FPGA.
We could just use the DOM to do this, but the DOM is not a great Python API. It also sucks if we change from using XML format to some other type of format.
So what we are after is a Python API for creating these FPGA structures and then a way to convert these FPGA structures to and from the XML format.
You can see how @jhol was doing this here and use that as inspiration. You can also see our rr_graph library as inspiration too.
One approach to this would be creating an XML schema for the file format and then auto-generating the Python API from that, see the following examples;

http://www.davekuhlman.org/generateDS.html
http://pyxb.sourceforge.net/
https://github.com/knorby/pyxsd

lxml.de's objectify might be another way to do this.
The first goal would be to easily generate the same architecture files as found in the testarch repository before building up towards being able to generate much more complicated structure.
If you want to chat more, find mithro on the ##openfpga IRC channel or email me at<EMAIL_ADDRESS>Hope that helps!

Also see the related issue here -> https://github.com/SymbiFlow/ideas/issues/4

There is a WIP at https://github.com/leon575777642/vprgen/tree/master/vprgen


Example Fix

Apologies @rxwei , company is asking me instead to use my personal email/github. Will reopen and sign.

Closed in favor of https://github.com/tensorflow/swift/pull/163


Spreadsheet not updated

If you're looking for a spreadsheet with all countries and regions, download and save the Cloud voice feature country/region availability spreadsheet.
Spreadsheet not updated. we dont have south africe in the calling Plans countries

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

ID: 6b07cfcf-8f31-91ed-b1de-c7826a1ab91d
Version Independent ID: dfbc4212-8f47-326a-f872-8186a915ae1e
Content: Country/region availability - Audio Conferencing, Calling Plans - Microsoft Teams
Content Source: Teams/country-and-region-availability-for-audio-conferencing-and-calling-plans/country-and-region-availability-for-audio-conferencing-and-calling-plans.md
Service: msteams
GitHub Login: @MicrosoftHeidi
Microsoft Alias: heidip

Hello @dipinn26592 I am looking into this

Hello @dipinn26592 the spreadsheet is hosted in another resource that we can't update however I managed to pass this feedback on.
Thank you!


Add ilab shell option that provides interactive REPL (Read-Eval-Print Loop) interface for the ilab CLI

This change allows interactive ilab CLI and command discovery
Checklist:

[x] Commit Message Formatting: Commit titles and messages follow guidelines in the
conventional commits.
[x] Changelog updated with breaking and/or notable changes for the next minor release.
[x] Documentation has been updated, if necessary.
[ ] Unit tests have been added, if necessary.
[ ] Integration tests have been added, if necessary.

This is what it looks like:

What's a typical use case for this? Thanks
See this demo

I created a user and set the login shell to start ilab in shell mode.
This allows me to let the user use ilab on the system without exposing the underlying RHEL/Linux.

I don't quite see its usefulness

Same for me. REPL makes more sense when there is significant state in the runtime (like Python has namespaces, variable values, function definitions, etc.). ilab basically has zero state which is why it is just a bunch of subcommands. Any state between running commands is stored in the file system and not volatile memory.
Adding a REPL is just additional (cognitive) complexity but does not add any real value to the user.
For command discovery, we already have --help. If we want command completion, we can supply bash/zsh/... completions.


Unable to set the name of the Custom SMS Provider

Describe the issue:
The name of the custom SMS provider can be set in the configs but it is always defaulting to "Custom". When checking the network trace its seen that we are always sending the name as "Custom".
Additionally note that the "Content Type" is mandatory when trying to save the config but its not marked as mandatory in the UI.
https://github.com/wso2/product-is/assets/11583571/5d93c710-47a8-4228-989f-58fe73203083
Environment information (Please complete the following information; remove  any unnecessary fields) :

Product Version: wso2is-7.0.0-beta7-SNAPSHOT

Fix:

https://github.com/wso2/identity-apps/pull/5499

Verified in latest wso2is-7.0.0-beta7-SNAPSHOT

There was a regression with the fix , hence we need to revert and figure out the use case of this name attribute and hide if redundant.
Issue to fix the regression: https://github.com/wso2/product-is/issues/19601

Since no usecase was found for the "SMS Provider name" property, it was decided to remove the field from the UI.
For Custom SMS Provider, provider property will be hardcoded to "Custom"

https://github.com/wso2/identity-apps/pull/5528


indexEror

hello, I have a problem: reviews = list(review_data[2]) reviews = reviews[:5000] # only consider the first 5k reviews
IndexError: boolean index did not match indexed array along dimension 0; dimension is 5000 but corresponding boolean dimension is 1000.
this works with reviews = reviews[:1000]

same here .. `File ~/anaconda3/envs/pytorch_p310/lib/python3.10/site-packages/topicgpt/TopicRepresentation.py:310, in extract_topics_no_new_vocab_computation(corpus, vocab, document_embeddings, clusterer, vocab_embeddings, n_topwords, topword_extraction_methods, consider_outliers)
306 dim_red_centroids = umap_mapper.transform(np.array(list(centroid_dict.values())))  # map the centroids to low dimensional space
308 dim_red_centroid_dict = {label: centroid for label, centroid in zip(centroid_dict.keys(), dim_red_centroids)}
--> 310 word_topic_mat = extractor.compute_word_topic_mat(corpus, vocab, labels, consider_outliers = consider_outliers)  # compute the word-topic matrix of the corpus
311 if "tfidf" in topword_extraction_methods:
312     tfidf_topwords, tfidf_dict = extractor.extract_topwords_tfidf(word_topic_mat = word_topic_mat, vocab = vocab, labels = labels, top_n_words = n_topwords)  # extract the top-words according to tfidf
File ~/anaconda3/envs/pytorch_p310/lib/python3.10/site-packages/topicgpt/ExtractTopWords.py:308, in ExtractTopWords.compute_word_topic_mat(self, corpus, vocab, labels, consider_outliers)
305     word_topic_mat = np.zeros((len(vocab), len((np.unique(labels)))))
307 for i, label in tqdm(enumerate(np.unique(labels)), desc="Computing word-topic matrix", total=len(np.unique(labels))):
--> 308     topic_docs = corpus_arr[labels == label]
309     topic_doc_string = " ".join(topic_docs)
310     topic_doc_words = word_tokenize(topic_doc_string)
IndexError: boolean index did not match indexed array along dimension 0; dimension is 6969 but corresponding boolean dimension is 4999`

4999

I've found the solution, first you need to delete the directory (SaveEmeddings which includes the embeddings.pkl file). This file was initially made with 1000 data (in my case), in your case, you must have initially tried with a 4999 data set.


<EMAIL_ADDRESS>download via aria2 failed

scoop update vscode
vscode: 1.63.2 -> 1.85.2
WARN  Scoop uses 'aria2c' for multi-connection downloads.
WARN  Should it cause issues, run 'scoop config aria2-enabled false' to disable it.
WARN  To disable this warning, run 'scoop config aria2-warning-enabled false'.
Updating one outdated app:
Updating 'vscode' (1.63.2 -> 1.85.2)
Downloading new version
Starting download with aria2 ...
Download: 01/30 23:22:38 [ERROR] CUID#8 - Download aborted. URI=https://update.code.visualstudio.com/1.85.2/win32-x64-arDownload: Exception: [AbstractCommand.cc:313] errorCode=1 Network problem has occurred. cause:A socket operation was attDownload: Download Results:
Download: gid   |stat|avg speed  |path/URI
Download: ======+====+===========+=======================================================
Download: 672ced|ERR |       0B/s|C:/Users/haik0/scoop/cache/vscode#1.85.2#https_update.code.visualstudio.com_1.85.2_win32-x64-archive_stable_dl.7z
Download: Status Legend:
Download: (ERR):error occurred.
Download: aria2 will resume download if the transfer is restarted.
Download: If there are any errors, then see the log file. See '-l' option in help/man page for details.

ERROR Download failed! (Error 1) An unknown error occurred
ERROR https://update.code.visualstudio.com/1.85.2/win32-x64-archive/stable#/dl.7z
    referer=https://update.code.visualstudio.com/1.85.2/win32-x64-archive/stable#/
    dir=C:\Users\haik0\scoop\cache
    out=vscode#1.85.2#https_update.code.visualstudio.com_1.85.2_win32-x64-archive_stable_dl.7z

ERROR & 'C:\Users\haik0\scoop\apps\aria2\current\aria2c.exe' --input-file='C:\Users\haik0\scoop\cache\vscode.txt' --user-agent='Scoop/1.0 (+http://scoop.sh/) PowerShell/5.1 (Windows NT 10.0; Win64; x64; Desktop)' --allow-overwrite=true --auto-file-renaming=false --retry-wait=2 --split=5 --max-connection-per-server=5 --min-split-size=5M --console-log-level=warn --enable-color=false --no-conf=true --follow-metalink=true --metalink-preferred-protocol=https --min-tls-version=TLSv1.2 --stop-with-process=22860 --continue --summary-interval=0 --auto-save-interval=1

tried without aria2 and it worked well. it seems aria2 has some issues


Lab reviews, UI minor improvement, AMP feeds

Description

Motivation and Context

How has this been tested?

Screenshots (if appropriate):
Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)

Checklist:

[ ] My code follows the code style of this project.
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.

damn it. I used window.location in Feeds, but it is SSR so it doesn't get window. will be fixed in next commit


Last modified time not showing up correctly

With this footer:

    CC BY-SA 4.0 {{ fill author }}. {{isnotpage /tag/*}}Last modified: {{ fill fd_mtime }}.{{end}}
    Website built with Franklin.jl and the Julia programming language.

I get this:

Right, in Xranklin this is meant to be handled by a hfun (there will be a dedicated one) in the meantime just use
function hfun_last_modified()
    mtime = locvar("fd_mtime")
    isnothing(mtime) && return ""
    last_modified = unix2datetime(mtime)
    date_str = Dates.format(last_modified, "U d, yyyy") # or whatever format you prefer
    return "Last modified: $date_str"
end

and put {{last_modified}} in the foot.

@kdheepak I've just added this, you can now use {{last_modification_date}} and it will show for instance March 2, 2022.
You can select the date format by changing date_format in your config.md. The default is "U d, yyyy". You can also define your own locale if you want via date_days, date_shortdays, date_months, date_shortmonths.
This is now used in the Xranklin docs if you check the bottom of a page.

This works great! Thanks!


Dart Kernel Documentations

Hi dart team!
I was exploring around underlying of the Dart VM and its mechanism so I wanted to read about kernel semantics, I found its documentation but it is in tex I tried to compile it and view its contents in pdf format but I couldn't.
Does it possible for you to create a pdf format from tex file and share it with the public?

I don't know how helpful the operation semantics doc is going to be, given that it has not been updated since 2017 and Kernel AST has changed in many ways.
/cc @stefantsov @johnniwinther

Thanks. (I already saw them before but it's ok)
Actually I read the runtime documentations (in runtime/docs) and as written in the documentations about compilation pipeline, first of all the CFE compiles source code to Kernel binary then the VM just handle the Kernel binary. Actually, I wanna documentations around these topics, I think as you said I should read the doc comments in these packages.

Thanks you about your comment

doesn't reflect the actual state of Kernel.

As you said this isn't actual state of Kernel but the actual state of kernel and associated operations documentations can find under kernel and CFE packages Doc comments?

As you said this isn't actual state of Kernel but the actual state of kernel and associated operations documentations can find under kernel and CFE packages Doc comments?

I believe https://github.com/dart-lang/sdk/blob/master/pkg/kernel/lib/ast.dart reflects the current state of Kernel as an intermediate language.


Proposal: controller should republish certain things to etcd at startup

Supersedes #3486 and #3539
In the event a new cluster is built as a replacement for an old one and the database is either external (as in the case of running Cephless) or is restored from a backup of the old cluster, certain necessary configuration that is present in the database needs to be republished to etcd.
The controller could do this at startup.
I would propose (at least) the following things be republished:

Application configuration
Application domains
User keys

Relates to #4333

Good idea. We already keep track of what needs to get done here: http://docs.deis.io/en/latest/managing_deis/backing_up_data/#finishing-up
It should be fairly straightforward to have that occur in an ExecStartPost script.

@carmstrong this should be safe to do every time the controller starts, right?  I can't see any reason why not.

this should be safe to do every time the controller starts, right?

I think so, but @bacongobbler or @mboersma are probably best to confirm.

as long as we're not modifying the objects themselves and just triggering the post-save signals it sounds fine to me.

@carmstrong so, interestingly, the directions you referenced don't actually work-- at least not entirely.
With the exception of user keys published under /deis/builder/users/<username>/<key>, all the post-save hooks are publishing to etcd only when the object in question is newly created.
Here's a good example:
def _etcd_publish_domains(**kwargs):
    domain = kwargs['instance']
    if kwargs['created']:
        _etcd_client.write('/deis/domains/{}'.format(domain), domain.app)


Freeze-pane fixes

There are a few small bugs or improvements that can be made to the frozen row/col guideline. Here they are:
A. It seems to interfere with dragging and dropping cols/rows. For example: https://gyazo.com/d9b43f796e5fa256a5c36cfac29e5b75. The frozen gridline should be ignored/inactive when moving another object (be it a cell, range, header, row).
B. The rows/cols should not 'jiggle' at all. Take this example comparing it to Google Sheets: https://gyazo.com/295e0870d4ae5ff4945cc08955df1acc. Only after the frozen gridline is 'released' does the positioning of the cols/rows and scroll bar update.
C. The position of the gridline should update after it's at the midpoint of the next/prev col/row, not when it's at the start. Here's an example: https://gyazo.com/0b67a27bbd224259ae97ff201e17aac1.
If there are no objections here, perhaps we can just use Google Sheets as a good reference for how the frozen pane/gridline should work?

I'm totally on board with all of these points!

One additional thing I noticed is when you re-size a column next to a frozen pane it becomes 'empty' until it is moved. I believe Point B should fix this above, but please check this case as well. For example: https://gyazo.com/770572fa3230599323f5593e03514aac.


INVALID_FULL_PREFIX_SIGNATURE_FOR_PRECOMPILE when calling transferFrom()

Description
I get a CONTRACT_REVERT_EXECUTED with INVALID_FULL_PREFIX_SIGNATURE_FOR_PRECOMPILE when I try to call a token.transferFrom() on a HTS NFT with custom fees
Steps to reproduce

Create a Contract with a token.transferFrom()
Create a HTS NFT with custom fixed fees
Call the contract function with the HTS NFT

--------- Or ---------

Clone https://github.com/se7enarianelabs/HederaBug_INVALID_FULL_PREFIX_SIGNATURE_FOR_PRECOMPILE
Run node testWithFees.js (You will get the error)
Run node testWithoutFees.js (It will be successful)

Additional context
No response
Hedera network
testnet
Version
0.1.0
Operating system
macOS

@se7enarianelabs Could you try to use token.delegateTransferFrom instead of token.transferFrom?

Also this error occurs, when signing with incorrect signer. Please, double check your signer.

@natanasow with a token.delegateTransferFrom it's working, but why?
Why does it work for token.transferFrom if the token does not have customer fees, but if it does you must use token.delegateTransferFrom?

@se7enarianelabs  I guess if there is a customer fee, the fee should be collected from the signer. In your case, you can not execute transferFrom for a token with fees, because the msg.sender is the contract address itself and doesn't have any tiny bars to be collected as a fee. In another case when you are executing transferFrom to a token without fees, there is no problem because the fee should not be collected and the zero balance of the contract will not throw an exception.

@natanasow
But shouldn't the HBAR allowance be used to pay the fee in transferFrom?

@se7enarianelabs Yep, but the contract itself doesn't have any HBAR allowance. Also, is your repo up-to-date because there are no testWithFees and testWithoutFees in your repo?

@natanasow
I forgot to push these files. Now it should be okay. I gave the contract the needed HBAR approval

Hey @se7enarianelabs, just wanted to let you know we've identified a possible issue causing this and we're currently working on a fix. We'll keep you updated.

Hey guys just checking, any update on this issue.?

Hey guys just checking, any update on this issue.?

Hey, @roshan-bisht-lab49 this was fixed on the consensus-node side. Once a new image for services including the fix is available we'll let you know.

Hey @roshan-bisht-lab49, this issue is fixed and fix is live on testnet. We cannot reproduce it anymore. Please try and reopen the issue, if you encounter it again.


Add goreportcard.com badge

It is one requirement of the pull request to add wire library to list https://github.com/avelino/awesome-go
https://github.com/avelino/awesome-go/pull/2965
https://github.com/avelino/awesome-go/blob/master/CONTRIBUTING.md
https://github.com/avelino/awesome-go/blob/master/.github/PULL_REQUEST_TEMPLATE.md

@googlebot I signed it!

I close PR because PR to awesome-go is closed.
https://github.com/avelino/awesome-go/pull/2965

Hey @dsxack, thank you so much for trying to get Wire included on awesome-go. Really sorry to hear it didn't work out. I believe our test practices to be quite good for this project, but I'm not sure if there's anything we can do to demonstrate that in a way that awesome-go will accept. If you come up with something, I'd be happy to work with you on that.

Something worth pointing out: the files that contain the core Wire logic hover around 85%-94% coverage: https://codecov.io/gh/google/wire/tree/master/internal/wire
I think the average isn't weighted well: the main.go we intentionally don't test much because it's a thin wrapper around the well-tested library.

@zombiezen thank you for response!
Would you mind if I try to increase the coverage of core Wire logic?

In general, yes, I'm supportive of PRs that increase test coverage as long as the tests don't introduce additional maintenance burden (e.g. brittle or hard-to-understand tests).
Definitely would love to see more coverage for parse.go. You should be able to do that by using the existing test infrastructure and exercising more cases.
copyast.go would likely need its own new unit test structure. Off the cuff, I would think the best way to do this would be something like:
func TestCopyAST(t *testing.T) {
  tests := []struct{
    name string
    source string
  }{
    // ...
  }
  for _, test := range tests {
    // 1. Parse test.source using go/parser
    // 2. Call copyAST
    // 3. Use go-cmp to check that the returned AST is equivalent to the first
  }
}


Fixing type with field name.

do you mind if I squash these commits?

Sure
On Feb 22, 2017 3:17 PM, "Zachary A. King"<EMAIL_ADDRESS>wrote:

do you mind if I squash these commits?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/SBRG/experiment_metadata/pull/15#issuecomment-281837230,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AD4-4a3p9AiKRtLhM4ROba-94ad4bHQ9ks5rfMIFgaJpZM4MJUq8
.


CellMeasurer notes: causes of height measurement errors, and how to fix them.

CellMeasurer renders each cell outside of the table context, and hence does not apply any inherited styling from outer elements.  This kind of issue can sometimes be hard to debug.  An approach I've used is to dump Window.getComputedStyle() on both the CellMeasurer and the visible version of cells at issue, and diff them.  This requires using a breakpoint in CellMeasurer's "measureCell", since the hidden renderings are transient.  [If other users need to do this also, an enhancement that makes the hidden renderings accessible to a handler might be useful.]
Another source of errors is vertical alignment.  This may only occur with table layout.  If different cells have different alignment, the vertical space required for a row can be larger than that measured for any single cell.  Similarly, a baseline-aligned large image in one cell can require space above the first row of text in other cells, and thus forces padding that is not counted other cells' sizes.  If one of these other cells is the tallest cell in the row (e.g. multiple lines), it will not count the image size above the top line's lineHeight.  I've been able to work around this by using consistent top alignment.  There might be a way for CellMeasurer to measure this vertical-alignment-forced padding and correct for it, but I haven't dug into it.

CellMeasurer renders each cell outside of the table context, and hence does not apply any inherited styling from outer elements.

Hm. Ok. I can try to make this more explicit in the docs. I can see how it might be unexpected.

This requires using a breakpoint in CellMeasurer's "measureCell", since the hidden renderings are transient. [If other users need to do this also, an enhancement that makes the hidden renderings accessible to a handler might be useful.]

I don't think I want this transient rendered state to be exposed. It shouldn't be used for anything, and may change with future versions of CellMeasurer if/when I find more performant ways to do this measuring. (It's already changed once.)

Another source of errors is vertical alignment. This may only occur with table layout. If different cells have different alignment, the vertical space required for a row can be larger than that measured for any single cell.

I don't understand. CellMeasurer measures all columns in a row, and then uses the tallest one. If you're concerned about vertical alignment within a shorter column, just set the height of that column to fill 100% of its container cell and vertically align (using either flexbox, line-height, or position+top).

Similarly, a baseline-aligned large image in one cell can require space above the first row of text in other cells, and thus forces padding that is not counted other cells' sizes. If one of these other cells is the tallest cell in the row (e.g. multiple lines), it will not count the image size above the top line's lineHeight. I've been able to work around this by using consistent top alignment. There might be a way for CellMeasurer to measure this vertical-alignment-forced padding and correct for it, but I haven't dug into it.

Sounds like what you're describing is too complicated for CellMeasurer to handle. It isn't meant to be a general layout algorithm (like flow or flexbox). It just measurers heights and/or widths.  (I don't understand how an image alignment in one column would require top-margin in another.) But you should be able to account for this in user-land, I think. Just add paddings or margins inside of your rendered content and CellMeasurer will account for them when measuring the client rect.

I have added a new section to the CellMeasurer docs:
https://github.com/bvaughn/react-virtualized/blob/master/docs/CellMeasurer.md#limitations-and-performance-considerations

I don't think there's anything else actionable on this ticket (at least within a scope I think I can take on for react-virtualized) so I'm going to close the issue for now. We can continue discussion here though if you have additional input. :)

For reference, here's a simple example where the row height is larger than that of any single column, using consistent "baseline" alignment:

        a b c d

I don't think CellMeasurer can handle this use-case.

I figured out how, in using CellMeasurer with VirtualScroll, to avoid the vertical-alignment issue, and for the cells to inherit style specified on the row.  Simply invoke CellMeasurer with just one column, which contains the entire row, e.g.:
                    <CellMeasurer
                      cellRenderer={({columnIndex,rowIndex})=>rowRenderer({index:rowIndex})}
                      columnCount={1}

You might consider changing the guidance on using CellMeasurer with VirtualScroll to this approach.  I must confess that, despite multiple readings,I don't understand the current guidance; it may achieve the same effect, if renderCell is intended to render the entire row, ignoring the columnIndex parameter.
In addition to being accurate in more contexts, this speeds up the measurement a great deal - in my case, better than 2x.  Window resizing isn't snappy, but it's a lot better.

You might consider changing the guidance on using CellMeasurer with VirtualScroll to this approach.

I'm afraid I don't understand. VirtualScroll has only 1 column per row. (There is no rowRenderer.) I'm also not sure how this is related to any speed increases to be honest. If there are multiple columns, Grid is going to ask for their size one at a time. So rendering the entire row each time (assuming you're using Grid) would be slower, I'd expect. If you're using VirtualScroll then there's only 1 column to begin with- so I really don't understand.

You're confused, or more likely miswrote; see https://github.com/bvaughn/react-virtualized/blob/master/docs/VirtualScroll.md for doc on rowRenderer.
Re VirtualScroll and one column per row: that's not the outside-world view of the most likely content - a table.
I was originally sizing each of my columns individually, since that's what seemed natural with a "ColumnMeasurer".  There are multiple columns in a row.  As you say, each row is in a single Grid, so from VirtualScroll's, the table columns are under the radar - the row has one column.
I'm guessing this must be getting more annoying than helpful, so I'll stop now.  I mainly wanted to get some notes in here for other users who run into the same befuddlements.

@bvaughn was having an issue with rowheights while using cellmeasurer with grid and landed here. using flex was the issue. could you please give a hint as how to proceed if i want to use display:flex in cell renderer.

@nsuthar0914 If you're using any styling outside of the cell seen by cellmeasurer that will affect the sizing of the cell contents, it will not use that styling and therefore be incorrect.  In my case, the cell widths were the issue, so I used cellmeasurer just once on each entire row, making sure to include all size-relevant css on the measured row.  YMMD, you don't say anything about how you're using flex.

@estaub my cells are actually containing another component which uses div's with display:flex, particularly, react-mdl's grid. I did see that if I move styles like fixed height inline, they are being used by cellmeasurer, but adding flex to styles was having no effect. I checked the component being used by "unstable_renderSubtreeIntoContainer" in cellmeasurer, it did have the classes and styles intact, yet the clientHeight there didn't match the computed height in browser.

@bvaughn thanks for making an awesome library btw.

@nsuthar0914 I found it really easy to overlook some style from a parent.  Also, cell-measurer itself sets a few relevant parent styles that you may have different.  I ended up using Chrome DevTools to copy/paste all the styles in effect out of the cellmeasurer phantom and diffing them against those in the visible rendition.  I wish I could remember more about exactly how I did that, but it's been too long and my old memory is too short.

Thanks, @nsuthar0914!
And thanks for adding info @estaub.

@estaub, @nsuthar0914 you should better use container option and pass it into cell-measurer. I run into a problem of this kind and found easy to pass appropriate container node to handle css styles inheritance for correct height calculations. In my case it was List element intself:
<CellMeasurer
    {...cellMeasurerProps}
    container={() => this.listInstanceRef}
>
    {({ getRowHeight }) => {
        return (
            <List
                ref={ref => this.listInstanceRef = ref}
                rowHeight={getRowHeight}
                {...listProps}
            />
        )
    }}
</CellMeasurer>

@misha-panyushkin Yes, that seems useful.

@misha-panyushkin this.listInstanceRef is undefined in _getContainerNode as it probably runs before the child is actually rendered.

@estaub @bvaughn @misha-panyushkin i couldn't get cellmeasurer to give the heights that i wanted the first time, so i simply added another list to get and set heights on componentdidmount and onScroll --
  componentDidMount() {
    this.handleResizeWidth();
  }

  handleResizeWidth() {
    let that = this;
    setTimeout(function() {
      that.itemHeights = that.list.map((listItem, index) => {
        let item = document.getElementById(`item-${index}`);
        if (item) {
          return item.clientHeight;
        } else {
          return null;
        }
      });
      that.cellmeasurer && that.cellmeasurer.resetMeasurements();
      that.grid && that.grid.recomputeGridSize();
    }, 10);
  }

  handleScroll() {
    let heightsToBeUpdated = false;
    this.itemHeights && this.itemHeights.forEach((listItem, index) => {
      let item = document.getElementById(`item-${index}`);
      if (!listItem && !!item) {
        this.itemHeights[index] = item.clientHeight;
        heightsToBeUpdated = true;
      }
    });
    if (heightsToBeUpdated) {
      this.cellmeasurer && this.cellmeasurer.resetMeasurements();
      this.grid && this.grid.recomputeGridSize();
    }
  }

It isn't elegant at all and if i have like 100 of my heavy list item components in the list and scroll too fast, there is flickering. But this will have to do for now, i guess.


INFRA-19665 Add an entry for asf948

It is a copy of asf946_ubuntu and it will be used as ARM64 BuildBot agent

no longer relevant


[KITs] Remove API Plug-In in KITs

Hints / Details

IRS API Hub URL would be https://eclipse-tractusx.github.io/api-hub/item-relationship-service/5.4.0/swagger-ui/

Acceptance Criteria

[ ] https://github.com/eclipse-tractusx/eclipse-tractusx.github.io/issues/972 is fixed

Out of Scope

Outcome

plugin was already removed in newer versions
but still included in 24.03
24.03

removed the relevant *.api.mdx files from 24.03
linked to the Open API yaml file (because this version was not published on API-Hub)

24.05

linked to the Open API yaml file (because this version was not published on API-Hub)

next

linked to OpenAPI documentation on API-Hub

PR
https://github.com/eclipse-tractusx/eclipse-tractusx.github.io/pull/1002

Successfully tested - open API link exists and works:

https://eclipse-tractusx.github.io/docs-kits/24.03/kits/Data Chain Kit/Software Development View/Job Api/irs-api/
https://raw.githubusercontent.com/eclipse-tractusx/item-relationship-service/5.1.3/docs/src/api/irs-api.yaml
https://eclipse-tractusx.github.io/api-hub/item-relationship-service/5.4.0/swagger-ui/

@mkanal ready for PO-review


FR - Allow for a lab path to be a URL

Some CLI tools, like kubectl, allow for a yaml file path to be a URL. For containerlab this makes it possible for users to deploy a full lab without having to download any of the artifacts.
For example:
containerlab -t https://raw.githubusercontent.com/hellt/clabs/main/labs/cvx03/lab-start.clab.yml deploy

would download the lab and all of the associated artifacts into a temp folder and clean it up before the deploy function exits.

Was proposed in #344
But we need to keep the downloaded topo file, as this is needed to destroy the lab and do other commands like 'save'
Unfortunately today even 'destroy' command requires a user to specify the topo file name. And maybe this is an overkill, since we might be able to delete a lab by removing containers with certain labels

ok, so based on what I've read the issues are:

sharing the configs together with the lab -- if the paths are relative these can also be looked up in URLs, right?
doing destroy -- if we stick to the kubectl UX, this can also be a URL, or , optionally we can add a flag to delete lab based on its name.
doing save -- I understand you still create a lab directory unconditionally, so maybe instead of deleting what we've downloaded we just put it in this dir?

Ultimately, I think that it's very easy to introduce a --name/-n argument that can be used for any action after deploy.. or it can even be a positional argument. So here's the UX that I have in mind, inspired by kubectl:
$ containerlab -t http://mylab.yaml deploy
$ containerlab list
   [DEBUG] Listing all local labs # Here we can iterate over all runtimes and look for clab's labels
   local-lab-1
   url-based-lab-2
$ containerlab save -n url-based-lab-2
$ containerlab delete -n url-based-lab-2

the name argument was (and likely is still) there, but we (un)naturally deviated from it, since we used topology based approach for most of our commands.
If I think about URL based commands, to me it seems it only makes when the lab is self-contained (i.e. no external bindings). or if we clone/download the lab repo via https entirely.
The self-container labs are quite common I'd say. I.e. any basic lab is like that if they don't use any mounted configs. And I think it adds benefits to be able to deploy them without asking to clone a repo with a topo file.
The labs which are more complicated, with binds or references to license files can (as you mentioned) be looked up via http as well, I agree, but I am not sure that the complexity that it adds (creating the temp dir and putting there all the files that are referenced in the topo and not available locally) beats the flow of cloning a repo?

I don't think the choice should be between clone and download. Some repose may have more than one lab, like this one, so there's really no point in cloning the entire repo for that. Think of it like helm, there may be a repo with multiple apps and you only install what you need (although helm does package them up in a single tarball)

@networkop are you working on this ?

@karimra nope, no plans as of yet

With https://github.com/srl-labs/containerlab/pull/1704 and https://github.com/srl-labs/containerlab/issues/1654 clab will clone the repo referenced by the URL.


Improve Fish compatiblity with subshells

This increases compatibility with subshells. Other shells should do this too, but let's start with fish.

Closing as wontfix


[Testing] Add basic tests to demonstrate JS testing library

Why
Currently, we don't have any usage of our JS testing library in this keystone example to demonstrate how the integration works.
What (Definition of Done)
Add the following basic tests:

Account creation: Multiple accounts can be created
Contract deploy: Deploys all contracts one by one in the cadence folders.
Transaction to mint kibble.
Transaction to mint kitty-item
Transaction to transfer kitty-item

Add documentation to the README explaining the testing and link out to remaining testing docs on the testing repo. https://github.com/onflow/flow-js-testing

@MaxStalker

@MaxStalker Any word on this?

@10thfloor we've identified a couple of solutions to said problem here:
https://github.com/onflow/flow-js-testing/issues/61
I have started with custom runner path, but no executable result atm. Still WIP 🙏

@10thfloor can you check #150 for errors with Cypress tests?
They block check for that PR 😓

Closing because stale. Tests have been added.


minimum propagated state for zipkin

I had a chat with @dsyer and a question came up about if parent_id is actually something that's required to be propagated. Local to the process, it isn't needed, as a child would take the current id. This comes up when reporting spans to the collector.
If a patch to a span includes only the trace id and span id, then some storage implementations would need to be revised to conditionally update parent_id. (ex don't overwrite parent_id with null).
The above storage issue aside, I'm wondering if there are other reasons why parent_id is propagated?

Finagle seems to think only trace id and span id are required, for example, but that makes sense as the root span won't have a parent. The interesting part is whether it should be ok for an update to an existing child span to omit the parent_id..
    val All = Seq(TraceId, SpanId, ParentSpanId, Sampled, Flags)
    val Required = Seq(TraceId, SpanId)

https://github.com/twitter/finagle/blob/master/finagle-http/src/main/scala/com/twitter/finagle/http/Codec.scala#L261

if we have:
A calls B calls C
and in the same request
A calls B calls D
You create the tree by looking at timestamps and Endpoint's IPs?

the tree is still created by trace id, span id, parent id.
The scenario in question is..
I start a span on A for A calls B. Instrumentation sends out-of band, to
the collector,  (trace id, span id, parent id, name) + client annotations.
A propagates in-band (trace id, span id) to B.
Can instrumentation on B get away with just sending (trace id, span id) +
server annotations the collector? Right now, we also send parent id in-band.

I see.
Because ServiceA will already create a spanID before calling ServiceB.
Then ServiceB just uses that spanID on SR/SS , creates a new spanID on CS/CR to next service and that one has a parentID which is sent to zipkin but it is not sent to the next service. The only thing serviceC needs to know is the current spanID and then it can create children from that.
It will also work for localspans on serviceB as they will be all children from the spanID created by serviceA
Seems that should work

Closing this what seems to be a food-for-thought issue. AFAICT parentSpanId is always propagated unless root-span. See https://github.com/openzipkin/b3-propagation#parentspanid. Feel free to correct me if i'm out in the wrong here or if it's more nuanced.


./types is not included in dist folder

Targeting<EMAIL_ADDRESS>The folder ./types is not included in the 'dist' folder. This causes some type checking issues downstream.
Take this example line:
const testFunc = useTask(function*(signal) { return "test value" });
Because ./types is not exported into the 'dist' folder, parameter 'signal' implicitly has an 'any' type as does the resulting value of 'testFunc'
The fix is to append "include": ["src/**/*.ts", "src/**/*.d.ts"], to the 'tsconfig.json' compilerOptions

Something must have broken here recently. Signal was definitely typed before. Thanks for reporting this.

Yeah, that in combination with some TS and Microbundle updates probably. I hope to switch the build to Vite at some point.
I hope to release this week 🙏


Fix type piracy with Colors.RGB

Colors.RGB gets methods for string and symbols in GridVisualizeTools.
This is type piracy. May be can be replace by parse() (see Colors.jl docs).

I think the only real occurence in this repo might be https://github.com/WIAS-PDELib/GridVisualize.jl/blob/832bac83e289f91f8b224aee4525ab65fe625b5f/src/meshcat.jl#L166
Otherwise rgbtuple is used which is defined in GridVisualizeTools.jl/src/colors.jl
so I think we should rewrite that function to use parse, right?

See: https://github.com/WIAS-PDELib/GridVisualizeTools.jl/pull/12


RaZberry board not working, no option to disable BT on Raspberry PI 3

Hi Pvizeli!
As described on the original Hass.IO installation site's Z-Wave section the RazBerry board requires the same UART channel as BT is using on the Pi 3 to function. https://www.home-assistant.io/hassio/zwave/
The ResinOS based Hass.IO was utilizing the config.txt file, but the newer version of the system based on Buildroot does not or maybe it is just not that easy to figure out how to change the settings.
After some digging, assuming that I understand correctly what's happening in the image building process I found that based on the readme here: https://github.com/home-assistant/hassos/tree/dev/buildroot/board/raspberrypi
the UART is actually used by Buildroot to provide a console interface (see remark #2). This would mean that the ReZberry's communication channel is blocked.
Do you think that this could be the reason for what the users are describing in this topic: https://community.home-assistant.io/t/razberry-and-hassos/60283
Unfortunately I'm not an expert of the new system. But would it be possible to disable the console that is opened by default? Do you think that the BT is disabled on the PI 3s?
Regards:
Botond

Have you added dtoverlay=pi3-miniuart-bt to the config.txt file in the root of the SD. Mine looked like this after editing which needs to be done on a computer that can read the squashfs file system. Mined looked like this after editing.
kernel=u-boot.bin
disable_splash=1
dtparam=audio=on
dtoverlay=pi3-miniuart-bt

not squashfs, support only GPT with hyprid support.
You can also use the command line from host.

@pvizeli

You can also use the command line from host

could you please elaborate - I didn't think you could access config.txt from the host os....

Does your Hassio - System - Hardware Look similar to this?

It looks like this:

You have a flashdrive attached and I have a USB microphone attached
the only difference I see is the gpiochip100, but that might be because I have the older Raspberry Pi 3

Agreed - looks fine to me (not an expert by any means) - have you tried resetting the board on the Pi and making sure the led lights up when you power cycle - on my older 3B it was quite temperamental.

You can edit the config from host with:
vi /mnt/boot/config.txt

Forgot to update here, I had the 64-bit version installed, then switched to the recommended 32-bit and the exact same config worked.

Of course, sorry I didn't think of that.
Great tip @pvizeli !!!! Needs to be documented - cost me two hours the other day that little trick...
I'll have my first go at a documentation PR

Hi
I have a problem.  I use SSD Disc on USB. I edited config.txt by add this dtoverlay=pi3-miniuart-bt
After add this and reboot my RPI3b+ he dont boot my Hassio. WHen delete it it works ok.


roles docs

PR checklist:

[ ] Added changelog entry.

This is a really nice overview. We should add backlinks to the API docs, roles guide and sqlalchemy guides somewhere, and also might want to mention somewhere that you can still write normal allow rules alongside the allow_role rules.
Should we talk about the specific library methods (resource_role_class and enable_roles)? I'm thinking we could say something like:
The steps to use roles are:
import sqlalchemy_oso library and set up the Oso instance for your app
create role models
enable the role base policy and write role rules in the policy
For an in-depth guide, checkout link to guides
This is kinda redundant of the guides themselves though

Closing because this was merged into #615


Update documentation about SCSS

https://github.com/material-components/material-components-web-react#step-3-using-sass is out of sync with current Create React App readme.

currently investigating with this issue https://github.com/material-components/material-components-web-react/issues/326. I will have a readme update soon. Closing as it is a duplicate. Thanks for opening the issue!


Components

Bookstore: initialize project with components.

This project will lay foundations for your Bookstore website. You will create the React part of the app. You will also set up routing using React Router.

Project requirements

Initialise React app.
The building blocks of your app should be set as re-usable components. Create a directory for your components.
Add React Router and set two s and s for the app's navigation:
Books - the default view:
Should display the list of books (empty at this point but it should be ready for the data) with the Remove button (no functionality yet).
Create a component called Book for displaying a single book (receive a title and an author as prop) and reuse it in a component that displays a list of books.
Should have a form for adding a book (no functionality yet).
Create a separate component for this form (with inputs for a title and an author [IMPORTANT in the design you can see an input for a category - please replace it with an author.]).
Categories:
Should display a button "Check status" only.
Styling is not required at this point.
A screenshot of the project output has been added.

@AnselemOdims Thank you for the quick approval. Keep up the good work.


Brother DCP-357C broken with latest updates

Hi,
My distro (Manjaro) had CUPS updated recently to version 2.3. Unfortunately this breaks my printer, Brother DCP-357C.
Any CUPS version higher than 2.2.11 refuses to work (both 2.2.12 and 2.3). The error is "Filter failed" and "Invalid PPD file" Error in line 219.
The printer was working fine on Linux since 2011, on various linux distributions.
Downgrading cups, cups-filters and libcups packages solves the problem.

This is most probably due to the fact that your PPS file contains an option with a choice names "Custom", which is very common in PPD files and also does not break Adobe's PPD specs, but CUPS 2.2.12 and newer does not accept this any more. This is not a bug in cups-filters but in CUPS, please report the bug there.


Convert discrete CC conditions without gaps

Something like hicc1=13 is actually translated to float as 13.999999999/127 instead of 13/127.

I dragged in #854 with it but it's OK.


Tag for 0.3.0 release

Would it be possible to add a tag on github for the 0.3.0 release - this exists on pypi but not on github?

Should be able to do this. Would a patch release at 0.3.1 with an associated tag be good enough? There have been some minor updates to the build cruft (3.8 support on Travis, bumping versions of requirements) and it would be nice to keep everything in sync.

Sure; all I'm really looking for is for the latest release on PyPi to have an associated Github tag (I'm packaging for NixOS and would like my package to be the same version as on PyPi but to also run tests, which of course aren't included in the PyPi release, so I'm building from Github).

I made a couple of changes to the build cruft, including locking the dependency versions in requirements.txt. Tine's latest version no longer supports python 3.5, so I've dropped that too; therefore I bumped the version to 0.4.0, which is now tagged in this repo, and uploaded to PyPI. Let me know if it all looks OK from your end!

All looks good to me, thanks!


DICOM SCU to handle none dicom file types better

Is your feature request related to a problem? Please describe.
When an export.request is sent to MIG, it contains files[]. This list may include unspecified file types as MWM will export .dcm, .DCM and unspecified file types to cater for model outputs. However sometime these unspecfied file types will not be dicoms and currently cause the Export Task to be marked as failed in the workflow.
MIG should be updated to cater for these files not being dicom.
Describe the solution you'd like
Open to a discussion on this. Needs to go through refinement

Suppress those errors completely and send a export.complete as succeeded
Q. What happens if all the files are unspecified and are all not dicom???

Suppress those errors completely and send a export.complete as succeeded but include unsuccessful files in the metadata which s appended to the task

Closing as fixed in #201


cvttps and AVX2?

Howdy Rich, very nice :)
Have you considered _mm_cvttps_epi32? I believe that has the truncation built in, so no need to change the rounding mode.
Also, do you think it would help to use AVX2 and its gather instruction for the table lookups? That would avoid the extract+insert.
If you'd prefer to avoid writing two copies of the code, I'd be happy to help with porting to github.com/google/highway.

Have you considered _mm_cvttps_epi32? I believe that has the truncation built in, so no need to change the rounding mode.

Thanks - that's a good idea. I overlooked that one. The only place that requires the rounding mode to be set to truncation is here, for the _mm_cvtps_epi32():
__m128i q = _mm_cvtps_epi32(_mm_div_ps(_mm_cvtepi32_ps(arith_value), _mm_cvtepi32_ps(r)));
(I almost gave up several times trying to get this to work and be efficient, so the rounding mode thing is an artifact of that process of figuring this out.)
I tried using AVX2 gathers - on Ice Lake they are slower than the extracts/inserts. This seems to be the consensus after some searching. It should be possible to use AVX2 to do 32 streams, though.

I've checked in this improvement.

If you'd prefer to avoid writing two copies of the code, I'd be happy to help with porting to github.com/google/highway.

I'm not worried about 2 copies. Relatively little effort has been invested into vectorizing range coding, and this repo is just an example of what's possible.

I just checked in an efficiency fix to test.cpp. The 'c' command could generate files which were too large if the input file size was >65535 bytes. This didn't impact the lower-level codec itself or the test mode, and the resulting compressed file was still correct and decompressed correctly.

Nice, glad to see you incorporated cvttps :)

I tried using AVX2 gathers - on Ice Lake they are slower than the extracts/inserts.

Interesting, that's a surprise. One potential confounder is that clang, with AVX-512 build flags at least,
actually compiles the extract+insert into a gather! https://gcc.godbolt.org/z/5j4b3z64n

It should be possible to use AVX2 to do 32 streams, though.

Yes, I figure that would be a sizeable win. 256-bit vdivps has the same latency as 128-bit on SKX, so we'd be bringing more hardware to bear.
(By contrast, the 512-bit div on SKX appears to be double-pumping that same hardware.)

Interleaved Huffman using SSE4.1 with 2 key AVX2 instructions - around 1060 MiB/sec. on 8-bit alphabets (book1). Uses 13-bit max code size and a 16KB table.
Unfortunately it needs _mm_srlv_epi32 and _mm_sllv_epi32. Emulating them with pure SSE4.1 will be costly and possibly not worth the effort vs. optimized scalar Huffman. Nearly everything about SSE/AVX fights to defeat you.

I've added benchmarks against ryg_rans and Collet's FSE benchmark - they are quite interesting:
https://github.com/richgel999/sserangecoding/blob/main/README.md
ryg_rans gets the smallest file, but it's not performing as well as I would expect. On this machine (Ice Lake) interleaved range coding is faster.

Congrats on the speed win!

Emulating them with pure SSE4.1 will be costly and possibly not worth the effort vs. optimized scalar Huffman. Nearly everything about SSE/AVX fights to defeat you.

Hah, indeed. Highway is a shield that protects us from most of the unpleasantness, and filling in such gaps.
Here's our implementation of sllv in case it's useful: https://github.com/google/highway/blob/master/hwy/ops/x86_128-inl.h#L5597

Nice. 32 lanes/AVX2 sounds interesting, I'm curious how that goes.

Got pure SSE 4.1 Huffman decoding to 950 MiB/sec. SSE 4.1+1 AVX 2 instruction is at 1254 MiB/sec. I've got all the essentials in place to try AVX 2 next. The fastest scalar Huffman decoders I'm aware of get around 600-800 MiB/sec.

I had to switch to gather (_mm256_i32gather_epi32) to get AVX2 Huffman decoding to scale. Otherwise it was stuck at 950 MiB sec. Now it's ~1780 MiB/sec.

I'm now up to 1155 MiB/sec. decoding using purely SSE 4.1 (i.e. no more _mm_sllv_epi32). I switched the 13-bit Huffman lookup table to 32-bits and put the left shift multipliers (2^code_size) into the high 16-bit words of each entry, which is faster than computing the shift muls using the FP unit.

Got SSE 4.1 Range Decoding on Ice Lake to 738 MiB/sec. by switching to 32 lanes and more efficient writing. Attempting to get it to AVX-2.
Fast scalar Huffman on the same file peaks out at around 840 MiB/sec.

First attempt at AVX-2 Range Decoding gets 1008 MiB/sec. Not scaling as well as I would expect, but it's a start.

Bumping both SSE4.1/AVX2 up to 64 lanes and further optimizing the AVX2 normalize routine for range decoding:
SSE 4.1: 733 MiB/sec.
AVX 2: 1203 MiB/sec.
So 1.6x faster.

Steady improvements, nice :)
Could be interesting to run the code through llvm-mca to guesstimate the bottlenecks.

Just optimized the AVX-2 implementation more, further vectorizing the normalization. It's now 1.86x faster vs. SSE 4.1 on Ice Lake. I'm sure it can be pushed further with more tweaks.

Nice! That's quite a speedup, more than we often see from AVX2 (unless FMA is involved).
I'm curious whether you also plan to open source that?


fix: FFI signature mismatches

As reported in https://leanprover.zulipchat.com/#narrow/stream/270676-lean4/topic/wasm.20build.20signature.20mismatch

@bollu Could you please review the LLVM changes?

I forgot to mention: lean_get_githash has the same issue.

I wonder, is it possible for us to have some sort of linter that catches this type of stuff? So something that computes the C type (this should be the easy part as we already kind of do it) and checks if it matches with the actual extern type (this is the part that idk how to do)


Running last specs more effectively

This is another thing I loved about vim-rspec but missed in vim-mocha, what do you think?
If not in spec file, RunNearestSpec will run the last ran "nearest spec", and RunCurrentSpecFile will run the last file that was under test. This improves workflow when trying to make a single test work. Once it's green, you can hit <leader>t to run all the specs in the last executed spec file. Here's more info.

Awesome! LGTM :+1:


[Snyk] Security upgrade pillow from 9.0.1 to 9.2.0

This PR was automatically created by Snyk using the credentials of a real user.Snyk has created this PR to fix one or more vulnerable packages in the `pip` dependencies of this project.
Changes included in this PR

Changes to the following files to upgrade the vulnerable dependencies to a fixed version:

pip-requirements.txt

⚠ Warning
requests 2.21.0 has requirement urllib3<1.25,>=1.21.1, but you have urllib3 1.26.5.
nosexcover 1.0.11 requires coverage, which is not installed.
nbsphinx 0.4.2 requires sphinx, which is not installed.
nbconvert 5.6.1 has requirement mistune<2,>=0.8.1, but you have mistune 2.0.3.
mongoengine 0.18.2 requires pymongo, which is not installed.
jupyter 1.0.0 requires jupyter-console, which is not installed.
ipython 5.10.0 requires simplegeneric, which is not installed.
ipython 5.10.0 has requirement prompt-toolkit<2.0.0,>=1.0.4, but you have prompt-toolkit 2.0.9.
celery 4.4.7 has requirement kombu<4.7,>=4.6.10, but you have kombu 4.6.3.
celery 4.4.7 has requirement billiard<4.0,>=<IP_ADDRESS>, but you have billiard <IP_ADDRESS>.
bokeh 1.2.0 requires pillow, which is not installed.

Vulnerabilities that will be fixed
By pinning:

Severity
Priority Score (*)
Issue
Upgrade
Breaking Change
Exploit Maturity

581/1000  Why? Recently disclosed, Has a fix available, CVSS 5.9
Denial of Service (DoS) SNYK-PYTHON-PILLOW-3113875
pillow:  9.0.1 -> 9.2.0
No
No Known Exploit

581/1000  Why? Recently disclosed, Has a fix available, CVSS 5.9
Denial of Service (DoS) SNYK-PYTHON-PILLOW-3113876
pillow:  9.0.1 -> 9.2.0
No
No Known Exploit

(*) Note that the real score may have changed since the PR was raised.
Some vulnerabilities couldn't be fully fixed and so Snyk will still find them when the project is tested again. This may be because the vulnerability existed within more than one direct dependency, but not all of the affected dependencies could be upgraded.
Check the changes in this PR to ensure they won't cause issues with your project.

Note: You are seeing this because you or someone else with access to this repository has authorized Snyk to open fix PRs.
For more information:
🧐 View latest project report
🛠 Adjust project settings
📚 Read more about Snyk's upgrade and patch logic

Learn how to fix vulnerabilities with free interactive lessons:
🦉 Denial of Service (DoS)
🦉 Denial of Service (DoS)

closing - superseded by #313 installing pillow-9.5.0