SerializeComponents::serialize panics in a really vague way if a marker is invalid

Basically, if an component contains an Entity but this referenced entity is deleted, then SerializeComponent::serialize panics with
thread 'main' panicked at 'called `Option::unwrap()` on a `None` value', libcore/option.rs:345:21
stack backtrace:
   0: std::sys::unix::backtrace::tracing::imp::unwind_backtrace
             at libstd/sys/unix/backtrace/tracing/gcc_s.rs:49
   1: std::sys_common::backtrace::print
             at libstd/sys_common/backtrace.rs:71
             at libstd/sys_common/backtrace.rs:59
   2: std::panicking::default_hook::{{closure}}
             at libstd/panicking.rs:211
   3: std::panicking::default_hook
             at libstd/panicking.rs:227
   4: <std::panicking::begin_panic::PanicPayload<A> as core::panic::BoxMeUp>::get
             at libstd/panicking.rs:477
   5: std::panicking::continue_panic_fmt
             at libstd/panicking.rs:391
   6: std::panicking::try::do_call
             at libstd/panicking.rs:326
   7: core::ptr::drop_in_place
             at libcore/panicking.rs:77
   8: core::ptr::drop_in_place
             at libcore/panicking.rs:52
   9: <core::option::Option<T>>::unwrap
             at libcore/macros.rs:20
  10: <specs::world::entity::Entity as specs::saveload::ConvertSaveload<M>>::convert_into
             at /Users/ashley/.cargo/git/checkouts/specs-18d2bb2ce407da15/b22955b/src/saveload/mod.rs:175
  11: <specs_ron_bug::Parent as specs::saveload::ConvertSaveload<MA>>::convert_into
             at src/main.rs:11
  12: <(SP,) as specs::saveload::ser::SerializeComponents<E, M>>::serialize_entity::{{closure}}
             at /Users/ashley/.cargo/git/checkouts/specs-18d2bb2ce407da15/b22955b/src/saveload/ser.rs:128
  13: <core::option::Option<T>>::map
             at libcore/option.rs:414
  14: <(SP,) as specs::saveload::ser::SerializeComponents<E, M>>::serialize_entity
             at /Users/ashley/.cargo/git/checkouts/specs-18d2bb2ce407da15/b22955b/src/saveload/ser.rs:128
  15: specs::saveload::ser::SerializeComponents::serialize
             at /Users/ashley/.cargo/git/checkouts/specs-18d2bb2ce407da15/b22955b/src/saveload/ser.rs:47
  16: <specs_ron_bug::SaveSystem as shred::system::System<'a>>::run
             at src/main.rs:48
  17: <T as shred::system::RunNow<'a>>::run_now
             at /Users/ashley/.cargo/registry/src/github.com-1ecc6299db9ec823/shred-0.7.1/src/system.rs:125
  18: specs_ron_bug::main
             at src/main.rs:33
  19: std::rt::lang_start::{{closure}}
             at libstd/rt.rs:74
  20: std::panicking::try::do_call
             at libstd/rt.rs:59
             at libstd/panicking.rs:310
  21: macho_symbol_search
             at libpanic_unwind/lib.rs:103
  22: std::sys_common::bytestring::debug_fmt_bytestring
             at libstd/panicking.rs:289
             at libstd/panic.rs:392
             at libstd/rt.rs:58
  23: std::rt::lang_start
             at libstd/rt.rs:74
  24: <specs_ron_bug::SaveSystem as shred::system::System<'a>>::run

This is probably the expected behavior, but the panic could be more informative.
Example:
Cargo.toml:
[package]
name = "specs_ron_bug"
version = "0.1.0"
authors = ["Ashley<EMAIL_ADDRESS>
[dependencies]
ron = "*"
specs = {git = "https://github.com/slide-rs/specs", commit = "b22955b", features = ["serde"]}
specs-derive = {git = "https://github.com/slide-rs/specs", commit = "b22955b"}
serde = "*"

src/main.rs:
extern crate ron;
extern crate specs;
#[macro_use]
extern crate specs_derive;
extern crate serde;

use serde::*;
use specs::{*, saveload::*, error::*};
use ron::ser;

#[derive(Component, ConvertSaveload)]
pub struct Parent(Entity);

fn main() {
    let mut world = World::new();

    world.register::<Parent>();
    world.register::<U64Marker>();

    world.add_resource(U64MarkerAllocator::new());

    let parent = world.create_entity()
        .marked::<U64Marker>()
        .build();

    world.create_entity()
        .with(Parent(parent))
        .marked::<U64Marker>()
        .build();

    world.delete_entity(parent).unwrap();

    SaveSystem.run_now(&world.res);
}

struct SaveSystem;

impl<'a> System<'a> for SaveSystem {
    type SystemData = (
        Entities<'a>,
        ReadStorage<'a, U64Marker>,
        ReadStorage<'a, Parent>
    );

    fn run(&mut self, (entities, markers, parent): Self::SystemData) {
        let mut ser = ser::Serializer::new(Default::default(), true);

        let x: Result<(), ser::Error> = SerializeComponents::<NoError, U64Marker>::serialize(
            &(parent,),
            &entities,
            &markers,
            &mut ser
        );

        x.unwrap();
    }
}

Thanks for the detailed ticket! I appreciate the contribution!
The panic was in fact not expected.


Add custom cmake target to generate protocol headers during make installheaders

Describe your PR, what does it fix/add?
As discussed in https://github.com/hyprwm/Hyprland/issues/6115, I think this is how we should do the protocol header generation: add a custom target that simply depends on the OUTPUTs of the add_custom_commands, and then execute that target in the installheaders step in the Makefile.
This way, the headers will only be generated if necessary, and if they are already there, they won't be overridden.
I reapplied the reverted commit and added my changes in the second commit.
Is there anything you want to mention? (unchecked code, possible bugs, found problems, breaking compatibility, etc.)
Is it ready for merging, or does it need work?
ready to merge
CC @fufexan @cnt0

Tested by only configuring, then running make installheaders (simulating what hyprpm does). The command executed successfully.

I tried to test it by compiling and installing to /usr/local/, and then restarting Hyprland, but when I run hyprpm update -v, I get the following error:
╰─ hyprpm update -v
[v] version returned: Hyprland, built from branch main at commit 75ab9b3274d612fa292380213767f74f912a3893  (Add custom cmake target for installheaders).
Date: Wed May 22 19:53:42 2024
Tag: , commits: 4726

flags: (if any)

[v] parsed commit 75ab9b3274d612fa292380213767f74f912a3893 at branch main on Wed May 22 19:53:42 2024, commits 4726

! Cloning https://github.com/hyprwm/hyprland, this might take a moment.
[v] will shallow since: Wed May 15 19:53:42 2024

 ╍━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━  0 / 5  Cloning the hyprland repository

✔ cloned
[v] git returned (co): Already on 'main'
Your branch is up to date with 'origin/main'.

[v] git returned (rs): rm 'subprojects/tracy'
fatal: Could not parse object '75ab9b3274d612fa292380213767f74f912a3893'.

✔ checked out to running ver

so it can't check out the commit for some reason, and then it proceeds to configure Hyprland from the main branch.
When it gets to the installheaders step, it seems to install the headers fine:
✔ configured Hyprland
[v] installation will run: sed -i -e "s#PREFIX = /usr/local#PREFIX = /home/zjeffer/.local/share/hyprpm/headersRoot#" /tmp/hyprpm/hyprland-zjeffer/Makefile && cd /tmp/hyprpm/hyprland-zjeffer && make installheaders
 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╍━━━━━━━━━  4 / 5  Installing sources[v] installer returned: # remove previous headers from hyprpm's dir
rm -fr /home/zjeffer/.local/share/hyprpm/headersRoot/include/hyprland
mkdir -p /home/zjeffer/.local/share/hyprpm/headersRoot/include/hyprland
mkdir -p /home/zjeffer/.local/share/hyprpm/headersRoot/include/hyprland/protocols
mkdir -p /home/zjeffer/.local/share/hyprpm/headersRoot/include/hyprland/wlr
mkdir -p /home/zjeffer/.local/share/hyprpm/headersRoot/share/pkgconfig
find src -name '*.h*' -print0 | cpio --quiet -0dump /home/zjeffer/.local/share/hyprpm/headersRoot/include/hyprland
cd subprojects/wlroots-hyprland/include/wlr && find . -name '*.h*' -print0 | cpio --quiet -0dump /home/zjeffer/.local/share/hyprpm/headersRoot/include/hyprland/wlr && cd ../../../..
cd subprojects/wlroots-hyprland/build/include && find . -name '*.h*' -print0 | cpio --quiet -0dump /home/zjeffer/.local/share/hyprpm/headersRoot/include/hyprland/wlr && cd ../../../..
cp ./protocols/*.h* /home/zjeffer/.local/share/hyprpm/headersRoot/include/hyprland/protocols
cp ./build/hyprland.pc /home/zjeffer/.local/share/hyprpm/headersRoot/share/pkgconfig
if [ -d /usr/share/pkgconfig ]; then cp ./build/hyprland.pc /usr/share/pkgconfig 2>/dev/null || true; fi
chmod -R 755 /home/zjeffer/.local/share/hyprpm/headersRoot/include/hyprland
chmod 755 /home/zjeffer/.local/share/hyprpm/headersRoot/share/pkgconfig

But when it then checks the installed headers, it reports a headers version mismatch:
✖ failed to install headers with error code 4
 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━  5 / 5  Failed

✖ Headers version mismatch. Please run hyprpm update to fix those.

So from what I can tell the problem isn't in my code, but in the fact that:

Hyprpm maybe can't handle checking out a specific commit that isn't in the main branch (because of shallow clone)?
When the checkout fails, it proceeds as if nothing happens. I think it should fail or at least be more clear.

Is there a way to test hyprpm with a commit built from a different branch than main?
From my manual testing (configuring (not building) hyprland and then running make installheaders), everything works fine.

@zjeffer git confuses your main branch with the repo's main branch. If you rename it, I think it should work.

Same issue, it's trying to find the branch I created in hyprpm/Hyprland, not in zjeffer/Hyprland:
╰─ hyprpm update -v
[v] version returned: Hyprland, built from branch test/zjeffer/hyprpm at commit 75ab9b3274d612fa292380213767f74f912a3893  (Add custom cmake target for installheaders).
Date: Wed May 22 19:53:42 2024
Tag: , commits: 4726

flags: (if any)

[v] parsed commit 75ab9b3274d612fa292380213767f74f912a3893 at branch test/zjeffer/hyprpm on Wed May 22 19:53:42 2024, commits 4726

! Cloning https://github.com/hyprwm/hyprland, this might take a moment.
✔ cloned
[v] git returned (co): error: pathspec 'test/zjeffer/hyprpm' did not match any file(s) known to git

[v] git returned (rs): rm 'subprojects/tracy'
fatal: Could not parse object '75ab9b3274d612fa292380213767f74f912a3893'.

Looks like hyprpm doesn't take into account forks at all.

Yeah, it's really hard to test hyprpm when you are running code from an upstream pr/fork etc.
I think it might work if you are running a branch of the main repo

@fufexan Could you push my branch to the main repo, so I can test this out?

@fufexan Could you push my branch to the main repo, so I can test this out?

Done, see the cmake_installheaders branch.

@fufexan Thanks, sadly it still doesn't work
╰─ hyprpm update -v
[v] version returned: Hyprland, built from branch  at commit c28bc6c633f1211cda46fc0170f6cafa303eaee8  ([gha] Nix: update inputs).
Date: Sat May 25 12:30:46 2024
Tag: v0.40.0-121-gc28bc6c6, commits: 4727

flags: (if any)

[v] parsed commit c28bc6c633f1211cda46fc0170f6cafa303eaee8 at branch  on Sat May 25 12:30:46 2024, commits 4727

! Cloning https://github.com/hyprwm/hyprland, this might take a moment.
[v] will shallow since: Sat May 18 12:30:46 2024

✔ cloned
[v] git returned (co): Your branch is up to date with 'origin/main'.

[v] git returned (rs): rm 'subprojects/tracy'
fatal: Could not parse object 'c28bc6c633f1211cda46fc0170f6cafa303eaee8'.

Hyprpm seems untestable if the commit is not part of the main branch...
I did test it manually by configuring Hyprland and then executing make installheaders, which was successful.

@zjeffer what distro are you on? The branch seems not to have been populated when you built Hyprland, and that's why it doesn't work.
Using commits from other branches than main works, as I've made hyprpm do a full clone on anything but main.

I'm on arch. I'll try out what's in yawor's comment soon

I tried yawor's steps (but used /usr/local instead of /usr/, because that's where I'm installing Hyprland to when building it myself), and I still get the same error with the checkout not finding the commit.
This seems to be a different issue to what's in #6232 though. There the repo is not clonable at all.

I think it's because I built from a detached head state, causing the branch to be empty. Here it shallow clones if the branch is main or empty: https://github.com/hyprwm/Hyprland/blob/main/hyprpm/src/core/PluginManager.cpp#L445.
I'll build Hyprland from the actual branch now.

It works!
Here's the full output:

hyprpm update -v

[v] version returned: Hyprland, built from branch cmake_installheaders at commit c28bc6c633f1211cda46fc0170f6cafa303eaee8  ([gha] Nix: update inputs).
Date: Sat May 25 12:30:46 2024
Tag: v0.40.0-121-gc28bc6c6, commits: 4727

flags: (if any)

[v] parsed commit c28bc6c633f1211cda46fc0170f6cafa303eaee8 at branch cmake_installheaders on Sat May 25 12:30:46 2024, commits 4727

! Cloning https://github.com/hyprwm/hyprland, this might take a moment.
✔ cloned
[v] git returned (co): Switched to a new branch 'cmake_installheaders'
branch 'cmake_installheaders' set up to track 'origin/cmake_installheaders'.

[v] git returned (rs): rm 'subprojects/tracy'
HEAD is now at c28bc6c6 [gha] Nix: update inputs

✔ checked out to running ver
! configuring Hyprland
[v] setting PREFIX for cmake to /home/zjeffer/.local/share/hyprpm/headersRoot
[v] cmake returned: CMake Warning (dev) at /usr/share/cmake/Modules/GNUInstallDirs.cmake:253 (message):
  Unable to determine default CMAKE_INSTALL_LIBDIR directory because no
  target architecture is known.  Please enable at least one language before
  including GNUInstallDirs.
Call Stack (most recent call first):
  CMakeLists.txt:5 (include)
This warning is for project developers.  Use -Wno-dev to suppress it.
Not searching for unused variables given on the command line.

-- The C compiler identification is GNU 14.1.1
-- The CXX compiler identification is GNU 14.1.1
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Gathering git info
-- Found Python3: /usr/bin/python3.12 (found version "3.12.3") found components: Interpreter
Building itab.c/itab.h...
-- Setting up wlroots
-- Found PkgConfig: /usr/bin/pkg-config (found version "2.1.1")
-- Found WaylandScanner at /usr/bin/wayland-scanner
-- Found wayland-protocols at //usr/share/wayland-protocols
-- Configuring Hyprland in Release with CMake
-- Checking deps...
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE
-- Found OpenGL: /usr/lib/libOpenGL.so  found components: GLES3
-- Checking for modules 'xkbcommon;uuid;wayland-server;wayland-client;wayland-cursor;wayland-protocols;cairo;pango;pangocairo;pixman-1;libdrm;libinput;hwdata;libseat;libdisplay-info;libliftoff;libudev;gbm;hyprlang>=0.3.2;hyprcursor>=0.1.7'
--   Found xkbcommon, version 1.7.0
--   Found uuid, version 2.40.1
--   Found wayland-server, version 1.22.0
--   Found wayland-client, version 1.22.0
--   Found wayland-cursor, version 1.22.0
--   Found wayland-protocols, version 1.36
--   Found cairo, version 1.18.0
--   Found pango, version 1.52.2
--   Found pangocairo, version 1.52.2
--   Found pixman-1, version 0.43.4
--   Found libdrm, version 2.4.120
--   Found libinput, version 1.25.0
--   Found hwdata, version 0.382
--   Found libseat, version 0.8.0
--   Found libdisplay-info, version 0.1.1
--   Found libliftoff, version 0.4.1
--   Found libudev, version 255
--   Found gbm, version 24.0.7-arch1.3
--   Found hyprlang, version 0.5.2
--   Found hyprcursor, version 0.1.8
-- Looking for execinfo.h
-- Looking for execinfo.h - found
-- Configuration supports execinfo
-- Looking for backtrace in execinfo
-- Looking for backtrace in execinfo - not found
-- Looking for sys/timerfd.h
-- Looking for sys/timerfd.h - found
-- Checking for module 'epoll-shim'
--   Package 'epoll-shim', required by 'virtual:world', not found
-- XWAYLAND Enabled (NO_XWAYLAND not defined) checking deps...
-- Checking for modules 'xcb;xwayland;xcb-util;xcb-render;xcb-xfixes;xcb-icccm;xcb-composite;xcb-res;xcb-ewmh'
--   Found xcb, version 1.17.0
--   Found xwayland, version <IP_ADDRESS>
--   Found xcb-util, version 0.4.1
--   Found xcb-render, version 1.17.0
--   Found xcb-xfixes, version 1.17.0
--   Found xcb-icccm, version 0.4.2
--   Found xcb-composite, version 1.17.0
--   Found xcb-res, version 1.17.0
--   Found xcb-ewmh, version 0.4.2
-- Checking for module 'xcb-errors'
--   Found xcb-errors, version 1.0.1
-- SYSTEMD support is requested (NO_SYSTEMD not defined)...
-- Setting precompiled headers
-- Setting link libraries
-- Checking for module 'tomlplusplus'
--   Found tomlplusplus, version 3.4.0
-- Configuring done (1.6s)
-- Generating done (0.0s)
-- Build files have been written to: /tmp/hyprpm/hyprland-zjeffer/build

[v] meson returned: The Meson build system
Version: 1.4.0
Source dir: /tmp/hyprpm/hyprland-zjeffer/subprojects/wlroots-hyprland
Build dir: /tmp/hyprpm/hyprland-zjeffer/subprojects/wlroots-hyprland/build
Build type: native build
Project name: wlroots
Project version: 0.18.0-dev
C compiler for the host machine: cc (gcc 14.1.1 "cc (GCC) 14.1.1 20240522")
C linker for the host machine: cc ld.bfd 2.42.0
Host machine cpu family: x86_64
Host machine cpu: x86_64
Compiler for C supports arguments -Wundef: YES
Compiler for C supports arguments -Wlogical-op: YES
Compiler for C supports arguments -Wmissing-include-dirs: YES
Compiler for C supports arguments -Wold-style-definition: YES
Compiler for C supports arguments -Wpointer-arith: YES
Compiler for C supports arguments -Winit-self: YES
Compiler for C supports arguments -Wstrict-prototypes: YES
Compiler for C supports arguments -Wimplicit-fallthrough=2: YES
Compiler for C supports arguments -Wendif-labels: YES
Compiler for C supports arguments -Wstrict-aliasing=2: YES
Compiler for C supports arguments -Woverflow: YES
Compiler for C supports arguments -Wmissing-prototypes: YES
Compiler for C supports arguments -Walloca: YES
Compiler for C supports arguments -Wno-missing-braces: YES
Compiler for C supports arguments -Wno-missing-field-initializers: YES
Compiler for C supports arguments -Wno-unused-parameter: YES
Compiler for C supports arguments -fmacro-prefix-map=/prefix/to/hide=: YES
Found pkg-config: YES (/usr/bin/pkg-config) 2.1.1
Run-time dependency wayland-server found: YES 1.22.0
Run-time dependency libdrm found: YES 2.4.120
Run-time dependency xkbcommon found: YES 1.7.0
Run-time dependency pixman-1 found: YES 0.43.4
Library m found: YES
Library rt found: YES
Run-time dependency wayland-protocols found: YES 1.36
Build-time dependency wayland-scanner found: YES 1.22.0
Program /usr/bin/wayland-scanner found: YES (/usr/bin/wayland-scanner)
Has header "linux/dma-buf.h" : YES
Run-time dependency egl found: YES 1.5
Run-time dependency gbm found: YES 24.0.7-arch1.3
Run-time dependency glesv2 found: YES 3.2
Program ./embed.sh found: YES (/tmp/hyprpm/hyprland-zjeffer/subprojects/wlroots-hyprland/render/gles2/shaders/./embed.sh)
Dependency pixman-1 found: YES 0.43.4 (cached)
Dependency gbm found: YES 24.0.7-arch1.3 (cached)
Checking for function "gbm_bo_get_fd_for_plane" with dependency gbm: YES
Run-time dependency libudev found: YES 255
Run-time dependency libseat found: YES 0.8.0
Build-time dependency hwdata found: YES 0.382
Run-time dependency libdisplay-info found: YES 0.1.1
Run-time dependency libliftoff found: YES 0.4.1
Run-time dependency libinput found: YES 1.25.0
Run-time dependency xcb found: YES 1.17.0
Run-time dependency xcb-dri3 found: YES 1.17.0
Run-time dependency xcb-present found: YES 1.17.0
Run-time dependency xcb-render found: YES 1.17.0
Run-time dependency xcb-renderutil found: YES 0.3.10
Run-time dependency xcb-shm found: YES 1.17.0
Run-time dependency xcb-xfixes found: YES 1.17.0
Run-time dependency xcb-xinput found: YES 1.17.0
Run-time dependency wayland-client found: YES 1.22.0
Run-time dependency xwayland found: YES <IP_ADDRESS>
Dependency xcb found: YES 1.17.0 (cached)
Run-time dependency xcb-composite found: YES 1.17.0
Run-time dependency xcb-ewmh found: YES 0.4.2
Run-time dependency xcb-icccm found: YES 0.4.2
Dependency xcb-render found: YES 1.17.0 (cached)
Run-time dependency xcb-res found: YES 1.17.0
Dependency xcb-xfixes found: YES 1.17.0 (cached)
Run-time dependency xcb-errors found: YES 1.0.1
Checking for function "xcb_xfixes_set_client_disconnect_mode" with dependencies xcb, xcb-composite, xcb-ewmh, xcb-icccm, xcb-render, xcb-res, xcb-xfixes, xcb-errors: YES
Configuring config.h using configuration
Configuring version.h using configuration
Configuring config.h using configuration
Message: Patches found. Applying...
NEW: 'patches/nvidia-hardware-cursors.patch'
NEW: 'patches/surface-nondivisible-by-scale.patch'
Build targets in project: 136

wlroots 0.18.0-dev

    drm-backend     : YES
    x11-backend     : YES
    libinput-backend: YES
    xwayland        : YES
    gles2-renderer  : YES
    vulkan-renderer : NO
    gbm-allocator   : YES
    session         : YES
    xcb-errors      : YES
    egl             : YES
    libliftoff      : YES

  User defined options
    examples        : false
    renderers       : gles2

Found ninja-1.12.1 at /usr/bin/ninja

✔ configured Hyprland
[v] installation will run: sed -i -e "s#PREFIX = /usr/local#PREFIX = /home/zjeffer/.local/share/hyprpm/headersRoot#" /tmp/hyprpm/hyprland-zjeffer/Makefile && cd /tmp/hyprpm/hyprland-zjeffer && make installheaders
 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╍━━━━━━━━━  4 / 5  Installing sources[v] installer returned: # remove previous headers from hyprpm's dir
rm -fr /home/zjeffer/.local/share/hyprpm/headersRoot/include/hyprland
mkdir -p /home/zjeffer/.local/share/hyprpm/headersRoot/include/hyprland
mkdir -p /home/zjeffer/.local/share/hyprpm/headersRoot/include/hyprland/protocols
mkdir -p /home/zjeffer/.local/share/hyprpm/headersRoot/include/hyprland/wlr
mkdir -p /home/zjeffer/.local/share/hyprpm/headersRoot/share/pkgconfig
cmake --build ./build --config Release --target generate-protocol-headers
[0/2] Re-checking globbed directories...
[1/38] Generating /tmp/hyprpm/hyprland-zjeffer/protocols/wlr-screencopy-unstable-v1-protocol.h
[2/38] Generating /tmp/hyprpm/hyprland-zjeffer/protocols/hyprland-global-shortcuts-v1-protocol.h
[3/38] Generating /tmp/hyprpm/hyprland-zjeffer/protocols/hyprland-toplevel-export-v1-protocol.h
[4/38] Generating /tmp/hyprpm/hyprland-zjeffer/protocols/wlr-gamma-control-unstable-v1.cpp, /tmp/hyprpm/hyprland-zjeffer/protocols/wlr-gamma-control-unstable-v1.hpp
[5/38] Generating /tmp/hyprpm/hyprland-zjeffer/protocols/wlr-foreign-toplevel-management-unstable-v1.cpp, /tmp/hyprpm/hyprland-zjeffer/protocols/wlr-foreign-toplevel-management-unstable-v1.hpp
[6/38] Generating /tmp/hyprpm/hyprland-zjeffer/protocols/wlr-output-power-management-unstable-v1.cpp, /tmp/hyprpm/hyprland-zjeffer/protocols/wlr-output-power-management-unstable-v1.hpp
[7/38] Generating /tmp/hyprpm/hyprland-zjeffer/protocols/linux-dmabuf-unstable-v1-protocol.h
[8/38] Generating /tmp/hyprpm/hyprland-zjeffer/protocols/text-input-unstable-v1-protocol.h
[9/38] Generating /tmp/hyprpm/hyprland-zjeffer/protocols/virtual-keyboard-unstable-v1.cpp, /tmp/hyprpm/hyprland-zjeffer/protocols/virtual-keyboard-unstable-v1.hpp
[10/38] Generating /tmp/hyprpm/hyprland-zjeffer/protocols/wlr-virtual-pointer-unstable-v1.cpp, /tmp/hyprpm/hyprland-zjeffer/protocols/wlr-virtual-pointer-unstable-v1.hpp
[11/38] Generating /tmp/hyprpm/hyprland-zjeffer/protocols/input-method-unstable-v2.cpp, /tmp/hyprpm/hyprland-zjeffer/protocols/input-method-unstable-v2.hpp
[12/38] Generating /tmp/hyprpm/hyprland-zjeffer/protocols/wlr-output-management-unstable-v1.cpp, /tmp/hyprpm/hyprland-zjeffer/protocols/wlr-output-management-unstable-v1.hpp
[13/38] Generating /tmp/hyprpm/hyprland-zjeffer/protocols/kde-server-decoration.cpp, /tmp/hyprpm/hyprland-zjeffer/protocols/kde-server-decoration.hpp
[14/38] Generating /tmp/hyprpm/hyprland-zjeffer/protocols/wlr-data-control-unstable-v1.cpp, /tmp/hyprpm/hyprland-zjeffer/protocols/wlr-data-control-unstable-v1.hpp
[15/38] Generating /tmp/hyprpm/hyprland-zjeffer/protocols/hyprland-focus-grab-v1.cpp, /tmp/hyprpm/hyprland-zjeffer/protocols/hyprland-focus-grab-v1.hpp
[16/38] Generating /tmp/hyprpm/hyprland-zjeffer/protocols/wlr-layer-shell-unstable-v1.cpp, /tmp/hyprpm/hyprland-zjeffer/protocols/wlr-layer-shell-unstable-v1.hpp
[17/38] Generating /tmp/hyprpm/hyprland-zjeffer/protocols/tearing-control-v1.cpp, /tmp/hyprpm/hyprland-zjeffer/protocols/tearing-control-v1.hpp
[18/38] Generating /tmp/hyprpm/hyprland-zjeffer/protocols/fractional-scale-v1.cpp, /tmp/hyprpm/hyprland-zjeffer/protocols/fractional-scale-v1.hpp
[19/38] Generating /tmp/hyprpm/hyprland-zjeffer/protocols/xdg-output-unstable-v1.cpp, /tmp/hyprpm/hyprland-zjeffer/protocols/xdg-output-unstable-v1.hpp
[20/38] Generating /tmp/hyprpm/hyprland-zjeffer/protocols/cursor-shape-v1.cpp, /tmp/hyprpm/hyprland-zjeffer/protocols/cursor-shape-v1.hpp
[21/38] Generating /tmp/hyprpm/hyprland-zjeffer/protocols/idle-inhibit-unstable-v1.cpp, /tmp/hyprpm/hyprland-zjeffer/protocols/idle-inhibit-unstable-v1.hpp
[22/38] Generating /tmp/hyprpm/hyprland-zjeffer/protocols/relative-pointer-unstable-v1.cpp, /tmp/hyprpm/hyprland-zjeffer/protocols/relative-pointer-unstable-v1.hpp
[23/38] Generating /tmp/hyprpm/hyprland-zjeffer/protocols/xdg-decoration-unstable-v1.cpp, /tmp/hyprpm/hyprland-zjeffer/protocols/xdg-decoration-unstable-v1.hpp
[24/38] Generating /tmp/hyprpm/hyprland-zjeffer/protocols/alpha-modifier-v1.cpp, /tmp/hyprpm/hyprland-zjeffer/protocols/alpha-modifier-v1.hpp
[25/38] Generating /tmp/hyprpm/hyprland-zjeffer/protocols/pointer-gestures-unstable-v1.cpp, /tmp/hyprpm/hyprland-zjeffer/protocols/pointer-gestures-unstable-v1.hpp
[26/38] Generating /tmp/hyprpm/hyprland-zjeffer/protocols/ext-foreign-toplevel-list-v1.cpp, /tmp/hyprpm/hyprland-zjeffer/protocols/ext-foreign-toplevel-list-v1.hpp
[27/38] Generating /tmp/hyprpm/hyprland-zjeffer/protocols/keyboard-shortcuts-inhibit-unstable-v1.cpp, /tmp/hyprpm/hyprland-zjeffer/protocols/keyboard-shortcuts-inhibit-unstable-v1.hpp
[28/38] Generating /tmp/hyprpm/hyprland-zjeffer/protocols/pointer-constraints-unstable-v1.cpp, /tmp/hyprpm/hyprland-zjeffer/protocols/pointer-constraints-unstable-v1.hpp
[29/38] Generating /tmp/hyprpm/hyprland-zjeffer/protocols/text-input-unstable-v3.cpp, /tmp/hyprpm/hyprland-zjeffer/protocols/text-input-unstable-v3.hpp
[30/38] Generating /tmp/hyprpm/hyprland-zjeffer/protocols/xdg-activation-v1.cpp, /tmp/hyprpm/hyprland-zjeffer/protocols/xdg-activation-v1.hpp
[31/38] Generating /tmp/hyprpm/hyprland-zjeffer/protocols/ext-idle-notify-v1.cpp, /tmp/hyprpm/hyprland-zjeffer/protocols/ext-idle-notify-v1.hpp
[32/38] Generating /tmp/hyprpm/hyprland-zjeffer/protocols/ext-session-lock-v1.cpp, /tmp/hyprpm/hyprland-zjeffer/protocols/ext-session-lock-v1.hpp
[33/38] Generating /tmp/hyprpm/hyprland-zjeffer/protocols/presentation-time.cpp, /tmp/hyprpm/hyprland-zjeffer/protocols/presentation-time.hpp
[34/38] Generating /tmp/hyprpm/hyprland-zjeffer/protocols/tablet-v2.cpp, /tmp/hyprpm/hyprland-zjeffer/protocols/tablet-v2.hpp
[35/38] Generating /tmp/hyprpm/hyprland-zjeffer/protocols/primary-selection-unstable-v1.cpp, /tmp/hyprpm/hyprland-zjeffer/protocols/primary-selection-unstable-v1.hpp
[36/38] Generating /tmp/hyprpm/hyprland-zjeffer/protocols/xdg-shell.cpp, /tmp/hyprpm/hyprland-zjeffer/protocols/xdg-shell.hpp
[37/38] Generating /tmp/hyprpm/hyprland-zjeffer/protocols/wayland.cpp, /tmp/hyprpm/hyprland-zjeffer/protocols/wayland.hpp
find src -name '*.h*' -print0 | cpio --quiet -0dump /home/zjeffer/.local/share/hyprpm/headersRoot/include/hyprland
cd subprojects/wlroots-hyprland/include/wlr && find . -name '*.h*' -print0 | cpio --quiet -0dump /home/zjeffer/.local/share/hyprpm/headersRoot/include/hyprland/wlr && cd ../../../..
cd subprojects/wlroots-hyprland/build/include && find . -name '*.h*' -print0 | cpio --quiet -0dump /home/zjeffer/.local/share/hyprpm/headersRoot/include/hyprland/wlr && cd ../../../..
cp ./protocols/*.h* /home/zjeffer/.local/share/hyprpm/headersRoot/include/hyprland/protocols
cp ./build/hyprland.pc /home/zjeffer/.local/share/hyprpm/headersRoot/share/pkgconfig
if [ -d /usr/share/pkgconfig ]; then cp ./build/hyprland.pc /usr/share/pkgconfig 2>/dev/null || true; fi
chmod -R 755 /home/zjeffer/.local/share/hyprpm/headersRoot/include/hyprland
chmod 755 /home/zjeffer/.local/share/hyprpm/headersRoot/share/pkgconfig

✔ installed headers
 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━  5 / 5  Done!

 → checking for updates for split-monitor-workspaces
 → Cloning https://github.com/Duckonaut/split-monitor-workspaces
 → Plugin has revision set, resetting: 342c4cfb90cf866a9b86caef1293cca08c0d4009
✔ repository split-monitor-workspaces has updates.
 → Building split-monitor-workspaces
✔ found hyprpm manifest
 → Building split-monitor-workspaces
 ━━━━━━━━━━━━━━━━━━━━━━━━━╍━━━━━━━━━━━━━━━━━━━━━━━━  2 / 4  Updating split-monitor-workspaces
[v] shell returned:  -> cd /tmp/hyprpm/zjeffer && PKG_CONFIG_PATH="/home/zjeffer/.local/share/hyprpm/headersRoot/share/pkgconfig" meson setup build --wipe
The Meson build system
Version: 1.4.0
Source dir: /tmp/hyprpm/zjeffer
Build dir: /tmp/hyprpm/zjeffer/build
Build type: native build
Project name: split-monitor-workspaces
Project version: 0.1
C++ compiler for the host machine: c++ (gcc 14.1.1 "c++ (GCC) 14.1.1 20240522")
C++ linker for the host machine: c++ ld.bfd 2.42.0
Host machine cpu family: x86_64
Host machine cpu: x86_64
Compiler for C++ supports arguments -std=c++23: YES
meson.build:8: WARNING: Consider using the built-in option for language standard version instead of using "-std=c++23".
Found pkg-config: YES (/usr/bin/pkg-config) 2.1.1
Run-time dependency hyprland found: YES 0.40.0
Run-time dependency pixman-1 found: YES 0.43.4
Run-time dependency libdrm found: YES 2.4.120
Build targets in project: 1

Found ninja-1.12.1 at /usr/bin/ninja

 -> cd /tmp/hyprpm/zjeffer && PKG_CONFIG_PATH="/home/zjeffer/.local/share/hyprpm/headersRoot/share/pkgconfig" meson compile -C build
ninja: Entering directory `/tmp/hyprpm/zjeffer/build'
[1/2] Compiling C++ object libsplit-monitor-workspaces.so.p/src_main.cpp.o
[2/2] Linking target libsplit-monitor-workspaces.so
INFO: autodetecting backend as ninja
INFO: calculating backend command to run: /usr/bin/ninja -C /tmp/hyprpm/zjeffer/build

✔ built split-monitor-workspaces into build/libsplit-monitor-workspaces.so
✔ updated split-monitor-workspaces
 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━  4 / 4  Done!
✔ Ensuring plugin load state
✔ Loaded split-monitor-workspaces
✔ Plugin load state ensured

Great then, merging.


Create edu.txt

The emails in this domain are issued to all students and teachers in the city of Lublin through an integrated system.

@Nacioszeczek First stage of verification passed, official domain is lublin.eu as far as I verified. This is just an informational note. Pull request is still in the review. I appreciate your patience while waiting for the final decision.

@Nacioszeczek Pull request merged. Thank you!


/goterm/{id} returns {foo:bar}.   Looking for xontology relations.

When I hit this:
https://api.monarchinitiative.org/api/bioentity/goterm/GO%3A0032762?fetch_objects=true&rows=100
I get this:
{
"foo": "bar"
}
What I was looking for were some cross ontology references like one can get from EBI QuickGo.

not yet implemented - best to use scigraph for now


PR: Change variable explorer title for NumPy object arrays

Description of Changes

[x] Wrote at least one-line docstrings (for any new functions)
[x] Added unit test(s) covering the changes (if testable)

[x] Included a screenshot or animation (if affecting the UI, see Licecap)

Change the title for NumPy arrays in the variable explorer

Issue(s) Resolved

Fixes #11331
Affirmation
By submitting this Pull Request or typing my (user)name below,
I affirm the Developer Certificate of Origin
with respect to all commits and content included in this PR,
and understand I am releasing the same under Spyder's MIT (Expat) license.

I certify the above statement is true and correct: Steff456

Please post an image

@steff456, please make your branch to derive from our 4.x branch (instead of master), with the following commands:
git checkout 4.x
git checkout fix-11331
git rebase --onto 4.x master fix-11331
git push -f origin fix-11331


Implement python3 jenkins job for the baseline unit tests

Impact of the new feature
WMAgent/Jenkins
Is your feature request related to a problem? Please describe.
As we port code to python3, we need to have the ability to also execute unit tests in a python3 stack.
Describe the solution you'd like
Create another dmwm-jenkins job (similar to DMWM-WMAgent-TestAll) which will execute all the WMCore unit tests against the master/HEAD branch - using a WMCore python3 stack - which is used as a baseline for the PR tests.
Describe alternatives you've considered
None, it must be done!
Additional context
This wiki has some documentation on all those jenkins jobs created for WMCore/WMAgent:
https://github.com/dmwm/WMCore/wiki/Understanding-Jenkins

Keeping record of all the required changes here (will update this comment as other changes are required):
https://github.com/dmwm/deployment/pull/1055

Python3 pylint checks have also been created in our Jenkins setup. This is the Docker PR providing those changes:
https://github.com/dmwm/Docker/pull/128
A new and standalone jenkins job is now executed once a day: DMWM-WMCore-pylintpy3, performing a Python3 static analysis of the whole WMCore master code.
Last but not least, here is a flowchart representing our set of jenkins jobs: https://github.com/dmwm/WMCore/pull/10560
and the documentation has been properly updated.

All the PR have been merged and WMCore Jenkins have the proper configurations in place now. Closing this ticket.


Build Team gallery does not swipe properlly.

As title.
Dragging the image does not set to the next slide and same with buttons.

Also aware of that... 🙂

Seems to work for me on mobile


Simpler square-root computation for Ed25519

Description:
Mark Wooden and Franck Rondepierre noted that the square-root-mod-p
operations used in the EdDSA RFC (RFC 8032) can be simplified.  For
Ed25519, instead of computing u*v^3 * (u * v^7)^((p-5)/8), we can
compute u * (u*v)^((p-5)/8).  This saves 3 multiplications and 2
squarings.  For more details (including a proof), see the following
message from the CFRG mailing list:
https://mailarchive.ietf.org/arch/msg/cfrg/qlKpMBqxXZYmDpXXIx6LO3Oznv4/
Note that the Ed448 implementation (see
ossl_curve448_point_decode_like_eddsa_and_mul_by_ratio() in
./crypto/ec/curve448/curve448.c) appears to already use this simpler
method (i.e. it does not follow the method suggested in RFC 8032).
Testing:
Build and then run the test suite:
  ./Configure -Werror --strict-warnings
  make update
  make
  make test

Numerical testing of the square-root computation can be done using the
following sage script:
  def legendre(x,p):
      return kronecker(x,p)

  # Ed25519
  p = 2**255-19
  # -1 is a square
  if legendre(-1,p)==1:
      print("-1 is a square")

  # suppose u/v is a square.
  # to compute one of its square roots, find x such that
  #    x**4 == (u/v)**2 .
  # this implies
  #    x**2 ==  u/v, or
  #    x**2 == -(u/v) ,
  # which implies either x or i*x is a square-root of u/v (where i is a square root of -1).
  # we can take x equal to u * (u*v)**((p-5)/8).

  # 2 is a generator
  # this can be checked by factoring p-1
  # and then showing 2**((p-1)/q) != 1 (mod p)
  # for all primes q dividing p-1.
  g = 2
  s = p>>2  # s = (p-1)/4
  i = power_mod(g, s, p)

  t = p>>3  # t = (p-5)/8
  COUNT = 1<<18
  while COUNT > 0:
      COUNT -= 1

      r = randint(0,p-1)   # r = u/v
      v = randint(1,p-1)
      u = mod(r*v,p)

      # compute x = u * (u*v)**((p-5)/8)
      w = mod(u*v,p)
      x = mod(u*power_mod(w, t, p), p)

      # check that x**2 == r, or (i*x)**2 == r, or r is not a square
      rr = power_mod(x, 2, p)
      if rr==r:
          continue

      rr = power_mod(mod(i*x,p), 2, p)
      if rr==r:
          continue

      if legendre(r,p) != 1:
          continue

      print("failure!")
      exit()

  print("passed!")

Checklist

I just processed it.  It can take a few minutes to wend it's way through the system...

Which wouldn't meet the trivial criteria :)

Out of curiosity I tried to measure if this has an impact on the Ed25519 performance,
I tried ./util/shlib_wrap.sh apps/openssl speed ed25519 but could not see any, measurable difference.
Did you collect some performance data?

Hi Bernd.  No, I did not do any performance measurements.
Point decoding (the operation that needs a square-root-mod-p) is used only in Ed25519 verification.  Some implementations do two point decodes inside verification, but the openssl implementation does only one.  The time to compute the square root is dominated by the computation w^((p-5)/8).  This change saves 3 mults and 2 squares, but that makes little difference next to w^((p-5)/8).
I did try ./util/shlib_wrap.sh apps/openssl speed ed25519 a few times with this change and without it.  I agree that there is no measurable improvement (note that I did confirm that the code I changed is indeed being executed during verification :-) ) .  I think I would need to modify the verification speed test to uncover the (very) small performance benefit of the simpler computation.

Yes, thanks for confirmation.
I was just wondering if there is a significant performance improvement that it would justify back-porting to stable branches.

24 hours has passed since 'approval: done' was set, but as this PR has been updated in that time the label 'approval: ready to merge' is not being automatically set.  Please review the updates and set the label manually.

Merged to master branch. Thank you for your contribution.

that was quick.  Thanks, Tomas :-)


[Feature]  Add task trigger to start up its depended on processes immediately

As far as I know, every DAG auto run is initiated by a time trigger.
If the relationship between jobs is very complex and cannot be easily implemented in one DAG.
Although we can split into multiple DAGs through "dependency", these splited DAG can only be started by time trigger and failed retry policy. If the time setting is early, the polling takes up resources. If the time setting is late, there will be some time wasted.

据我所知，每个DAG自动运行都是由时间触发器启动的。如果作业之间的关系非常复杂，不能轻易在一个DAG中实现时，虽然可以通过"依赖"拆解为多个DAG，但是拆解后的DAG只能通过时间触发以及失败重试策略来启动。如果时间设置早了，就挂起轮询占用资源。如果设置晚了，中间会存在空档期。
能否考虑在每个任务完成时主动扫描其依赖项，如果其下游依赖项均满足，会立刻触发。

I think this is a nice feature. In my opinion, every node in the DAG that dependent on other node is trigger by a event, and the node without dependency is trigger by time (crontab) or manual start. This is not a nice design. maybe we can made all node support event-driven and time-driven.

+1


Rips not working when I change maxdim

I've been using Rips to make persistence diagrams. It works fine with the default maxdim=1. However, when I change to maxdim=2, I get no output and the stored variables I had disappear. I'm using Spyder to run my code, and all the variables in my variable explorer window disappear when I run maxdim=2. What is happening?
For example, this works fine:
rips=Rips()
dgms_X = rips.fit_transform(data)
plot_diagrams(dgms_X, show=True)
This dies:
rips=Rips(maxdim=2)
dgms_X = rips.fit_transform(data)
plot_diagrams(dgms_X, show=True)
Thank you!!

This seems to be related to the python wrapper ripser.py. I am closing this issue here, as it does not show up in the core C++ code.


Tests for EGU peripheral for nrf52_bsim target

Implementation of this feature for nrf52_bsim platform is in https://github.com/zephyrproject-rtos/nrf_hw_models/pull/6
https://github.com/BabbleSim/ext_NRF52_hw_models/pull/31

@RobertGalatNordic , @aescolar , I'm wondering if we should really add bsim tests in the zephyr repo. The intention of adding tests is good. But it would be better if tests are located closer to the actual code. Maybe this can be solved by adding support for gtest or some other simple test framework in the hw model repo?


VM version for local setup is hardcoded

Description:
The VM version of the local setup is hardcoded in const.go. This should be improved to be given as an argument to the make target when building the installer.

Resolved, hence closing.


tabbing from body of issue textarea and pressing space doesn't submit

create a new issue
tab from the issue title into the body textarea, type description
tab from body and press space (which is a button press when a button is highlighted) and issue is not submitted. instead the page just moves down.

Tabbing from the body actually makes it select the gogs-logo in the header (FWIW, still a bug)

This is claimed to be fixed by merging #2582

works a treat :)

Thanks your confirmation!


Client crashing once while loading (Arch Linux)

Since Song of the Elves released after I updated my Client it seems to get just before the login point and then crashes. I've tried using osbuddy and that client seems to work just fine. I am using a dell XPS 13 9434 running arch. I've tried to do some research and I think it might be a connection issue? If anyone has any insight on what might be the issue it would be greatly appreciated! Below is what comes from my log file.
2019-07-28 00:41:34 [main] INFO  net.runelite.client.rs.ClientLoader - client-patch 259011122.206
2019-07-28 00:41:36 [main] INFO  n.r.c.plugins.kourendlibrary.Library - Library is now reset
2019-07-28 00:41:39 [AWT-EventQueue-0] INFO  net.runelite.client.ui.ClientUI - Showing frame net.runelite.client.ui.ContainableFrame[frame0,0,0,1920x1044,layout=java.awt.BorderLayout,title=RuneLite,resizable,maximized,defaultClose>
2019-07-28 00:41:39 [main] INFO  n.r.client.discord.DiscordService - Initializing Discord RPC service.
2019-07-28 00:41:45 [main] INFO  net.runelite.client.RuneLite - Client initialization took 17338ms. Uptime: 18162ms
2019-07-28 00:41:58 [main] INFO  net.runelite.client.rs.ClientLoader - client-patch 259011122.206
2019-07-28 00:42:01 [main] INFO  n.r.c.plugins.kourendlibrary.Library - Library is now reset
2019-07-28 00:42:03 [AWT-EventQueue-0] INFO  net.runelite.client.ui.ClientUI - Showing frame net.runelite.client.ui.ContainableFrame[frame0,0,0,1920x1044,layout=java.awt.BorderLayout,title=RuneLite,resizable,maximized,defaultClose>
2019-07-28 00:42:03 [main] INFO  n.r.client.discord.DiscordService - Initializing Discord RPC service.
2019-07-28 00:42:20 [main] INFO  net.runelite.client.rs.ClientLoader - client-patch 259011122.206
2019-07-28 00:42:23 [main] INFO  n.r.c.plugins.kourendlibrary.Library - Library is now reset
2019-07-28 00:42:25 [AWT-EventQueue-0] INFO  net.runelite.client.ui.ClientUI - Showing frame net.runelite.client.ui.ContainableFrame[frame0,0,0,1920x1044,layout=java.awt.BorderLayout,title=RuneLite,resizable,maximized,defaultClose>
2019-07-28 00:42:25 [main] INFO  n.r.client.discord.DiscordService - Initializing Discord RPC service.
2019-07-28 14:14:06 [main] ERROR net.runelite.client.rs.ClientLoader - Error loading RS!
java.net.UnknownHostException: oldschool.runescape.com: Temporary failure in name resolution
at java.base/java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
at java.base/java.net.InetAddress$PlatformNameService.lookupAllHostAddr(InetAddress.java:929)
at java.base/java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1515)
at java.base/java.net.InetAddress$NameServiceAddresses.get(InetAddress.java:848)
at java.base/java.net.InetAddress.getAllByName0(InetAddress.java:1505)
at java.base/java.net.InetAddress.getAllByName(InetAddress.java:1364)
at java.base/java.net.InetAddress.getAllByName(InetAddress.java:1298)
at okhttp3.Dns$1.lookup(Dns.java:39)
at okhttp3.internal.connection.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:170)
at okhttp3.internal.connection.RouteSelector.nextProxy(RouteSelector.java:136)
at okhttp3.internal.connection.RouteSelector.next(RouteSelector.java:81)
at okhttp3.internal.connection.StreamAllocation.findConnection(StreamAllocation.java:171)
at okhttp3.internal.connection.StreamAllocation.findHealthyConnection(StreamAllocation.java:121)
at okhttp3.internal.connection.StreamAllocation.newStream(StreamAllocation.java:100)
at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:42)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67)
at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:93)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67)
at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:120)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92

Just out of curiosity, how are you running RL on arch? Are you using this:
https://aur.archlinux.org/packages/runelite/

@nateisonfire yeah I'm using that aur repo, I was able to get the client to launch if I quickly logged out of the runelite client (not runescape), and when I try to log back into runelite it crashes again. Do you think the repo isn't fully up to date?

From Adam's comment:

The AUR version is not something we officially maintain or support. Does the Linux version on runelite.net work?

Reopen this issue if the problem persists in the latest release of RuneLite.

Reopen this issue if the problem persists in the latest release of RuneLite.


Templates support 2

Ref #37
Only the 'Create' call is ready so far. I'll do the rest soon, and also get my head around .NET tests to go with them.

@jamesoflol The approach you are taking is perfect, thank you!
As a general rule-of-thumb, I put "[WIP]" on pull requests that are still works-in-progress.  That way we will know which ones are ready for final review.

Hey Darren,
Two API calls now available:

Create
Retrieve


same_as with missing destinations should be stored for reimport

https://github.com/time-link/timelink-py/blob/a13aa8d760003148d7da652a22fc3ac9254c948a/timelink/kleio/kleio_handler.py#L332-L338

When using TimelinkDatabase.update_from_sources() with a et of sources it is common to have errors on import because sources refer to entities in other sources that are not yet imported. So it is necessary to redo the import after the first try to get an error free import.
For instance, when importing sources A,B,C,and D, if A contains references to B and C to D, we get errors when importing A (because B references not yet in the database) and in C (because D references not yet in the database.
So after the first run it is necessary to reimport A and C.
This could be automated if a note is made of there external references type exceptions while importing and at the end of the run of update sources, go back and reimport those with errors.
This could be quite dumb and still effective: sabe current timestamp, after update_from_sources(path=), select files imported with errors after timestamp, reimport those.


[API]add experiment detail

What problem does this PR solve?
add experiment detail
What is changed and how does it work?
add experiment detail
Check List
Tests

No code

Code changes

Has Go code change

Side effects

NO

Related changes

NO

Does this PR introduce a user-facing change?:

NONE

Codecov Report

Merging #564 into master will decrease coverage by 5.30%.
The diff coverage is 39.44%.

@@            Coverage Diff             @@
##           master     #564      +/-   ##
==========================================
- Coverage   61.39%   56.08%   -5.31%
==========================================
  Files          64       66       +2
  Lines        4069     4256     +187
==========================================
- Hits         2498     2387     -111
- Misses       1383     1699     +316
+ Partials      188      170      -18

Impacted Files
Coverage Δ

api/v1alpha1/kernelchaos_types.go
13.84% <0.00%> (+9.40%)
:arrow_up:

api/v1alpha1/timechaos_types.go
17.14% <0.00%> (+7.14%)
:arrow_up:

controllers/kernelchaos_controller.go
0.00% <0.00%> (ø)

controllers/podchaos/types.go
65.95% <0.00%> (ø)

controllers/stresschaos_controller.go
0.00% <0.00%> (ø)

pkg/chaosdaemon/netem_linux.go
26.66% <0.00%> (ø)

pkg/chaosdaemon/netlink_linux.go
0.00% <ø> (ø)

pkg/chaosdaemon/stress_server_linux.go
0.00% <0.00%> (ø)

pkg/utils/chaosdaemon.go
51.21% <ø> (ø)

pkg/webhook/config/config.go
17.14% <ø> (-72.86%)
:arrow_down:

... and 48 more

Continue to review full report at Codecov.

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

/run-e2e-test

/run-e2e-test

/run-e2e-test

/run-e2e-test

/run-e2e-test


Batch API requests

@jeeyoungk @achow

can we have a test adding multiple metrics?

Looks like this requires callers to batch instead of the API doing the batching? I think it'd be nicer if we did the latter.


Add revision table

Fields that belong to publication

Title
Abstract
Type
Comments
Statistics (Views & aggregate downloads)
Handle link (not editable)
Approval status
Permission (i.e. is a private submission)

Fields that belong to revision

Submission date (not editable)
Submitter (not editable)
Author(s)
Institution
Revision notes
Keywords (Tags)
Grant/Tracking Number
Disclaimer
Categories
Resources (files/github and thumbnail logo)
License
Review / Certification level
Export citation link (contains date)

Unknown fields

Related work --> is this displayed anywhere?
Copyright holder -->  is this displayed anywhere?

@josephsnyder this is ready for a first review.

@josephsnyder I amended the original commits to include the changes we discussed. Let me know what you think!


[v9.0.0rc3] Whoops right pane crops error line off top of screen

On the whoops display, the line with the error is usually cropped off the top of the screen. The only time this doesn't happen is when the error is at the end of the file.
The issue appears to be that on v8 the body of the code preview was vertically centered. On v9 it is bottom aligned, usually leaving the line it should be centered about cropped off the top of the pane.

Hi @JohntheFish , can you give me an example of how to reproduce this? Unfortunately i was not able to reproduce that issue. Thank you!

hack any php file > 30 lines long. Create a deliberate php error anywhere not in the last 30 lines. Refresh the page.
The error should be centered in the whoops right pane
Instead it is cropped off the top of the right pane.

whoops_demo.zip
Hi  @JohntheFish,
i have created a small package called "Whoops Demo" to reproduce this. This contains a single page rendered in the frontend, it generated 30 line breaks and then it breaks the page with a division by zero error.
This is how it looks like in version 9:

This is how it looks like in version 8.5.5:

The error message appears twice in version 9 below the arguments. Do you mean this? If yes this has nothing to do with the line length in my case. When i remove all the line breaks it looks the same.
Furthermore this element (id frame-code-args-0) is place in the DOM at this position. Maybe this issue is related to a newer version of https://github.com/filp/whoops?

Code error introduced to Page class

Okay got you. This issue is related to the new version 2.14 of https://github.com/filp/whoops. I have downgraded to 2.13 and that fixed the issue.

When I looked in the dev console at the whoops, the correct line is there. What it isn't doing is centering the code snippet about that line in the panel.
My thought was that css for vertical centering the whoops code fragment was not being loaded. Perhaps a v9 css issue rather than a whoops issue.

But there is no custom CSS/JS included from the core within this error page. In version 2.14 they have switched the syntax highlighting to Prism.js. Seems that this is not working stable in the current release.

Ah, thanks for the clarification.

Your welcome :)

It's this issue, isn't it?
https://github.com/filp/whoops/issues/699


fix/close-animation-modal-conflict

Fix for https://github.com/MobileReality/react-native-select-pro/issues/227 issue.
Related react native issue: https://github.com/facebook/react-native/issues/33733 (closed but not resolved)

Probably related to:
https://github.com/facebook/react-native/issues/16182
https://github.com/facebook/react-native/issues/33733
https://github.com/facebook/react-native/issues/34184


Image not displayed on linux-arm

I did some tests with a Raspberry Pi and am having problems with Image controls.
On at least Linux Mate and Raspbian the Image controls don't get rendered correctly,
only gray rectangles.
I used Visual Studio with the Avalonia extension and created a new app with the template. To be able to compile the app for either Windows or the Raspberry, I added RIDs to my csproj, namely win-x64 and linux-arm. I then published it self-contained and copied it to the Raspberry. The first problem was that I needed an ARM compatible libSkiaSharp. I built one using the build script here https://github.com/terwoord/skiasharp-raspberry.
The app starts and displays the window but Image controls are rendered as gray rectangles (tested with png images which are specified in Xaml for the Image.Source property). There are no error messages in the terminal except the same few messages that occur on a full Ubuntu where the Images are rendered. They are also rendered on my Windows machine.
I played around with assigning the image file in Xaml and also programmatically. In the latter case I was able to check that no exception occurs during loading the image from file into a Bitmap. Also I could verify that the Bitmap object has the correct dimensions after loading the file. It just gets not rendered when assigned to Image.Source.
Any idea what could be going wrong here?
Is there any other way to draw an image on the window as an intermediate solution?

I tried what happens with an ImageBrush in a Canvas: same result, only gray rectangles.

Can you show the memory?

Thanks, that's a good idea. However, on my way to debug the memory I encountered surprising results. Unfortunately my intentionally simple test app was already to complex in that it scaled the Image controls. Now it turns out that the gray rectangles that I see  are simply the upper left corners of my original image (by coincidence the test image had a solid gray in the upper left corner, had it been a photo I would have noticed it immediately :-( ). When I don't scale the Images, everything is rendered correctly.
That means there is no problem with pixel rendering on the Raspberry but with scaling the images! On Windows 10 the Images are scaled correctly.
I guess I should close this issue and create a new one...


pull request for e2e test at 11/12/2016 01:15:09

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

optest/docs/updated_at.md
:white_check_mark:Succeeded

Details

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


Treemap

Pull Request Test Coverage Report for Build 322449216

0 of 75 (0.0%)  changed or added relevant lines in 3 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-1.2%) to 24.172%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

src/templates/ClauseMainPage/ClauseMainPage.tsx
0
1
0.0%

src/components/charts/Treemap/Treemap.tsx
0
13
0.0%

src/utils/treemap.ts
0
61
0.0%

Totals

Change from base Build 319758857:
-1.2%

Covered Lines:
324

Relevant Lines:
1387

💛  - Coveralls


add script for parcel linking

Wrote a script to make parcel linking easier and updated the docs.

Closing this in favour of #190 which has these changes but also other things.


Version 0.8.3 hangs

Some part of the quoted string change broke this module for me. I'm digging through for the issue now but I wanted to bring it to your attention in case I can't find it quickly.
Version 0.8.2 works fine for me.

thanks for letting me know, I'll look into it asap

I think know where the problem is. It will be somewhere in the quoted-string logic either:

here: https://github.com/jonschlinkert/extract-comments/blob/master/index.js#L136-L144, or
here: https://github.com/jonschlinkert/extract-comments/blob/master/index.js#L59-L78

I'm looking now, but in case you see the issue before me

ah, I know what to do. Right now it's detecting if a comment is inside a quoted string, and if so it skips the comment and starts off where it ends - but it should be starting off where the quoted string ends.

Quick catch, thanks for responding so fast. Let me know if I can help test.

Let me know if I can help test.

that would be great, thanks. if you know what pattern was causing it to hang, Ideally you could add a unit test with that pattern, but no worries
let me know if this did the trick. thanks!

oh, and fwiw I was wrong in this comment, it just needed to break out of the loop when we reached the end of the string, and the logic for that wasn't correct. I think it's right now

Hmm, that did fix the module from hanging but I'm getting a different output than in the previous version (and I don't have any quoted comments in the file I'm processing). Now that the tests pass and its not hanging I'll send a PR with a test to replicate my issue.

I did find a pattern that hangs, same issue though. the unit test would be great, thanks. I'm going to try to see what's happening and report back

I opened #7, which covers a quote issue. I think it is technically a new issue now though: comments after quoted strings are missed.

I just pushed up some changes. should be fixed but let me know if you have any more issues.


[Bug] Custom font need to be re-applied on every login/reload

As the title says, I need to re-apply the custom font everytime I login or reload my UI. I do have an addon changing Blizzard master fonts, however, not sure if that might interfere? But I did check without that addon, and the problem persisted.
Anyway, thank you for your work, this addon is amazing.

Yeah, heard this report earlier as well, it happens when you use custom fonts from an addon that loads later. 369fa14973ec0b69f91cdbd7c56b34a94019d9b2 fixes that.


Filename clashes in /tmp during flatbuffer download

@tensorflow/micro
System information

Host OS Platform and Distribution (e.g., Linux Ubuntu 16.04):  Linux Ubuntu 20.04
TensorFlow installed from (source or binary): source
Tensorflow version (commit SHA if source): 1e8f4666f2fbc1bdd4ce2797b218de0453cffc63
Target platform (e.g. Arm Mbed OS, Arduino Nano 33 etc.): all

Describe the problem
The script tensorflow/lite/micro/tools/make/flatbuffers_download.sh creates a temporary files/dirs in /tmp
whose names are not uniqified and not all of which are subsequently removed.  This means builds by different users on a shared server host fail and junk is left lying around in /tmp.
A small patch correcting these issues by using mktemp  is attached.  This approach is the same
as that used in the  tensorflow/lite/micro/tools/make/download_and_extract.sh script.
tmp_filename_clash_fix.patch.txt
Please provide the exact sequence of commands/steps when you ran into the problem
make -f tensorflow/lite/micro/tools/make/Makefile

Thanks for the fix. Created https://github.com/tensorflow/tensorflow/pull/48241 with the path.
Feel free to send a PR as well.


init states

[x] Add docs
[ ] Will also need to make sure that the limit is respected

Related https://github.com/charkour/zundo/issues/75


Weird crash with latest Mekanism

http://pastebin.com/AJEUkQWf

MineTweaker issue or another mod's interaction, not on my end


jqgrid is automatically chnaging dates as per timezone of local machine .

Hi ,
I have used jqgrid from your plugin. But there is slightly issue with datecolumn as it is automatically chnaging the dates as per timezone . Please suggets

Hi,
Please user renderer function for your date column and format the date with library like moment.js.

the above mentioned solution is not working .. Below is my code . I have tried for startime. It is not formating
function ReportedCallLoadData() {
grid = $("#grid").grid({
dataKey: "ID",
uiLibrary: "bootstrap",
columns: [
{ field: "ClientName", title: "Client Name", sortable: true },
{
field: "StartTime", title: "Start Time", sortable: true, type: 'date', renderer: function (value) {
return moment(value).format("MM-DD-YYYY");
//return moment(value, 'DD/MM/YYYY hh:mm A');
}
},
{ field: "EndTime", title: "End Time", sortable: true, type: 'date', format: 'dd/mm/yyyy hh:MM TT' },
{ field: "ActualDate", title: "Actual Date", sortable: true, type: 'date', format: 'dd/mm/yyyy' },
{ field: "CreatedOn", title: "Created On", sortable: true, type: 'date', format: 'dd/mm/yyyy hh:MM TT' },
{ title: "", field: "Edit", width: 34, type: "icon", icon: "glyphicon-pencil", tooltip: "Edit", events: { "click": Edit } },
{ title: "", field: "Delete", width: 34, type: "icon", icon: "glyphicon-remove", tooltip: "Delete", events: { "click": DisplayDeleteCommentsBox } }
],
pager: { enable: true, limit: 5, sizes: [2, 5, 10, 20] }
});
}

I have also tried on your demo live compiler , with examples given . Its not at all working . this rendere implementation is nowhere mentioned in your documention as well. Please suggest for this

The renderer function is added in version 1.0. Probably you are using old version and that's why the renderer doesn't work. You can use http://gijgo.com/Grid/Events/cellDataBound as alternative if you can't upgrade to 1.0.
Actually you are having this issue, because that's how javascript works. It always convert the date to the current timezone.
If you want to have all dates in one timezone you can use http://momentjs.com/timezone/ or format the date on the server and display it in regular grid column.


Is there any support Speaker diarisation

Will support be added for diarization?

no

onnx diarization can be deployed in triton ? example https://github.com/k2-fsa/sherpa/tree/master/triton/whisper

If native pytorch fp16 model could fulfill your needs, you may try the triton python backend to deploy it. See https://github.com/triton-inference-server/tutorials/blob/main/HuggingFace/python_model_repository/python_vit/1/model.py.
For onnx models, you may need to make some modifications.


feat: New component: Text Input

Addition of Text Input Component
This PR adds a new Text Input component to the project, aimed at facilitating form creation for developers. The component is developed using Tailwind CSS library and leverages the variant functionalities provided by the tailwind-variants library, offering flexibility in design.
Component Variants:

Default: The default Text Input is used for normal data input.
Error: The error variant is intended to visually indicate a problem with the content entered in the field.
Disabled: This variant is applied when the input field is disabled and cannot be edited.

Demo Video
A demonstration video has been added to illustrate the usage and behavior of the new Text Input component. Watch the video for a quick overview of the features and appearance of the component in different states.
https://github.com/guhrodriguess/luxe/assets/71651661/fd26c025-afd0-4a62-babe-9cf0df3edcd4

Amazing, @lucasaugustsof! Congratulations!


Standalone container node

I am not able to successful create a node with a single/ "standalone container" from a docker image. When I run service fabric locally with only the RavenDB image it works and runs great but one I add other services or applications the RavenDB container begins to fail.
Can I run a VM in the set with just RavenDB?

https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-containers-overview should help answer, but please let us know if you need more help.

https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-containers-overview should help answer, but please let us know if you need more help.


Infer custom keywords based on definition files

We now have custom operator keywords from rhai definition files in the HIR, we can use this information to (re)parse scripts with these keywords known and then provide hover/semantic tokens or even completion for them in the LSP.

[x] Use operators from definition files.
[x] Semantic tokens.
[x] Docs on hover.
[ ] Go to definition? I left it out on purpose, I don't think the user typically wants to know where an operator was defined and it would be probably confusing as well.
[x] Completions, I'm planning a completions-oriented sprint where this will be addressed among other things.
[x] Custom precedence. We need to decide a syntax on this in definition files, right now all custom operators just use the lowest possible binding powers.

I made some progress on this as reflected on the OP. This is generally usable with some unresolved questions.
We could easily use precedence set in definition files, but I'm wondering how to represent them syntactically.
I see a few ways to do it, and I don't have a strong opinion on either:
Use Go-style parameters:
op (1, 2) is(?, ?) -> bool;

Or use generic param style:
op is<1, 2>(?, ?) -> bool;

Or introduce attributes:
#[precedence(1, 2)]
op is(?, ?) -> bool;

Or the one I like the least is to put it in docs and somehow parse it from there.
I don't like this because docs are not always properly parsed, and precedence is an integral part of operators anyway.
/// precedence: 1,2
op is(?, ?) -> bool;

I decided to go with the following syntax for this for now:
op is(?, ?) -> bool with (1, 2);

The respective optional binding powers are 1 and 2 after the with keyword.
The fact that it's after the definition and separated with the with keyword makes it easier to parse and unambiguous.

However, I only use one precedence value for each operator... do we need to split into two binding powers?

However, I only use one precedence value for each operator... do we need to split into two binding powers?

No, if associativity is not configurable, I can also remove the second one, it's optional right now anyway.

I'll leave the second binding power in, users (and generated code) will just use the first one, but with it we have the ability to still define right-associated operators if needed in the future.
Also all information is available via hover and completion, I'd rather not implement go to definition for this as it would make the operators act too much like variables. We can add a separate command like go to operator for this if needed.
With this being said, I think this is done.


Merge upstream from polkadot-js/apps@master (2b40308)

Merge upstream
Upstream details

Repository URL: https://github.com/polkadot-js/apps
Repository name: polkadot-js/apps
Branch: master
Commit SHA: 2b40308

Target details

Repository: Cardinal-Cryptography/azero-dev
Branch: alephzero
Recent common ancestor with upstream: 65fc709df1a289ad7961fa82b877a36645f6b383

To see "real" change this command might be helpful
git diff alephzero a0-ops-upstream-automerge -I "Copyright 2017-" --diff-filter=ad -- . ':!***package.json' ':!yarn.lock' ':!CONTRIBUTORS' ':!CHANGELOG.md'

Shows diff between alephzero and a0-ops-upstream-automerge and ignores

lines containing "Copyright 2017-"
removed files
added files
all package.json
a few listed files as we


attach: load regex files early and pre-compile

them in advance (rather than upon every connection)
add periods to file extensions when not present (ie, no longer required in config)
fixed a doc-code mismatch
store archive extensions in object instead of array

replace list.indexOf(thing) === -1 with !list[thing]

added disallowed_extensions config option, which blocks attachments with
those extensions in file attachments and archives.
lots of delicious tests

This has crashed into a change I'd already made locally - I'd basically moved the regexp files into the INI file as a wildcard list.
I'll look at merging the two, but it doesn't really make much sense to have a disallowed_extensions list to go with it.

I'd basically moved the regexp files into the INI file as a wildcard list.

That's an improvement.
Another would be having a section like this:
[blocked_extensions]
exe
dll
scr

and
[archive_extensions]
zip
tar
tgz
taz
z
gz
rar
7z

now that PR #1026 has landed.  The options_to_array() can go away entirely.

now that PR #1026 has landed. The options_to_array() can go away entirely.

No - it can't.   I use it elsewhere and it's still useful for other things where this type of format isn't suitable.

[blocked_extensions]
exe
dll
scr

This is a poor way to do it.   It prevents you from being able to block specific files by name using the same list .vs. :
file_extensions=*.exe *.dll *.scr winmail.dat
archive_extensions=:file_extensions: message.dat
etc.


feat: add Shape to the Superchain Registry

Adding a New Chain
This PR adds Shape to the registry.
Checklist

[x] I have declared the chain at the appropriate Superchain Level.
[x] I have run just validate <chain-id> locally to ensure all local validation checks pass.

This is only failing on the public URL not existing in the ethereum-lists/chains repo. Deca is working on adding this, after I'll run validation again.

[x] I have run just codegen to ensure that the chainlist and other generated files are up-to-date and include my chain.

Alchemy has let me know that they're going to activate Granite on this chain this week. We should hold off on the merging this PR until we have the granite activation time in here. Functionally I think the order of operations is to:

Activate granite
Update the configuration file
Regenerate the registry artifacts with the just command
Update this branch with the latest
Validate the tests are passing
Merge

Shape has added the public RPC to chains repo, so validation is now passing.


Create stack.cpp

Fixes #{ISSUE_NUMBER}
By submitting this pull request I confirm I've read and complied with the below declarations.

[ ] I have read the Contribution guidelines and I am confident that my PR reflects them.
[ ] I have followed the coding guidelines for this project.
[ ] My code follows the skeleton code structure.
[ ] This pull request has a descriptive title. For example, Added {Algorithm/DS name} [{Language}], not Update README.md or Added new code.
[ ] This pull request will be closed if I fail to update it even once in a continuous time span of 7 days.

Please fix build and add issue number to PR description.

Hi! Thanks for showing interest in contributing to this repository.
Please make sure that you have ticked the points mentioned in PR description correctly.
Thanks again!

@singhpratyush same here sir, issue assigned to someone else.

@ng29: Please make sure that you are assigned to the issue before proceeding with it. Thanks.


Regression: Argument of type 'awaited T' is not assignable to parameter of type 'T'

TypeScript Version:  3.9.0-dev.20200322

Search Terms:
awaited
Code
async function runSequentially<T>(
  executors: Array<() => Promise<T>>,
): Promise<Array<T>> {
  const result: Array<T> = [];

  for (const executor of executors) {
    result.push(await executor());
  }

  return result;
}

Expected behavior:
The above code should compile. The types area reasonable and it did compile in previous versions without awaited.
Actual behavior:
Type error on await executor():
Argument of type 'awaited T' is not assignable to parameter of type 'T'.
  'T' could be instantiated with an arbitrary type which could be unrelated to 'awaited T'.ts(2345)

Playground Link: Playground Link
Related Issues: #37526

This is a correct error. You could have written code like this:
declare const arr: Array<() => Promise<Promise<string>>>;

async function fn() {
  // x: Array<Promise<string>>
  const x = await runSequentially(arr);
  // Crashes
  x[0].then(() => { });
}

There are some workaround available (adding a constraint to T for example) but we're also considering adding a flag to allow the assignment to proceed even though it's unsound. Interested to hear your feedback and from others who encounter this error.

strictAwaitedTypes was implemented but removed after in #35998. @rbuckton Why?

We don't want to add the flag unless we really need it. Assessing what kind of breaks people encounter in real codebases is how we're figuring that out.

Is there any real world example that this is unsound in? Because a Promise<Promise<string>> string can't be constructed.
Personally, I consider that Typescript allows Promise<Promise<string>> to be written a bug (that hopefully can be fixed soon #29317)

#37501

Conclusion: ship it without a flag in the beta, re-evaluate for the RC if the breaks are that bad.

Hm...
awaited operator is effective to find a bug but correcting for awaited operator was very bored.
https://github.com/falsandtru/spica/commit/c569afd65410a8f5538f38aef617fae9657b7d20
#37511

Is there any real world example that this is unsound in?

Sure, any higher-order type operation involving Promise<T> is potentially a problem. Note that the actual type Promise<Promise<T>> never appears in this example:
// Previously-allowed but unsound definition
async function myAwaitWrong<T>(arg: Promise<T>): Promise<T[]> {
  // Proposed: That this be valid without a type assertion
  return [await arg] as any;
}

// Correct definition of an awaiting function
async function myAwaitRight<T>(arg: Promise<T>): Promise<(awaited T)[]> {
  return [await arg];
}

// Toggle these to observe different behavior
const myAwait = myAwaitRight;
// const myAwait = myAwaitWrong;

class MyThing<T> {
  value!: T;
  // Returns Promise<T>
  async getValue() {
    return this.value;
  }
  // Returns Promise<T[]>
  async doSomething() {
    return myAwait(this.getValue());
  }
}

async function f() {
  const p = new MyThing<Promise<string>>();
  // Under myAwaitWrong - m: Incorrectly Promise<string>[]
  // Under myAwaitRight - m: Correctly string[]
  const m = await p.doSomething();
}

Because a Promise<Promise<string>> can't be constructed.

People keep saying this and I continually question what it means for this to be the case; it's like saying f(x) => abs(abs(x)) isn't a thing because abs is idempotent on itself. It's valid and you can do it. Higher-order constructions exist and you can't just say "abs(abs(x)) should be illegal" because it implies any higher-order type construction should be banned unless it somehow proves that it can never operate in a way that produces this result.

May I ask a question? Can I make the following type check?
async function* flatten<T>(generator: AsyncGenerator<T[]>): AsyncGenerator<T> {
  for await (const array of generator) {
    for (const value of array) {
      yield (value as unknown) as T;
      //    ^^^^^^^^^^^^^^^^^^^^^^^
      // Type 'awaited T' is not assignable to type 'T'.
      //  'T' could be instantiated with an arbitrary type which could be unrelated to 'awaited T'.ts(2322)
    }
  }
}

I'm using tpyescript 3.9.0-dev.20200324.

You have to change the return type to AsyncGenerator<awaited T>.

@falsandtru It causes parsing error.


Thumbnail Size

I increased the size of the fb-photo-thumb class in css to be 234x234 px. Now the thumbnail src image is still being scaled down to a smaller size, usually 130x130 px.

Found the section bumping down albumImg and fixed it.

Hi @iarry, can you post the snippet of code you modified, just in case someone needs to make the same adjustment?
Thank you in advance

Absolutely. I just changed the for loop on line 313 to compare sizes with the size I wanted instead of photoListItem's height and width.
Originally it was
for (i = 0; i < $(result.data)[a].images.length; i++) {
                                    if (
                                            ($(result.data)[a].images[i].height >= prefHeight && $(result.data)[a].images[i].width >= prefWidth) &&
                                            ($(result.data)[a].images[i].height <= albumImg.height && $(result.data)[a].images[i].width <= albumImg.width)
                                        ) {
                                        albumImg = $(result.data)[a].images[i];
                                    }
                                }

I changed the 3rd line to:
($(result.data)[a].images[i].height >= 200 && $(result.data)[a].images[i].width >= 200) &&
There's probably a better way than just hard coding it, but I'm very new to jQuery and just needed a quick fix.

Thanks man