text:
Block invalid URLs with 200 instead of responding with 400

See also:

Prevent Via, Via 3 and Via HTML from proxying themselves or each other

During a recent incident we observed that Via was attempting to proxy really, really long URLs (https://via.hypothes.is/https://via.hypothes.is/https://via.hypothes.is/…). In Checkmate's Papertrail logs we could see that Checkmate was responding with 400 Bad Request to Via's queries about these URLs, and I believe this was causing Via to "fail open" and proxy the URLs.
If the URL is invalid or too long Checkmate should respond with 200 and a JSON body explaining that the URL is blocked, so that services don't attempt to proxy these URLs. The "reason" in the JSON body can be used to indicate that the URL is blocked because it's seen as invalid, so the client can treat these specially if it wants to. But a better default behaviour, for all Via's, is to fail closed for these URLs rather than fail open, so Checkmate should indicate that they're blocked.

We can tackle this another way as well, which is to truncate them in checkmatelib before they are sent. Our current matching only cares about the domain, so unless the domain is 10000 chars long it doesn't matter.

I don't think there's much we can do about this on the checkmate side. The get request is already too long to process, so we can only 400. We've already merged a "fix" to prevent calls from checkmatelib from getting that long. Hopefully that's enough

authors: jon-betts seanh

repo: hypothesis/checkmate


text:
Image contains pregenerated SSH host keys

Each host should have its own set of SSH keys. As of now, the SSH keys are generated during the install of the package openssh-server. That means the keys end up in the image.
For a clean solution, we should probably remove the pregenerated keys during build of the rootfs. Additionally, we have to make sure the keys are regenerated on first boot.

@djmaze Very good point! So a rm /etc/ssh/ssh_host_* should be done here and a test should proof this that the files no longer exist.

There is no need to do the key regeneration on a per-device basis. And the aim should be to do as much as possible inside the (device-independent) rootfs, right? So I think we need to add a first-time boot service here which runs the dpkg-reconfigure openssh-server, as opposed to duplicating this effort in every device-specific builder script (see https://github.com/hypriot/image-builder-rpi/issues/9).
We also need to figure out a clean way to run a one-time service on bootup. I am not very comfortable with the fact that the root partition (at least in the C1 image) is resized on every boot. The easiest way would probably be to just append an entry to an env file after the first run.

@djmaze @StefanScherer I created a generic first-boot service in PR #7 to address this.

source: gharchive/issue

authors: Govinda-Fichtner StefanScherer djmaze

repo: hypriot/os-rootfs

license: mit

license_type: permissive

license_source: bigquery


text:
Add hyprslidr

Allows to use a scrolling layout like in Niri
https://gitlab.com/magus/hyprslidr

Closed with https://github.com/hyprland-community/awesome-hyprland/pull/80

repo: hyprland-community/awesome-hyprland

license_source: github-api


text:
Diagonal screen tearing

Hyprland Version
hyprland-git-0.31.0.r7.a0b675ec-1
Bug or Regression?
Bug
Description
when using nvidia gpu applications have diagonal screen tearing link in this video.
https://sharex.host/iCqd9pSfZx.mp4?key=637976e852755c096c0e06dc0e9ea8
How to reproduce
use nvidia driver 535.113.01
Crash reports, logs, images, videos
https://sharex.host/iCqd9pSfZx.mp4?key=637976e852755c096c0e06dc0e9ea8

lmao nvidia moment

bump, its a multigpu issue, fixed by enabling vrr, reproducible by playing a game that has a fps cap lower than the framerate of the pc (facotrio, nier automata), however vrr causes fullscreen apps to freeze from time to time and also halves the maximum framerate for games, wich is a big issue for competitive fps games and lower refresh rate monitors

@zmeyka3310 even with vrr enabled the problem occures

authors: NULL-BITS vaxerski zmeyka3310

repo: hyprwm/Hyprland


text:
Random crashes + flickering even I updated to latest Hyprland version

Hyprland Version
Hyprland, built from branch main at commit 395ab3ba370f5e12fcba594232c338c16deef0ed dirty (xdg: use better min/max size checks for floating resizes). Tag: v0.33.1-43-g395ab3ba
Bug or Regression?
Bug
Description
Hmm, this bug happened about 3-4 months ago and it annoyed me a lot even when I updated Hyprland or Arch Linux
As you can see in the video, the screen suddenly flickers randomly for about 8-9 seconds and it automatically restarts after that
How to reproduce
I don't really know how to reproduce this because it almost random. But I noticed it crashes more frequently when I run some apps like VSCode, VMware
Crash reports, logs, images, videos
This is the recent crash report that I found in ~/.cache/hyprland. However, this file was created on 12/9/2023 while I still have problem on 12/21/2023:
hyprlandCrashReport980.txt
The video:
https://github.com/hyprwm/Hyprland/assets/96990857/76f852f0-1d9b-4c93-b7af-96d01e19a8b4

something is terribly wrong with your system

@vaxerski Is there any way to fix that?

no clue, call an exorcist or use a more user-friendly distro that maybe comes with hl preinstalled, like arco / garuda / etc

I'll reinstall to check if the bug still exist or not. Thanks for your response

Hi @vaxerski, after following "Fixing random flickering, (nuclear method)", I fixed this bug, thank you!


text:
Can't open any GTK-based app

Hyprland Version
 System/Version info
Hyprland, built from branch  at commit 28410922da556b5960e1c47cf63cc3f3f4aa3384  ().
Date: 2024-02-22
Tag:

flags: (if any)

System Information:
System name: Linux
Node name: theseus
Release: 6.7.5
Version: #1-NixOS SMP PREEMPT_DYNAMIC Fri Feb 16 18:14:32 UTC 2024

GPU information:
09:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere [Radeon RX 470/480/570/570X/580/580X/590] [1002:67df] (rev e7) (prog-if 00 [VGA controller])

os-release: ANSI_COLOR="1;34"
BUG_REPORT_URL="https://github.com/NixOS/nixpkgs/issues"
BUILD_ID="24.05.20240221.0e74ca9"
DOCUMENTATION_URL="https://nixos.org/learn.html"
HOME_URL="https://nixos.org/"
ID=nixos
IMAGE_ID=""
IMAGE_VERSION=""
LOGO="nix-snowflake"
NAME=NixOS
PRETTY_NAME="NixOS 24.05 (Uakari)"
SUPPORT_URL="https://nixos.org/community.html"
VERSION="24.05 (Uakari)"
VERSION_CODENAME=uakari
VERSION_ID="24.05"

plugins:
  hycov by DreamMaoMao ver 0.3

Bug or Regression?
Bug
Description
Can't open any GTK app, even firefox after update. Nixos, Hyprland from latest commit. All work fine on sway (god sway is so bad).
Qt, Electron works, wayland native.
A lot of similar to this stuff in hyprctl clients
Window 1f3ade0 -> :
	mapped: 0
	hidden: 0
	at: 0,0
	size: 0,0
	workspace: -1 ()
	floating: 0
	monitor: -1
	class:
	title:
	initialClass:
	initialTitle:
	pid: -1
	xwayland: 0
	pinned: 0
	fullscreen: 0
	fullscreenmode: 0
	fakefullscreen: 0
	grouped: 0
	swallowing: 0
	focusHistoryID: -1

How to reproduce
Dunno, install Nixos or something
Crash reports, logs, images, videos
No response

All works fine now, thanks


text:
Crashes after updating (GL_INNOCENT_CONTEXT_RESET)

Hyprland Version
 System/Version info
Hyprland, built from branch main at commit 2ead1fd22103ce065661555513bace5897083ded dirty (virtual-keyboard: emit event before finishing keyboard).
Date: Fri May 17 21:07:33 2024
Tag: v0.40.0-111-g2ead1fd2, commits: 4717

flags: (if any)

System Information:
System name: Linux
Node name: apg
Release: 6.9.1-arch1-1
Version: #1 SMP PREEMPT_DYNAMIC Fri, 17 May 2024 16:56:38 +0000

GPU information:
03:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Navi 23 [Radeon RX 6650 XT / 6700S / 6800S] [1002:73ef] (rev c2) (prog-if 00 [VGA controller])
37:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Rembrandt [Radeon 680M] [1002:1681] (rev c7) (prog-if 00 [VGA controller])

os-release: NAME="Arch Linux"
PRETTY_NAME="Arch Linux"
ID=arch
BUILD_ID=rolling
ANSI_COLOR="38;2;23;147;209"
HOME_URL="https://archlinux.org/"
DOCUMENTATION_URL="https://wiki.archlinux.org/"
SUPPORT_URL="https://bbs.archlinux.org/"
BUG_REPORT_URL="https://gitlab.archlinux.org/groups/archlinux/-/issues"
PRIVACY_POLICY_URL="https://terms.archlinux.org/docs/privacy-policy/"
LOGO=archlinux-logo

plugins:

Bug or Regression?
Bug
Description
Hyprland crashes sometimes while running a simple SDL_Renderer app (source: https://git.allpurposem.at/mat/Tron/commit/7e1844243dd970f147531b98a5b6ffdb20623211 ), sometimes shortly after closing.
I have never seen this happen before, but I did update Hyprland a few hours ago, so it may be related.
How to reproduce
You could try running the app, but I assume it's got something to do with the specific GPU driver since I see an OpenGL assertion is being hit.
Crash reports, logs, images, videos

The latest crash left a 0 byte crash report, so I am leaving the end of the logs for it (click here)
[LOG] Callback 5827448839b0 -> 5827448839a8, CRenderbuffer removed.
[LOG] Searching for matching rules for firefox (title: Mozilla Firefox)
[LOG] Window rule suppressevent maximize -> title:.* matched [Window 5827448d0910: title: "Mozilla Firefox"]
[LOG] Window rule idleinhibit fullscreen -> firefox matched [Window 5827448d0910: title: "Mozilla Firefox"]
[LOG] Callback 5827430f32a0 -> 5827430f3298, CSeatManager removed.
[LOG] Callback 58274487fec0 -> 58274487feb8, CWLKeyboardResource removed.
[LOG] Callback 58274488c140 -> 58274488c138, CWLKeyboardResource removed.
[LOG] Registered signal for owner 5827448dc5d0: 5827448c91d8 -> 5827448dc5e8 (owner: CWLKeyboardResource)
[LOG] Registered signal for owner 0: 5827448c91d8 -> 5827430f3278 (owner: CSeatManager)
[LOG] Set keyboard focus to surface 5827448c8ec0, with [Window 5827448ce900: title: "tron;#toggleterm#1 - (term://~/School/Tron/...734:/home/apm/School/Tron/out/Debug) - NVIM"]
[LOG] Searching for matching rules for foot (title: tron;#toggleterm#1 - (term://~/School/Tron/...734:/home/apm/School/Tron/out/Debug) - NVIM)
[LOG] Window rule suppressevent maximize -> title:.* matched [Window 5827448ce900: title: "tron;#toggleterm#1 - (term://~/School/Tron/...734:/home/apm/School/Tron/out/Debug) - NVIM"]
[LOG] Callback 5827430f3308 -> 5827430f3300, CSeatManager removed.
[LOG] Callback 582744889e60 -> 582744889e58, CWLPointerResource removed.
[LOG] Registered signal for owner 5827448cbac0: 5827448c91d8 -> 5827448cbad8 (owner: CWLPointerResource)
[LOG] Registered signal for owner 0: 5827448c91d8 -> 5827430f32e0 (owner: CSeatManager)
[LOG] cursorImage request: shape 1 -> default
[LOG] Callback 58274312b308 -> 58274312b300, CWLSurface removed.
[LOG] Callback 58274312b370 -> 58274312b368, CWLSurface removed.
[LOG] CWLSurface 58274312b260 called destroy()
[LOG] Callback 582743113828 -> 582743113820, CPointerManager removed.
[LOG] Registered signal for owner 5827431136f0: 582744456518 -> 582743113800 (owner: CPointerManager)
[LOG] Registered signal for owner 582744883980: 5827448f4cc8 -> 582744883988 (owner: CRenderbuffer)
[LOG] Callback 5827448839b0 -> 5827448839a8, CRenderbuffer removed.
[LOG] [seatmgr] Rejecting a setCursor because the client ain't in focus
[LOG] [XDGShell] xdg_surface 582743d5c200 requests geometry 0x0 1011x1228
[LOG] Callback 582744918380 -> 582744918378, XWayland Window Late removed.
[LOG] Callback 5827449182b0 -> 5827449182a8, Xwayland Window Late removed.
[LOG] Callback 582744918248 -> 582744918240, Xwayland Window Late removed.
[LOG] Callback 582744918178 -> 582744918170, XWayland Window Late removed.
[LOG] Callback 5827449180a8 -> 5827449180a0, XWayland Window Late removed.
[LOG] Cleanup: destroyed a window
[LOG] Searching for matching rules for foot (title: CMakeLists.txt (~/School/Tron) - NVIM)
[LOG] Window rule suppressevent maximize -> title:.* matched [Window 5827448ce900: title: "CMakeLists.txt (~/School/Tron) - NVIM"]

Two crashes earlier today that do have reports:
hyprlandCrashReport4268.txt
hyprlandCrashReport1355.txt

[CRITICAL]
==========================================================================================
ASSERTION FAILED!

Aborting, glGetGraphicsResetStatus returned GL_INNOCENT_CONTEXT_RESET. Cannot continue until proper GPU reset handling is implemented.

at: line 263 in OpenGL.cpp

GPU driver caught in a bad state caused it to flush all video memory thus killing hyprland.

So this indeed depends on GPU reset handling being implemented. It has never happened before with this crash log, so could something have changed recently in Hyprland that would surface this?

You sure could help by bisecting the first commit where this is reproducible starting from cba1ade848feac44b2eda677503900639581c3f4

this is not a hyprland issue. Handling resets is (imo) quite pointless as most of your apps (if not all that use the gpu) can't survive a reset either

authors: Agent00Ming TheSunCat vaxerski


text:
High VRAM memory usage.

Already reported ? *

[X] I have searched the existing open and closed issues.

Regression?
No
System Info and Version
 System/Version info
Hyprland, built from branch main at commit 97444ed7a8a83406970fcc05907db1110435b59b  (layout: fix auto group when opening a new window in a non-focused workspace using window rules (8006)).
Date: Mon Oct 7 14:22:55 2024
Tag: v0.44.0-3-g97444ed7, commits: 5302
built against aquamarine 0.4.1

flags: (if any)

System Information:
System name: Linux
Node name: desktop-martijn
Release: 6.10.11-200.fc40.x86_64
Version: #1 SMP PREEMPT_DYNAMIC Wed Sep 18 21:09:58 UTC 2024

GPU information:
09:00.0 VGA compatible controller [0300]: NVIDIA Corporation TU116 [GeForce GTX 1660 Ti] [10de:2182] (rev a1) (prog-if 00 [VGA controller])
NVRM version: NVIDIA UNIX x86_64 Kernel Module  560.35.03  Fri Aug 16 21:39:15 UTC 2024

os-release: NAME="Fedora Linux"
VERSION="40 (Sway)"
ID=fedora
VERSION_ID=40
VERSION_CODENAME=""
PLATFORM_ID="platform:f40"
PRETTY_NAME="Fedora Linux 40 (Sway)"
ANSI_COLOR="0;38;2;60;110;180"
LOGO=fedora-logo-icon
CPE_NAME="cpe:/o:fedoraproject:fedora:40"
DEFAULT_HOSTNAME="fedora"
HOME_URL="https://fedoraproject.org/"
DOCUMENTATION_URL="https://docs.fedoraproject.org/en-US/fedora/f40/system-administrators-guide/"
SUPPORT_URL="https://ask.fedoraproject.org/"
BUG_REPORT_URL="https://gitlab.com/fedora/sigs/sway/SIG/-/issues"
REDHAT_BUGZILLA_PRODUCT="Fedora"
REDHAT_BUGZILLA_PRODUCT_VERSION=40
REDHAT_SUPPORT_PRODUCT="Fedora"
REDHAT_SUPPORT_PRODUCT_VERSION=40
SUPPORT_END=2025-05-13
VARIANT="Sway"
VARIANT_ID=sway

plugins:

======Config-Start======

Config File: /home/martijn/.config/hypr/hyprland.conf: Read Succeeded
#
# Please note not all available settings / options are set here.
# For a full list, see the wiki
#

# See https://wiki.hyprland.org/Configuring/Monitors/
source = ~/.config/hypr/monitors.conf

# plugin = /usr/local/lib/libhy3.so

# See https://wiki.hyprland.org/Configuring/Keywords/ for more

# Execute your favorite apps at launch
# exec-once = waybar & hyprpaper & firefox

# Source a file (multi-file configs)
# source = ~/.config/hypr/myColors.conf

# Set programs that you use
$terminal = kitty
$fileManager = thunar
$menu = wofi --show drun
$run = wofi --show run

# Some default env vars.
env = XCURSOR_SIZE,24
env = QT_QPA_PLATFORMTHEME,qt5ct # change to qt6ct if you have that

# For all categories, see https://wiki.hyprland.org/Configuring/Variables/
input {
    kb_layout = be
    kb_variant =
    kb_model =
    kb_options = caps:escape
    kb_rules =

    follow_mouse = 1

    touchpad {
        natural_scroll = yes
	clickfinger_behavior = 1
    }

    sensitivity = 0.0 # -1.0 to 1.0, 0 means no modification.
}

general {
    # See https://wiki.hyprland.org/Configuring/Variables/ for more

    gaps_in = 5
    gaps_out = 20
    border_size = 2
    col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
    col.inactive_border = rgba(595959aa)

    layout = hy3

    # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
    allow_tearing = false
}

decoration {
    # See https://wiki.hyprland.org/Configuring/Variables/ for more

    rounding = 4

    blur {
        enabled = true
        size = 3
        passes = 1
    }

    drop_shadow = yes
    shadow_range = 4
    shadow_render_power = 3
    col.shadow = rgba(1a1a1aee)
}

animations {
    enabled = yes

    # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more

    bezier = myBezier, 0.05, 0.9, 0.1, 1.05

    animation = windows, 1, 3, myBezier
    animation = windowsOut, 1, 3, default, popin 80%
    animation = border, 1, 10, default
    animation = borderangle, 1, 8, default
    animation = fade, 1, 7, default
    animation = workspaces, 1, 6, default
}

dwindle {
    # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
    pseudotile = yes # master switch for pseudotiling. Enabling iscales bound to mainMod + P in the keybinds section below
    preserve_split = yes # you probably want this
}

master {
    # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
}

gestures {
    # See https://wiki.hyprland.org/Configuring/Variables/ for more
    workspace_swipe = on
    workspace_swipe_fingers = 4
}

misc {
    # See https://wiki.hyprland.org/Configuring/Variables/ for more
    force_default_wallpaper = -1 # Set to 0 or 1 to disable the anime mascot wallpapers
}

# Example per-device config
# See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more
device {
    name = epic-mouse-v1
    sensitivity = -0.5
}

# Example windowrule v1
# windowrule = float, ^(kitty)$
# Example windowrule v2
# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
windowrulev2 = suppressevent maximize, class:.* # You'll probably like this.

# Wayfarer screen recorder (main window float, and selection utility full screen)
windowrulev2 = float, class:^org.stronnag.wayfarer$
windowrulev2 = float, class:^wayfarer$
windowrulev2 = size 100% 100%, class:^wayfarer$
windowrulev2 = move 0 0, class:^wayfarer$

# See https://wiki.hyprland.org/Configuring/Keywords/ for more
$mainMod = SUPER

# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
bind = $mainMod, RETURN, exec, $terminal
bind = $mainMod, C, killactive, scale
bind = ALT, F4, killactive, scale
bind = $mainMod, M, exit,
bind = $mainMod, E, exec, $fileManager
bind = $mainMod, V, togglefloating,
bind = $mainMod, D, exec, $menu
bind = $mainMod SHIFT, D, exec, $run
bind = $mainMod, F, fullscreen
bind = $mainMod, P, pseudo, # dwindle
bind = $mainMod, R, togglesplit, # dwindle
bind = $mainMod & ALT, L, exec, hyprlock

# Screen Shots
bind = CONTROL & SHIFT, Print, exec, gnome-screenshot -i
#bind = CONTROL, Print, exec, XDG_CURRENT_DESKTOP=sway flameshot gui
bind = CONTROL, Print, exec, grim -g "$(slurp -d)" - | wl-copy

# Move focus with mainMod + arrow keys
bind = $mainMod, left, movefocus, l
bind = $mainMod, right, movefocus, r
bind = $mainMod, up, movefocus, u
bind = $mainMod, down, movefocus, d

# Move focus with mainMod + arrow keys
bind = $mainMod, h, movefocus, l
bind = $mainMod, l, movefocus, r
bind = $mainMod, k, movefocus, u
bind = $mainMod, j, movefocus, d

# Move window with mainMod + arrow keys
bind = $mainMod SHIFT, h, movewindow, l
bind = $mainMod SHIFT, l, movewindow, r
bind = $mainMod SHIFT, k, movewindow, u
bind = $mainMod SHIFT, j, movewindow, d

bind = $mainMod SHIFT, left, movewindow, l
bind = $mainMod SHIFT, right, movewindow, r
bind = $mainMod SHIFT, up, movewindow, u
bind = $mainMod SHIFT, down, movewindow, d

# Switch workspaces with mainMod + [0-9]
bind = $mainMod, ampersand , workspace, 1
bind = $mainMod, eacute    , workspace, 2
bind = $mainMod, quotedbl  , workspace, 3
bind = $mainMod, apostrophe, workspace, 4
bind = $mainMod, parenleft , workspace, 5
bind = $mainMod, section   , workspace, 6
bind = $mainMod, egrave    , workspace, 7
bind = $mainMod, exclam    , workspace, 8
bind = $mainMod, ccedilla  , workspace, 9
bind = $mainMod, agrave    , workspace, 10

# Move workspaces with Shift + CTRL + MOD + left/right
bind = SHIFT & CTRL & $mainMod, l, movecurrentworkspacetomonitor, r
bind = SHIFT & CTRL & $mainMod, right, movecurrentworkspacetomonitor, r
bind = SHIFT & CTRL & $mainMod, h, movecurrentworkspacetomonitor, l
bind = SHIFT & CTRL & $mainMod, left, movecurrentworkspacetomonitor, l

# Switch workspaces with CTRL + ALT + left/right
bind = CTRL & ALT, l, workspace, e+1
bind = CTRL & ALT, right, workspace, e+1
bind = CTRL & ALT, h, workspace, e-1
bind = CTRL & ALT, left, workspace, e-1

# Move windows to workspaces with CTRL + ALT + SHIFT + left/right
bind = CTRL & ALT & SHIFT, l, movetoworkspace, e+1
bind = CTRL & ALT & SHIFT, right, movetoworkspace, e+1
bind = CTRL & ALT & SHIFT, h, movetoworkspace, e-1
bind = CTRL & ALT & SHIFT, left, movetoworkspace, e-1

# Move active window to a workspace with mainMod + SHIFT + [0-9]
bind = $mainMod SHIFT, ampersand , movetoworkspace, 1
bind = $mainMod SHIFT, eacute    , movetoworkspace, 2
bind = $mainMod SHIFT, quotedbl  , movetoworkspace, 3
bind = $mainMod SHIFT, apostrophe, movetoworkspace, 4
bind = $mainMod SHIFT, parenleft , movetoworkspace, 5
bind = $mainMod SHIFT, section   , movetoworkspace, 6
bind = $mainMod SHIFT, egrave    , movetoworkspace, 7
bind = $mainMod SHIFT, exclam    , movetoworkspace, 8
bind = $mainMod SHIFT, ccedilla  , movetoworkspace, 9
bind = $mainMod SHIFT, agrave    , movetoworkspace, 10

# Example special workspace (scratchpad)
bind = $mainMod, S, togglespecialworkspace, magic
bind = $mainMod SHIFT, S, movetoworkspace, special:magic

# Scroll through existing workspaces with mainMod + scroll
bind = $mainMod, mouse_down, workspace, e+1
bind = $mainMod, mouse_up, workspace, e-1

# Move/resize windows with mainMod + LMB/RMB and dragging
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow

bindel = , XF86AudioRaiseVolume, exec, wpctl set-volume --limit 1.0 @DEFAULT_AUDIO_SINK@ 5%+
bindel = , XF86AudioLowerVolume, exec, wpctl set-volume --limit 1.0 @DEFAULT_AUDIO_SINK@ 5%-
bindl = , XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
# Requires playerctl
bindl = , XF86AudioPlay, exec, playerctl play-pause
bindl = , XF86AudioPrev, exec, playerctl previous
bindl = , XF86AudioNext, exec, playerctl next

# Submaps, see https://wiki.hyprland.org/Configuring/Binds/#submaps
# will switch to a submap called resize
bind = ALT, R, submap, resize
# will start a submap called "resize"
submap = resize
# sets repeatable binds for resizing the active window
binde = , l, resizeactive, 30 0
binde = , h, resizeactive, -30 0
binde = , k, resizeactive, 0 -30
binde = , j, resizeactive, 0 30
binde = SHIFT, l, resizeactive, 120 0
binde = SHIFT, h, resizeactive, -120 0
binde = SHIFT, k, resizeactive, 0 -120
binde = SHIFT, j, resizeactive, 0 120
# use reset to go back to the global submap
bind = , escape, submap, reset
bind = ALT, R, submap, reset
# will reset the submap, meaning end the current one and return to the global one
submap = reset
# keybinds further down will be global again...

Config File: /home/martijn/.config/hypr/monitors.conf: Read Succeeded

monitor = DP-3, 3440x1440, 0x0      , 1
monitor = DP-1, 2560x1440, 3440x-200, 1, transform, 3
monitor = DP-2, disabled

workspace = 1, monitor:DP-1
workspace = 2, monitor:DP-1
workspace = 3, monitor:DP-1
workspace = 4, monitor:DP-3
workspace = 5, monitor:DP-3
workspace = 6, monitor:DP-3
workspace = 7, monitor:DP-3
workspace = 8, monitor:DP-3
workspace = 9, monitor:DP-3

======Config-End========

Description
I'm seeing very high VRAM usage. When I do a ballpark calculation on what memory usage I'd expect from this, I list what I have:

one monitor of 3440*1440 pixels, with 3 work spaces
one monitor of 2560*1440 pixels, with one workspace
assuming wallpaper and foreground (apps, waybar)
assuming swapchain of 2 images
assuming 4 byte per pixel (RGBA)

I get: (3440*1440*3 + 2560*1440*1)*2*2*4 / 1024**2 = 283 MiB
This should be a big overestimation, as wallpapers are unique per monitor, and not per workspace, I believe. Additionally, I'm not sure if we should even count foreground (i.e., applications, as I think they should fully own the memory associated to the wayland surfaces), I think.
However, I think my estimation makes sense and I think it's an overestimation. Meanwhile, nvidia-smi reports 1794MiB in use for Hyprland. This is way to much, it's a factor 6.33 higher than my estimate.
Do you have any clue what's going on? Are there settings I could change to lower this?
How to reproduce
Run Hyprland, and run the estimation calculations yourself, and compare.
Crash reports, logs, images, videos
No response

IIRC it's a vram leak in nvidia's driver, it was reported somewhere else where they linked to the nv bug report

I figured out what is causing it: every time I turn a monitor off and back on, I get an additional 200 MB of VRAM usage. Any chance SMonitorRenderData is leaked?
I use a script that modified the hyprland config to switch from the monitors on my desk to the TV to watch a movie. Every time I switch I get an increased VRAM usage I think. Every time I go out and turn of my monitors to come back later and continue working, I have increased VRAM usage.

Related: #809 #2945 #7728
I tried setting render:explicit_sync = 0 and render:explicit_sync_kms = 0. Those fix the issue upon reloading config, but not upon turning monitor off and on.

@vaxerski Did you see my last comment? I believe this might be a different issue, because I found in the old issues the regression you were talking about, where the blame was put on NVIDIA. However, my scenario is different: it's when monitors are turned off and on. I sort of think that some EGL-related resources are not properly released when the display is turned off.

I did, but I use amd and haven't seen any issue like this.

Hmm, interesting. Could you point me to the code in Hyprland where you'd normally handle a display disappearing? I was trying to find such code but couldn't find it.

https://github.com/hyprwm/Hyprland/blob/d655a10381f01212635f2eadd69e1f22930f8f06/src/Compositor.cpp#L341-L350

Thanks! I will toy around later with this, to see if I can track down what's happening.

Happens to me too.... I only has my DP external monitor connected, when dpms off and dpms on I got more VRAM ussage, now 2.3 GB of VRAM!!!!

This is 100% not an NVIDIA bug. I switched back to using sway for this, until this is fixed. (@vaxerski ping)

@vaxerski please reopen this issue, is not solved and not fixed with the "Nvidia bug solver of render drm sync config"

so creating a /etc/nvidia/nvidia-application-profiles-rc.d/hyprland.txt
with contents
{
    "rules": [
        {
            "pattern": {
                "feature": "procname",
                "matches": "Hyprland"
            },
            "profile": "Limit Free Buffer Pool On Wayland Compositors"
        }
    ],
    "profiles": [
        {
            "name": "Limit Free Buffer Pool On Wayland Compositors",
            "settings": [
                {
                    "key": "GLVidHeapReuseRatio",
                    "value": 1
                }
            ]
        }
    ]
}

doesnt make it go to acceptable levels?

@gulafaran No, but that does fix a separate leak specific to NVIDIA.
The leak described above by @mcourteaux and @lfdominguez appears to happen on all vendors and that fix doesn't mitigate it either.

I'd need either a bisect or a repro case, can't repro on desktop.

but please reopen de issue, because is not solved and the "render sync" "solution" not work...

Adding some notes:

The problem is not the dkms off directly, is after my monitor enter on power save after some minutes of dkms off, sems that is when the monitor "lost" from hyprland monitors, and i have the laptop internal display disable on hyprland outputs, maybe here is the problem....

I went as far back as the Aquamarine merge 016da234d0e852de3ef20eb2e89ac58d2a85f6e7 and right before it when it still had wlroots f642fb97df5c69267a03452533de383ff8023570, this has been happening before the merge(only tested last wlroots commit) but far less problematic as it seemed to only happen when a TTY change then a monitor disconnect(or maybe it just very rarely happened after a disconnect), after the merge though it is very easy to replicate by just disconnecting the monitor, @gnusenpai had similar findings https://github.com/hyprwm/Hyprland/issues/2945#issuecomment-2310544174.
I originally posted about this problem in another issue here https://github.com/hyprwm/Hyprland/issues/2945#issuecomment-2308358435 but it seemed like it was ignored, possibly because of my other post https://github.com/hyprwm/Hyprland/issues/2945#issuecomment-2351164146 which was confirming another unrelated memory leak issue regarding Nvidia resizing windows, so i'm going to make it clear, this is not a Nvidia bug, it affects both AMD and Nvidia, i'll probably make a issue on this with more commit testing if this doesn't get seen/make it clear enough.
This was done on Hyprland commit 6e0aadc585c6d9fdaaebfa5853adbf9610897c82 and Aquamarine commit 8d732fa8aff8b12ef2b1e2f00fc8153e41312b72 on a 6700XT AMD GPU by turning off my monitor(AW3423DWF) which fully turns it off thus disconnects it, this still happens on latest git.

Easiest way that i've found to replicate if your monitors never disconnect when turned off or using dpms and you don't want to rip your cable out, is this script, replace the placeholders and make sure you have trigger_hotplug(Nvidia may not) and it works, if you don't/it doesn't work you may have a borked port until you reboot or maybe reload some modules
#!/bin/bash
TGPUID="<GPU ID>"
TPORT="<PORT>"
TEMP="/sys/kernel/debug/dri/$TGPUID/$TPORT"

echo -n off > "$TEMP"/force
chvt <ANOTHER TTY>
chvt <HYPRLAND TTY>
sleep 1
echo -n unspecified > "$TEMP"/force
echo 1 > "$TEMP"/trigger_hotplug

For those interested, you can workaround this issue using either the kernel commandline video=<PORT>:D(see https://docs.kernel.org/fb/modedb.html) or a sysfs echo -n digital | sudo tee /sys/kernel/debug/dri/<GPU ID>/<PORT>/force(this is what the cmdline does, no docs, see https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/gpu/drm/drm_debugfs.c?h=v6.12-rc5#n406), this will make the kernel never disconnect the port, don't know if this has any downsides and on some monitors(or maybe just Nvidia) you may have to switch to a TTY before you turn off the monitor or after you turn it on.

Tested on my side, and by now not rising up the VRAM usage.

hm, does this affect kwin / mutter too?

So, is not something related only to Nvidia, "great"

For those interested, you can workaround this issue using either the kernel commandline video=<PORT>:D(see https://docs.kernel.org/fb/modedb.html)

Thank you! video=HDMI-A-1:D worked like a charm for me, doesn't go above ~400mb anymore, previously would go up to 3gb over time (nvidia 565.57 4k single monitor)

authors: MCPO-Spartan-117 gnusenpai gulafaran lfdominguez mcourteaux somewhatfrog vaxerski


text:
[HYPRBARS] Recent update broke rgba button backgrounds

Title.
The error is: "Config error in file /path/to/config at line n: var2 is not a valid number"

post your config maybe?

THIS / works fine
hyprbars-button = rgb(000000), 17, , hyprctl dispatch killactive
Before i updated, something like this / would work
hyprbars-button = rgba(25,25,25,0), 17, , hyprctl dispatch killactive
What's strange is that bar can be rgba, but buttons can't.

that's probably because we use , as a delimiter so it gets cut into rgba(25 as color and that's not valid.
Just use the non-comma version rgba(19191900)

oh, thank you, it now works. dk how it have worked before

authors: RambilE vaxerski

repo: hyprwm/hyprland-plugins


text:
How to disable touchdevice

I have a screen which is touchable, but the touch sensor is broken so some time it give a wrong input, I want to disable it, I'v tried to do something like:
device:Touch Device at 556a10891160 {
enabled=no
}
but it doesn't work
I notice that in the wiki, there is a:
enabled -> (only for mice / touchpads / keyboards)
so i'd like to know how to disable it

touchdevices are not supported for disabling yet

I wish this function could be add in the future, or I have to use other de/wm

technically you can blacklist the driver for it :P

closing as this is an issue in hl not wiki

authors: gfhdhytghd vaxerski

repo: hyprwm/hyprland-wiki


text:
🛑 based.social (Mastodon) is down

In 7a11db4, based.social (Mastodon) (https://based.social) was down:

HTTP code: 500
Response time: 467 ms

Resolved: based.social (Mastodon) is back up in b307c71.

repo: hytracer/status

license: MIT


text:
Add cache use examples

Is your feature request related to a problem? Please describe.
Understand how and when to use the different cache implementations available in the framework
Describe the solution you'd like
Showcase the different memory strategies in action with examples

Done: https://github.com/i-am-bee/bee-agent-framework/blob/main/docs/cache.md

repo: i-am-bee/bee-agent-framework


text:
Add Irregular time spacing

In addition to the implemented Equal, Logarithmic & Linear, implement an Irregular option and make it default.
"This is the design of the current chart, and it communicates graphically that some units are longer than others,"
How the irregular column is calculated is described in the Introduction of the 2013 paper:

The numerical ages make clear that the chronostratigraphic units are not of equal temporal duration and that the geological time scale is not a linear one.
The three Phanerozoic columns span 145, 214 and 182 Ma respectively, but have equal heights in the chart. Within these columns, each stage is given a fixed proportion of the column height (e.g., 2%).
The remaining height (100–(34 x 2) = 32% in the example) is then distributed proportionally to the stages that cover more than the fixed proportion on a linear timescale for that column.

Very nice to see this realised!

authors: KMCUtrecht nicholascar

repo: i-c-stratigraphy/chart-data


text:
Label pulls when dev/deploy_blocked

When a pull is dev_blocked, add a label "Dev Block" to it. When the dev_block is removed, remove the label. Do the same thing with deploy_block.

Difficulty scope me!

Closed in favour of #7.

repo: iFixit/pulldasher


text:
🛑 Beyond BU is down

In 79a3ba1, Beyond BU (https://beyond-mct.bu.ac.th) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Beyond BU is back up in 666808c after 8 minutes.


text:
Unable to prepare setup for platform tahoma.cover: Platform not found (cannot import name 'CoordinatorEntity' from 'homeassistant.helpers.update_coordinator' (/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py)).

[X] I have read the Readme, including the Advanced section regarding debugging.

Describe the bug
Version 2.3.6 was working correctly with no errors. I've updated to 2.3.7 by removing old 2.3.6 folder and placing new tahoma folder in the custom_components. Rebooted and saw the following error in the log. Running HA version 0.110.7
Got an invalid config error stating:
The following integrations and platforms could not be set up:

tahoma.cover

Debug log:
Log Details (ERROR)
Logger: homeassistant.setup
Source: setup.py:253
First occurred: 1:56:58 PM (1 occurrences)
Last logged: 1:56:58 PM
Unable to prepare setup for platform tahoma.cover: Platform not found (cannot import name 'CoordinatorEntity' from 'homeassistant.helpers.update_coordinator' (/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py)).
To Reproduce
See bug description.
Expected behavior
No errors and a working component
Screenshots
N/a
Environment (please complete the following information):

ha-tahoma version: 2.3.7
Home Assistant version: 0.110.7
Platform:  Somfy covers with a connexoon box

Additional context
When reverting to version 2.3.6 the error is gone.

Indeed CoordinatorEntity was introduced with the 0.115. You will have to update your HA instance. Currently, the latest is 0.119.

Ah clear. I was already looking for a HA version requirement, but could not find it.
Thanks for the information.

@barryhartman you can find it here but it was not correct. I will fix it. Thx for the report.

authors: barryhartman tetienne

repo: iMicknl/ha-tahoma


text:
[Connexoon RTS] BadCredentialsException, probably due to overuse of event listener

Describe the bug
I've had this start happening with my Australian Connexion unit. Occasionally it would happen once or twice a day and no issue, the integration would still work fine. However tonight, I'm not able to use it anymore, with the error '[custom_components.tahoma] invalid_auth' on HA start.
I did get a couple of the 'pyhoma.exceptions.BadCredentialsException: Bad credentials' prior to the blinds stop working.
My update interval was set at 60 seconds, even though these blinds are stateless so just show up as unknown.
Originally posted by @callifo in https://github.com/iMicknl/ha-tahoma/issues/278#issuecomment-770187935
Expected behavior
Connexoon RTS unit doesn't support any IO devices, thus there is no need for an event listener.
Environment (please complete the following information):

Hub: Somfy Connexoon RTS (Australia)
ha-tahoma version: latest
Home Assistant version: latest
Platform: n/a

Additional context
Related to https://github.com/iMicknl/ha-tahoma/issues/300

@callifo thanks for reporting. This is definitely something we need to address. For now, could you try removing the integration (and thus not calling the login endpoint for a while). After some days, you should be unblocked.
Set the event listener to a high interval, like a month. This should prevent you from being blocked.

Related to #300. Maybe as a quick fix, we can set the update interval very high if we just have RTS devices?


text:
uncompatable with optifabric

if anyone can link me to a version that is (for 1.19.2)  or alert me when a version of it that does release that would be helpful

There is no and never will be any OptiFine compatibility. Use Iris + Sodium instead.

repo: iPortalTeam/ImmersivePortalsMod


text:
关于博客收录的问题

请问这个博客如何被百度收录0.0

@MSK0379 我对收录这块不是很熟，不过我觉得百度站长平台应该有类似的功能吧

repo: iTimeTraveler/hexo-theme-hipaper


text:
ci: Fix index.html getting removed on failed builds

Disabled Host test results on gh pages to prevent hosting test results for failed builds on main branch (because build should never fail for legit reasons on main branch).
The problem was happening because github.event.number is undefined on main branch and it was putting the test results in the root folder. If we really want to host the test results for main branch, we could change target folder.

@bentleyvk The modal test keeps failing randomly in CI and locally too. I think it has to do with #285 because I haven't seen that before.

source: gharchive/pull-request

repo: iTwin/iTwinUI


text:
look into api key

api key header gives malformed key

@kbalog close this if you're able to run the system with the new changes.

repo: iai-group/arXivDigest


text:
search not work

http://codepen.io/elvismacak/pen/rrvEZN?editors=1000
I forked your codepen, and the search feature can work  in
  <mdt-table mdt-row="{'data': filteredItems,
                      'table-row-id-key': 'id',
                      'column-keys': ['name', 'calories', 'fat', 'carbs', 'protein', 'sodium', 'calcium', 'iron']}">
    <mdt-header-row>
...

but not in
<mdt-row ng-repeat="nutrition in nutritionList">

you can try that in the codepen, just enter the search input, the duplicate content will be shown

Hi @elvis-macak ,
Thanks for reporting the issue. I am aware of it.
The problem is with transclusion, <mdt-row ng-repeat... works with transclusion inside mdt-table and there are some limitation which makes it really hard (or even not possible) to workaround some cases, like this (dynamic content -> refresh the state of transcluded elements/recompile).
Because of this, <mdt-row> is already deprecated to use, although I haven't mark it as a deprecated element.
Please use mdt-row attribute always and your problem will be solved (as you noticed as well).

authors: elvis-macak iamisti

repo: iamisti/mdDataTable


text:
English version

hello, its very hard to follow can you please add an english version for us to learn and follow

Sorry, my English is not good, I can't help you

authors: iamoldli weedkiller

repo: iamoldli/NetModular


text:
Add stopwatch

hey @iamrahulmahato,
can you please assign it to me??

Sorry, someone is already working on this. Do not be demotivated and raise a new issue.

authors: iamrahulmahato kushwxha

repo: iamrahulmahato/master-web-development


text:
Not selecting location from auto-complete list causes internal server error

Steps to reproduce:

Go to "Add a Carpool" page
Type some nonsense for the "Leaving from" or "Going to" field. Don't pick an entry from the dropdown.
Add the carpool

Result: Internal server error

Dupe of https://github.com/iandees/carpools/issues/43.

repo: iandees/carpools


text:
No audio when running startCall

When I initiate an outgoing call from within my app, I call the startCall method (to register the call on the ios call history log). When I do this, I do not get audio (on either end of the call).
When I capture a network packet trace, I don't see any RTP being sent out by the device. My guess is,  startCall is suppressing the audio.
Call audio works perfectly when no calling startCall.

@rcidt  have you fixed this

You'll need to wait for the didActivateAudioSession event to fire before actually accepting the call, otherwise your library may fail to get control over the audio. (issue comment)

authors: platonish rcidt saikiranoptisol

repo: ianlin/react-native-callkit

license: isc


text:
Upgrade to OpenSSL 1.1.0

There are some API changes to be considered, see https://github.com/cisco/libsrtp/pull/211/files

NOTE: Let's wait until Node.js upgrades to openssl 1.1.0.

Interesting news: OpenSSL 1.1 no longer needs the application to provide locking facilities! https://www.openssl.org/blog/blog/2017/02/21/threads/

Yep, but I won't upgrade to OpenSSL 1.1.0 until Node does it. I just want to drop the openssl folder of Node into mediasoup :)

authors: ibc saghul

repo: ibc/mediasoup

license: ISC


text:
Feature: Make git_bcommits follow renamed files

Have you RTFM'd?

[X] I have done proper research

Feature Request
The git_bcommits command does not list the full history if a file was renamed in some previous commit. Other tools like vim-fugitive's :0GClog can handle this.
I tried to add a --follow option here and it now showed also the commits before the file was renamed. But the preview window does not work for these older commits.
https://github.com/ibhagwan/fzf-lua/blob/3bd795ab8536435a1d61b8f394d83c88d1494403/lua/fzf-lua/defaults.lua#L396-L397

The preview command is git show --color {commit sha} -- {file} which is most likely why it fails for commits where the file was named differently , if you can find a command that can handle the renames it would work.

The git_bcommits command does not list the full history if a file was renamed in some previous commit. Other tools like vim-fugitive's :0GClog can handle this.

If you can save me some time and research the logic behind the fugitive command I’m sure I can replicate the behavior.

Fugitive works a bit different: It opens the quickfix list and every entry represents one specific version of the current file. So when you select an entry in the qf window, it shows the full file at that commit.
It does nifty things, to achieve this: It first fetches the commit log in a custom format by a command like this:
git '--no-pager' '-c' 'diff.context=0' '-c' 'diff.noprefix=false' \
    'log' '--no-color' '--no-ext-diff' '--pretty=format:fugitive %h %P^I%H %s' '--summary' '--follow' \
    ./myfile.txt

The output not only includes the commit hashes and messages but also any mode changes and rename operations. It then seems to parse all the data from this output and also detects renaming operations. This way it can also get the old name of the file. It all happens around here I think:
https://github.com/tpope/vim-fugitive/blob/320b18fba2a4f2fe3c8225c778c687e0d2620384/autoload/fugitive.vim#L6026-L6034
A rename line looks like this in the output:
 rename path/to/{oldname.txt => newname.txt} (77%)

This all seems pretty sophisticated - I don't think it's easy to do something similar with fzf-lua.

It does nifty things, to achieve this: It first fetches the commit log in a custom format by a command like this:
This all seems pretty sophisticated - I don't think it's easy to do something similar with fzf-lua.

Anything is possible but I also believe not absolutely everything has to be implemented, bang for the buck here, just to get bcommits rename history I don’t think is worth the complexity.

authors: ibhagwan mikehaertl

repo: ibhagwan/fzf-lua


text:
git_commits copy commit hash not working

Info

Operating System: Archlinux
Shell: zsh
Terminal: st
nvim --version: 0.9.4
fzf --version: 0.44.1 (29e67d30)

[x] The issue is reproducible with mini.sh

Description
it's mapped to C-y in header shown to users to copy current commit hash but it's doesn't seem to doing anything.

How are you trying to paste? By default the hash gets copied to neovim’s yank register which you can paste by pressing p in normal mode.
If you wish to copy to clipboards, use a custom function that sets the + register:

use the default action as base
https://github.com/ibhagwan/fzf-lua/blob/de33c83fdb7b231ef2ef4295b2011600f77fddb1/lua/fzf-lua/actions.lua#L594-L598

yes that's right but as I have clipboard set to "unnamedplus"` I expect everything to be in yanked to clipboard register not in neovim's like before setting this option.

yes that's right but as I have clipboard set to unnamedplus I expect everything to be in yanked to clipboard register not in neovim's like before setting this option.

As you can see in the action it gets copied directly to 0 and ”, if you want it to clipboard set it to +.

@ibhagwan which fzf window this key will be applied? this seems to be a hacky solution to me and might break in future codebase changes, why not having a use_system_clipboard option for commits and bcommits

@ibhagwan which fzf window this key will be applied? this seems to be a hacky solution to me and might break in future codebase changes, why not having a use_system_clipboard option for commits and bcommits?

It’s not badly it’s a simple custom action, it will be applied to the provider you will set its action to, this needs to be set to ctrl-y in the actions table of commits or bcommits or both.
https://github.com/ibhagwan/fzf-lua/wiki/Advanced#fzf-exec-acts

ok if that's the case this issue can be closed.

ok if that's the case this issue can be closed.

In case you haven’t different it out:
local copy_hash = function(selected, opts)
   local commit_hash = match_commit_hash(selected[1], opts)
   vim.fn.setreg([[+]], commit_hash)
 end

require'fzf-lua'setup({
  git = {
    commits = { actions = {  ['ctrl-y'] = copy_hash } },
    bcommits = { actions = {  ['ctrl-y'] = copy_hash } }
  }
})

@mortezadadgar, this doesn't need another config issue, update to https://github.com/ibhagwan/fzf-lua/commit/3d71803d1ed25420c0c719d97fe8e1f7a1285f1f, the action will now consider the clipboard setting and copy to * or + for unnamed and unnamedplus respectively:
https://github.com/ibhagwan/fzf-lua/blob/3d71803d1ed25420c0c719d97fe8e1f7a1285f1f/lua/fzf-lua/actions.lua#L594-L604

thanks that's better now, wondering why you changed your mind

thanks that's better now, wondering why you changed your mind?

I gave it some thought and as long as it didn't "cost" yet another configuration option nobody will ever remember it made sense to match the clipboard setting.

authors: ibhagwan mortezadadgar


text:
feat: Support extension function outside of substrait spec

Substrait function is defined by the function uri + function name.
Currently, all functions in ibis-strait comes from https://github.com/substrait-io/substrait/tree/main/extensions
There is a need to add function that of outside of main substrait spec. e.g., during https://github.com/apache/arrow/pull/35513#issuecomment-1544181944 to add first and last aggregation in Acero, we recognized that there is a need to communicate functions with alternatively uri, e.g., urn:arrow:substrait_simple_extension_function that is Acero specific. Other than the "first and last" function, we are also thinking about adding "floor and ceil" function for timestamp columns (e.g., in pandas, this is s.dt.ceil and s.dt.floor).
This ask here is that if we can allow an mechanism to support this. Currently, we can get this working by implementing some mechanism in our downstream codebase, and effectively registering first/last doing sth similar to this (https://github.com/ibis-project/ibis-substrait/blob/main/ibis_substrait/compiler/mapping.py#L183), but apparently that uses private functions in ibis-substrait and not a great solution.
@rtpsw Can share more details on what is done internally and we can discuss if we can have a better way to do this in ibis-substrait.

Hey @icexelloss -- what's the issue with using register_extension_yaml?  I added that with exactly this use-casein mind.

See my response in another thread. Let's pick one of the threads for this discussion.

I think the most expedient way to handle this is to add in some kind of override kwarg that will allow passing in a custom uri that isn't constructed from the file path.

I think the most expedient way to handle this is to add in some kind of override kwarg that will allow passing in a custom uri that isn't constructed from the file path.

Yeah I think this could work. Alternatively we can also allow register_extension_yaml to take an uri parameter and move the logic (https://github.com/ibis-project/ibis-substrait/blob/main/ibis_substrait/compiler/mapping.py#LL198C28-L198C52)  to caller side https://github.com/ibis-project/ibis-substrait/blob/88723a19b82a91ef04e3c148f9329ec4458b4ecc/ibis_substrait/compiler/mapping.py#L202

Hi @rtpsw can we please use this thread for dsicussion and close the other thread? issue

That PR is marked as a draft and is not obsolete; it's just waiting for first/last to be added to the Substrait spec. We can continue the discussion about extension functions here.

@gforsyth Do you have a preferred solution/API? Would like to get this going so we can support this proper and remove the internal hack.

it's just waiting for first/last to be added to the Substrait spec.
@rtpsw What do you mean by "waiting for first/last to be added to the Substrait spec"? Do you mean for first/last to be supported as standard function and not arrow/acero extension functions?

@rtpsw What do you mean by "waiting for first/last to be added to the Substrait spec"? Do you mean for first/last to be supported as standard function and not arrow/acero extension functions?

My understanding is that it is likely first/last would be added to the Substrait spec. In this case, the code here would be useful. Until then, I marked the current PR as a draft. In the meantime, we're proceeding with first/last as extension functions.

@gforsyth Do you have a preferred solution/API? Would like to get this going so we can support this proper and remove the internal hack.

I think a uri override kwarg makes sense.

authors: gforsyth icexelloss rtpsw

repo: ibis-project/ibis-substrait


text:
Make it possible to add nested elements in elements that close on the same line

Example:
<Adios2XmlPipe name="Adios2XmlPipe"></Adios2XmlPipe>

Related #638

:tada: This issue has been resolved in version 2.14.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:

repo: ibissource/frank-flow


text:
Use the new ioctl to construct sysfs path to the afu

This patch changes the cxl_sysfs_fd function to use new ioctl
CXL_IOCTL_GET_AFU_ID available on afu file descriptor to fetch the
cxl_afu_id structure containing the card/offset & mode information. This
info is then used to construct the path to the afu's sysfs
directory. Older implementation was dependent on the major/minor number
of the afu retrieved by fstat on the fd. However with new cxl kernel api
its possible for a kernel module to have its own device that exports
libcxl api to the userspace. This broke the existing implementation
which was dependent on the major/minor numbers fetched from the device
file.
If the ioctl is not available (in case of older cxl driver) the
implementation falls back to the previous mechanism of constructing the
sysfs path using the major/minor numbers retrieved by fstating the file
descriptor to the afu device.

Looks good. Just waiting on the corresponding support to be merged into the kernel before applying.

I've added a few things that were missing from cxl_afu_fd_to_h(), updated the Makefile to cope with the dependency on the newer cxl.h and merged this.

repo: ibm-capi/libcxl


text:
project

'git push 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'

git add sentimentAnalyzeServer/package.json sentimentAnalyzeServer/package-lock.json sentimentAnalyzeServer/sentimentAnalyzerServer.js sentimentAnalyzeClient/src/App.js sentimentAnalyzeClient/src/EmotionTable.js


text:
oem-ibm: Introducing sensor design for SBE ocmb dump

This commit introduces new oem sensor PDRs of state set id - PLDM_OEM_IBM_SBE_DUMP_UPDATE_STATE(32777) whose state will be set for ocmb dump progress status.  This change implements the new sensor based dump design only for ocmb sbe dumps whereas the sbe PROC dump design remains unchanged. As part of this change PLDM will be updating the sensor state with dump progress state. The remote terminus will be using polling mechanism on getStateSensorReadings command for dump status update.
Tested: Used pldmtool to set numeric effecter for triggering dump.

@riyadixitagra 1060.20 branch is not needed? What was decided?

repo: ibm-openbmc/pldm


text:
Update for Swift 3.1

Change deprecated M_PI_4 to (Double.pi / 4)
Remove @discardableResult on void function

Thanks for sending this PR!

authors: KyleMay icanzilb

repo: icanzilb/SwiftSpinner


text:
🛑 Secret Site is down

In 8c138e5, Secret Site ($SECRET_SITE) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Secret Site is back up in 4de6767.

repo: icarephone/upptime


text:
Remove SDL_bool and SDL_TRUE in line with latest SDL3

SDL3 is in flux, the extras compile with a lot of warnings due to SDL_bool becoming plain old bool. I assume someone will do this anyway, but here is a courtesy pull request!

Thanks!

authors: icculus johnfredcee

repo: icculus/physfs

license: Zlib


text:
feat: 兼容 testMatch 参数为字符串, 且支持数组形式

字符串形式

tnpm test -- --jest-testMatch='**/project.test.ts'

数组形式

tnpm test -- --jest-testMatch='["**/project.test.ts", "**/node.add.test.ts"]'  // or
tnpm test -- --jest-testMatch="['**/project.test.ts', '**/node.add.test.ts']"

testMatch 并不是标准的 jest cli 参数，通过 build-scripts test  方式进行指定

authors: ClarkXia LeoYuan

repo: ice-lab/build-scripts


text:
使用 rollup插件

是否可以直接使用rollup的插件呢？使用的方式和rollup中有什么差别？

https://pkg.ice.work/reference/plugins-development#modifyrollupoptions

repo: ice-lab/icepkg


text:
A new way to create writer

Problem
Hi, I find that now our writer design has some problems now:

The parameter has to pass top down. It makes the process of creating writer is tedious and couple. E.g: The delta writer use data file writer , position delete writer and equality delete writer. So new signature of delta need to accept the LocationGenerator for data file writer and another one for delete file writer. And we also need to pass TableConfig top down. In the future, we prepare to add metrics for kinds of writer, so we end up to pass metrics top down.
It's hard to combine kinds of writer, e.g. we have the PartitionAppendOnlyWriter and the PartitionUpsertWriter. We can't decouple the PartitionWriter and FileWriter(AppendOnlyWriter and Upsert Writer).

Target

Make the process of creating writer is decouple. We don't need to pass kinds of parameters top down.
After creating them independently, we can combine them easily. E.g. combined partition writer with any file writer.

Solution
I have think a new  API to create the writer, it modified from our original layer trait. Seems it can make combing and reusing the writer easier.
#[async_trait]
pub trait FileAppender: Send + 'static {
    async fn write(&mut self, batch: RecordBatch) -> Result<()>;
    async fn close(&mut self) -> Result<Vec<DataFileBuilder>>;
}

pub trait FileAppenderLayer: Send + Sync + Clone + 'static {
    type R: FileAppender;
    fn compile( &mut self, schema: &SchemaRef) -> Result<()>;
    fn build(self) -> Result<Self::R>;
}

// Implementation Example of Rolling Writer
#[derive(Clone)]
pub struct RollingWriterLayer {
    location_generator: Arc<FileLocationGenerator>,

    config: RollingWriterConfig,
    parquet_config: ParquetWriterConfig,
    operator: Operator,
    table_location: String,

    /// compiled
    arrow_schema: Option<SchemaRef>,
}

impl RollingWriterLayer {
    pub fn new(
        operator: Operator,
        table_location: String,
        location_generator: Arc<FileLocationGenerator>,
        config: RollingWriterConfig,
        parquet_config: ParquetWriterConfig,
    ) -> Self {
        Self {
            location_generator,
            config,
            parquet_config,
            operator: None,
            table_location: None,
            arrow_schema: None,
        }
    }
}

impl FileAppenderLayer for RollingWriterLayer {
    type R = RollingWriter;

    fn compile(
        &mut self,
        schema: &SchemaRef,
    ) -> Result<()> {
        self.arrow_schema = Some(schema.clone());
        Ok(())
    }

    fn build(self) -> Result<Self::R> {
        RollingWriter::try_new(
            self.operator.unwrap(),
            self.table_location.unwrap(),
            self.location_generator,
            self.arrow_schema.unwrap(),
            self.config,
            self.parquet_config,
        )
    }
}

The process of creating a writer has 3 steps:

Create the writer layer. In this step, we pass the parameter this writer need and it's decouple. We don't need to pass the parameter top down. Such as config and location generator.
Compile(May be Bind is more appropriate). In this step, we pass the schema top down so that we can reuse the rolling writer in different file writers. E.g. position delete writer can pass the Schema<String,Int> to it in compile step.
Build it to get the writer!

We can notice that the layer is Clone and which means that after compile, we can store it directly as a  FileBuilder. E.g in sorted cache writer
Finally, we can find that it's easy to create and combine the writer use this API. It looks like, e.g.
let rolling_layer = RollingWriterLayer::new(rolling_config);
let rolling_metrics_layer = RollingMetricsLayer::new(rolling_layer);
let data_filer_layer = DataFileLayer::new(rolling_metrics_layer);
let partition_layer = PartitionLayer::new(data_filer_layer);
let shcema = table.current_schema();
let compiled_layer = partition_layer.compile(&schema);
let writer = complied_layer.build();

I have draft a PR #242 to try to implement this and find that it's successfully to rewrite all the writer I have in this way.
( It has a little difference between the solution I describe above, but the key sights is same.
More improvement
We can separate the layer into three kinds to guarantee the correctness.

FileAppenderLayer : RollingWriterLayer
FileWriterLayer: DataFIleWriterLayer, PositionDeleteWriterLayer, EqualityDeleteWriterLayer
FunctionLayer: PartitionLayer, SortedCachedLayer

cc @liurenjie1024  @Xuanwo

Let's think about if we only have the build(self,&Schema). Then everytime we need to pass the schema to the layer when we build.

We can notice that the layer is Clone and which means that after compile, we can store it directly as a FileBuilder. E.g in sorted cache writer

So in this SortedCacheWriter, I need to store the layer and schema. The compile phase is to separate this out, after compile, we only need to store the layer and don't need to store the schema. This also means that in SortedCacheWriter, it's totally decoupled with FileWriter, it doesn't need to take care of schema. It just takes care of the sort and cache.

So this is sth like init parameter of FileAppenderLayer? How about modifying it to following:
pub struct FileAppenderLayerInput {
 schema: SchemaRef,
  op: Operator
}

pub trait FileAppenderLayer {
   type R: FileAppdner;

  fn init(input: FileAppenderLayerInput) -> Result<Self>;

  fn build(self) -> Result<Self::R>;
}

I think this way we don't need to maintain init state of concrete factory?

fn init(input: FileAppenderLayerInput) -> Result;

Seems it can't be an init function like this.🤔 We want to create each layer independently which means that we should let the concrete factory implement their own new\init function. E.g.
// Create independently first. We need a custom `new` function.
let rolling_layer = RollingLayer::new(rolling_config,rolling_metrics);
// And then combine it with other layers
let data_file_layer = DataFileLayer::new(rolling_layer, data_file_config, data_file_metrics)

The fn compile( &mut self, schema: &SchemaRef) -> Result<()>; is werid to understand.
The API is modifed to
#[async_trait]
pub trait RecordBatchWriter: Send + 'static {
    async fn write(&mut self, batch: RecordBatch) -> Result<()>;
    async fn close(&mut self) -> Result<Vec<DataFileBuilder>>;
}

pub trait RecordBatchWriterBuilderLayer: Send + Sync + Clone + 'static {
    type R: RecordBatchWriter;
    fn build(self, schema: &Schema) -> Result<Self::R>;
}

Hope it be more easily to understand.

I have question: How many struct will implement trait RecordBatchWriter (for example)?

I have a question: How many struct will implement trait RecordBatchWriter (for example)?

Every internal writer. E.g. DataFileWriter, DeltaWriter, PosistionDeleteWriter.

I realize that using #[async_trait] to define writer trait may introduce overhead. maybe we need https://blog.rust-lang.org/inside-rust/2022/11/17/async-fn-in-trait-nightly.html

I realize that using #[async_trait] to define writer trait may introduce overhead. maybe we need https://blog.rust-lang.org/inside-rust/2022/11/17/async-fn-in-trait-nightly.html

This requires nightly rust, and will be stable in recent release.

We can achieve this without introducing any trait. Just need to reach the consensus that every writer has their own layer.

The problem without a trait is that you are depending on concrete type. This is not good for extensibility, for example, what if you want to support other formats such as orc in future.

This requires nightly rust, and will be stable in recent release.

Seem today. 🤣 https://releases.rs/docs/1.74.0/#:~:text=Released on%3A 16 November%2C 2023

This requires nightly rust, and will be stable in recent release.

Seem today. 🤣 https://releases.rs/docs/1.74.0/#:~:text=Released on%3A 16 November%2C 2023

Let's move.

My bad. async fn in trait should be in 1.75.0 😭https://releases.rs/docs/1.75.0/#:~:text=Stabilize%20async%20fn%20and%20return%2Dposition%20impl%20Trait%20in%20trait%20(merged%2033%20days%20ago)

We find the extra requirement I didn't realize before:

Builder trait to let config writer independently.
Writer can be combined flexibly.
Separate the writer into two layers to make the arch clean:

iceberg writer: data file writer, position delete writer, equality delete writer, partition writer,...
file writer: rolling writer, parquet writer, orc writer
The file writer is the writer writes data actually. And the iceberg write is to provide more high-level functions based on them.

We hope two layer both are extensible, user can custom their own writer in some layer and connect it to another layer. E.g user can custom a new file writer rather than rolling writer and connect it to data file writer. Or custom a new iceberg writer such as filter writer and connect it to data file writer.
For iceberg writer, the input should be extensible rather than only RecordBatch. E.g the sort writer, it's the writer to accept input and cache it. When the cache num reaches the threshold, it will sort and flush them. If the upper layer only write a row one time, then it need to convert the row to RecordBatch every time. And the sort writer need to contact the RecordBatch when flush them. It's inefficient.

To fulfill these requirements, I refine the design:
#[async_trait::async_trait]
pub trait WriterBuilder: Send + Sync + Clone + 'static {
    type R;
    async fn build(self, schema: &SchemaRef) -> Result<Self::R>;
}

#[async_trait::async_trait]
pub trait FileWriter: Send + 'static {
    type R: WriteResult;
    async fn write(&mut self, batch: RecordBatch) -> Result<()>;
    async fn close(&mut self) -> Result<Self::R>;
}

#[async_trait::async_trait]
pub trait IcebergWriter<I = RecordBatch>: Send + 'static {
    type R: WriteResult;
    async fn write(&mut self, input: I) -> Result<()>;
    async fn close(&mut self) -> Result<Self::R>;
}

pub trait WriteResult: Send + Sync + 'static + Default {
    fn with_content(self, content: crate::types::DataContentType) -> Self;
    fn with_equality_ids(self, equality_ids: Vec<i32>) -> Self;
    fn with_partition_value(self, partition_value: Option<StructValue>) -> Self;
    fn extend_res(&mut self, other: Self);
}

// The extra interface provided by a writer, we separate it out.
pub trait SingletonWriter {
    fn current_file(&self) -> String;
    fn current_row_num(&self) -> usize;
}

Generally I'm fine with this design, but I have some suggestions:

Since we have decided to separate writers to two layers, I think we also need to separate WriterBuilder into two different traits, e.g. we should add an extra FileWriterBuilder trait.
Also same for writer result. Although they look similar for now, it's not reasonable to mix them together, this will make api evolving difficult.
I think IcebergWriter is for single partition, right?

I think IcebergWriter is for single partition, right?

No, ParitionWriter is also an IcebergWriter. And it can be easily combined with other writers.
And I guess the trait can be modified like:
#[async_trait::async_trait]
pub trait FileWriterBuilder: Send + Sync + Clone + 'static {
    type R: FileWriter;
    async fn build(self, schema: &SchemaRef) -> Result<Self::R>;
}

#[async_trait::async_trait]
pub trait FileWriter: Send + 'static {
    type R: FileWriteResult;
    async fn write(&mut self, batch: RecordBatch) -> Result<()>;
    async fn close(&mut self) -> Result<Self::R>;
}

#[async_trait::async_trait]
pub trait IcebergWriterBuilder: Send + Sync + Clone + 'static {
    type R;
    async fn build(self, schema: &SchemaRef) -> Result<Self::R>;
}

#[async_trait::async_trait]
pub trait IcebergWriter<I = RecordBatch>: Send + 'static {
    type R: WriteResult;
    async fn write(&mut self, input: I) -> Result<()>;
    async fn close(&mut self) -> Result<Self::R>;
}

pub trait FileWriteResult: Send + Sync + 'static + Default {
  type R: WriteResult;
  fn convert(self) -> Self::R;
}

pub trait WriteResult: Send + Sync + 'static + Default {
    fn with_content(self, content: crate::types::DataContentType) -> Self;
    fn with_equality_ids(self, equality_ids: Vec<i32>) -> Self;
    fn with_partition_value(self, partition_value: Option<StructValue>) -> Self;
    fn extend_res(&mut self, other: Self);
}

Almost LGTM. Do we still need the trait WriteResult? I think simply two traits makes things more clear?

Do we still need the trait WriteResult?

We need it because we need to modify the WriteResult when implement the close method in IcebergWriter trait. Like set the DataContentType.

Do we still need the trait WriteResult?

We need it because we need to modify the WriteResult when implement the close method in IcebergWriter trait. Like set the DataContentType.

I mean we should have two trait for WriteResult, FileWriteResult, rather than sharing one common trait?

Oh, sorry, I have some misunderstanding. LGTM

Now we have the first complete implementation #242. And the creation process is flexible. We can extend any writer independently.
async fn create_writer(
        &self,
    ) -> UpsertWrapperWriter<
        impl IcebergWriter<R = DeltaResult<Vec<DataFileBuilder>, Vec<DataFileBuilder>>>,
    > {
        let table = self.create_icelake_table().await;
        log::info!(
            "Real path of table is: {}",
            table.current_table_metadata().location
        );

        let paquet_writer_builder = table
            .writer_builder()
            .unwrap()
            .parquet_writer_builder(0)
            .unwrap();
        let rolling_writer_builder = table
            .writer_builder()
            .unwrap()
            .rolling_writer_builder(None, paquet_writer_builder)
            .unwrap();
        let data_file_writer_builder = DataFileWriterBuilder::new(rolling_writer_builder.clone());
        let equality_delete_writer_builder =
            EqualityDeleteWriterBuilder::new(rolling_writer_builder.clone(), vec![1, 2]);
        let position_delete_writer_builder =
            PositionDeleteWriterBuilder::new(rolling_writer_builder.clone(), None);
        let sorted_position_delete_writer_budiler =
            SortWriterBuilder::new(position_delete_writer_builder, 0, 100);
        let delta_writer = EqualityDeltaWriterBuilder::new(
            data_file_writer_builder,
            sorted_position_delete_writer_budiler,
            equality_delete_writer_builder,
            vec![1, 2],
            false,
        );
        let partition_writer_builder = table
            .writer_builder()
            .unwrap()
            .partition_writer_builder(delta_writer)
            .unwrap();
        UpsertWrapWriterBuilder::new(partition_writer_builder)
            .build(&table.current_arrow_schema().unwrap())
            .await
            .unwrap()
    }

But seems there are some problem:

create process is flexible but tedious. Maybe we can provide the higher level interface based on them.
The return type may be urgly. Following complete type is 🥵  (Although this type can be infered by compiler

UpsertWrapperWriter<
         PartitionedWriter<
                  EqualityDeltaWriterBuilder<
                         DataFileWriterBuilder<RollingWriterBuilder<ParquetWriterBuilder>>,
                         SortWriterBuilder<
                                 PositionDeleteInput, PositionDeleteWriterBuilder<RollingWriterBuilder<ParquetWriterBuilder>>>,
                         EqualityDeleteWriterBuilder<RollingWriterBuilder<ParquetWriterBuilder>>>>>`

When user want to store this in a struct, they need to declare the complete name or use Box<dyn>. But seems it can't avoid if we want to make writer general.
I'm not sure whether there are better solution or it's just a trade-off we have to make. I'm glad to refine the design if you have better idea. cc @liurenjie1024  @Xuanwo

create process is flexible but tedious. Maybe we can provide the higher level interface based on them.

I think it's ok, we just need to provide some helper method to make the most frequently used ones easier to write.

The return type may be urgly. Following complete type is 🥵 (Although this type can be infered by compiler

I think for the outer most api, we should make it easy to for user. It would be better to wrap it in Arc<dyn>?

I think for the outer most api, we should make it easy to for user. It would be better to wrap it in Arc<dyn>?

Agreed. We shouldn't let users to play with generic parameters, as they could potentially create a writer instance and passing it around which means we should write the type down. Consider the case of databases: we will construct various interpreters/stages and perform transformations.

I think the outer most user api such as RecordBatchWriter can be object safe?

Thanks! The following api can work
pub struct DeltaWriter {
    inner: Box<dyn IcebergWriter<R = DeltaResult<Vec<DataFileBuilder>, Vec<DataFileBuilder>>>>,
}

impl DeltaWriter {
    pub async fn write(&mut self, op: impl Into<Vec<i32>>, input: RecordBatch) -> Result<()> {
        let mut fields = input.schema().fields().to_vec();
        fields.push(Arc::new(Field::new(
            "",
            arrow_schema::DataType::Int32,
            false,
        )));

        let schema = Arc::new(arrow_schema::Schema::new(fields));

        let mut columns = input.columns().to_vec();
        columns.push(Arc::new(arrow_array::Int32Array::from(op.into())));

        let batch = RecordBatch::try_new(schema, columns).unwrap();

        self.inner.write(batch).await
    }

    pub async fn close(
        &mut self,
    ) -> Result<DeltaResult<Vec<DataFileBuilder>, Vec<DataFileBuilder>>> {
        self.inner.close().await
    }
}

pub struct RecordBatchWriter {
    inner: Box<dyn IcebergWriter<R = Vec<DataFileBuilder>>>,
}

impl RecordBatchWriter {
    pub async fn write(&mut self, input: RecordBatch) -> Result<()> {
        self.inner.write(input).await
    }

    pub async fn close(&mut self) -> Result<Vec<DataFileBuilder>> {
        self.inner.close().await
    }
}

I think for the outer most api, we should make it easy to for user. It would be better to wrap it in Arc?

We can't work on Arc<dyn> because we can't get &mut from it.

Is DeltaWriter  and RecordBatchWriter written in this approach can be Send + Sync?

Is DeltaWriter  and RecordBatchWriter written in this approach can be Send + Sync?

Send and Sync in Box It depends on trait. It's only Send because the IcebergWriter trait is only Send. Do we need Sync here?🤔

Is DeltaWriter  and RecordBatchWriter written in this approach can be Send + Sync?

Send and Sync in Box It depends on trait. It's only Send because the IcebergWriter trait is only Send. Do we need Sync here?🤔

I'm not sure if we need Sync, but from risingwave's use case we only need to be Send. cc @Xuanwo

but from risingwave's use case we only need to be Send

all APIs in Writer takes &mut self, requiring Send is enough.

I realized that one more point: close(&mut self) is different than close(self), it means that a writer should consider the case that it will be reuse after close. Actually it's more like flush(&mut self). In some case, this may make the writer more complete, e.g.

delta writer will maintain the cache, and it should clear the cache when flush.
rolling writer should open a new writer when flush.
But I find that we can't use close(self) instead because we can't move the value in Box<dyn Writer> 🥵

it means that a writer should consider the case that it will be reuse after close.

Calling close in the same writer should return an error.

Calling close multiple on the same writer should return an error.

This is an approach. But I'm not sure whether it will add the extra maintain effort. We need add check for each interface such as write. 🤔

I realized that one more point: close(&mut self) is different than close(self), it means that a writer should consider the case that it will be reuse after close. Actually it's more like flush(&mut self). In some case, this may make the writer more complete, e.g.

delta writer will maintain the cache, and it should clear the cache when flush.
rolling writer should open a new writer when flush.

But I find that we can't use close(self) instead because we can't move the value in Box<dyn Writer> 🥵

How about close(Box<Self>)?

This is an approach. But I'm not sure whether it will add the extra maintain effort. We need add check for each interface such as write. 🤔

You can just passing close to underlying layer, a.k.a, let opendal handle those work.

This is an approach. But I'm not sure whether it will add the extra maintain effort. We need add check for each interface such as write. 🤔

We can just passing close to underlying layer, a.k.a, let opendal handle those work.

I guess the problem is api safety.

I guess the problem is api safety.

I feel like it's the same problem like calling poll while this future returns Poll::Ready (calling close while this file has already closed):

Once a future has completed (returned Ready from poll), calling its poll method again may panic, block forever, or cause other kinds of problems; the Future trait places no requirements on the effects of such a call. However, as the poll method is not marked unsafe, Rust’s usual rules apply: calls must never cause undefined behavior (memory corruption, incorrect use of unsafe functions, or the like), regardless of the future’s state.

from https://doc.rust-lang.org/std/future/trait.Future.html

Yes, it's hard to ensure everything safe. We should try as much as possible 😂

How about close(Box)?

Fail. Because it need to Self: Sized and that will make the trait is not object-safe.

I guess the problem is api safety.

I feel like it's the same problem like calling poll while this future returns Poll::Ready (calling close while this file has already closed):

Once a future has completed (returned Ready from poll), calling its poll method again may panic, block forever, or cause other kinds of problems; the Future trait places no requirements on the effects of such a call. However, as the poll method is not marked unsafe, Rust’s usual rules apply: calls must never cause undefined behavior (memory corruption, incorrect use of unsafe functions, or the like), regardless of the future’s state.

from https://doc.rust-lang.org/std/future/trait.Future.html

Yes. We can define that after close, call close or write will panic. But to satisfy it, we need to set the check in write and close for every writer.  Such as
fn write() {
  if (self.is_close) {
    panic()
  }
}

The new writer is done! Thanks for your help and suggestions! @Xuanwo @liurenjie1024

authors: Xuanwo ZENOTME liurenjie1024

repo: icelake-io/icelake


text:
is there any limitation for the ripemd 160 file?

Hello iceland ,
Just wondering , isthere any limitation for using ripemd 160 file ? cause i just tried to using my 10 GB file , its not working , please help
Regards
Roby wijaya

Same limitation as Original Bitrack. The GPU resources.

Hello iceland ,
Just wondering , isthere any limitation for using ripemd 160 file ? cause i just tried to using my 10 GB file , its not working , please help
Regards
Roby wijaya

How many uploads did you manage?
Than you created the file for alcoins


text:
citation

The ICES librarian has asked if we can change the format to the standard citation format
From:
Joint Cetacean Data Programme (JCDP) (https://cetaceans.ices.dk/), 2022. ICES, Copenhagen
To:
Joint Cetacean Data Programme (JCDP), 2022. ICES, Copenhagen. https://cetaceans.ices.dk

Done:

thanks @cmspinto it turns out that was not specific enough, see update below
Joint Cetacean Data Programme (JCDP), 2022. ICES, Copenhagen, Denmark. https://cetaceans.ices.dk/

Done

authors: cmspinto neil-ices-dk

repo: ices-eg/WGJCDP-Cetaceans


text:
train on my own data set

How to train on my own data set?

You could change this line to the dir your dataset locates

@xingrui94 Excuse me, did you succeed in the training.

repo: icpm/super-resolution


text:
Restyle nav and index page

Summary

Added Index.module.css
Changed old logo to new logo
Changed color of navbar to transparent gray
Restyle index page, added Bungee and DM Sans font
Added small Events and Projects sections. Events has a carousal.
Page is responsive on all sizes
Added SVG icon on navigation
Switched CSS to Sass for better front-end maintenance

Page Preview

Test Plan

Spice UI up with cute anteaters displayed around the page
Project sections will have a gallery
Recruit people to contribute to the website
Develop so that Light and Dark mode can easily be implemented
Determine if code is readable and efficient
Talk with board and teams to coordinate website changes/plans
Update nav to fit website's goal to inform students
Stickers throughout each section for added aesthetic
Image animation on hero graphic (cool images popping out of laptop)

Future Followup
Consult with board for design decisions
Update Project section with image cards
Wait for Project's section to be created to merge
Some Index.modules.css Classes will be moved to global (Ex: Section) for efficiency on other pages
Custom properties for colors should be added in the future

I did npm install sass. So, there may be some unwanted dependencies installed. I'm not too sure which dependencies are from sass.

Really liking the new design!

Created _document.js to add links for styles to fix "No stylesheets in Head component error" https://nextjs.org/docs/messages/no-stylesheets-in-head-component

I think it's ready to be merged. Projects section currently a placeholder, and descriptions could be worded better. Other than that, I think it's finished and those could easily be updated.

repo: icssc/icssc-website


text:
Decide on a versioning system

As mentioned in https://github.com/icubam/icubam/pull/113#discussion_r401215066 by @dulacarnold

I think we're not set up with a good versioning system. We started putting versions in the config.toml but that was a bad idea, I think bumping the setup.py version every time we deploy could work (a).

Opening an issue to centralize the discussion around it, as there have been lots of comments in different places.
Earlier, @rprimet suggested to use https://github.com/warner/python-versioneer for it (b). Another alternative could be https://github.com/pypa/setuptools_scm (comparison with versioneer in https://github.com/icubam/icubam/pull/82) (c).
Also in https://github.com/icubam/icubam/pull/82 @Deathn0t proposed another solution to load version from setup.cfg (d).
So there are 4 possible approaches so far a-b-c-d.

Personally I think a) is fine as long as deployments are not too frequent. I'll investigate b and c to see if they could work in this use-case.

Version is currently set in 3 place,

setup.py (or setup.cfg)
icubam/__init__.py (after https://github.com/icubam/icubam/pull/113 is merged)
resources/config.toml

and ideally we would need to reduce this to 1 even for approach a).

Personally to manage projects simply I usually set manually the version in a icubam/__version__.py which is loaded in the icubam/__init__.py. And the setup.py import this __version__ attribute from the icubam package. Till now I never used the setup.cfg just thought it was a more standard way so created one in the #82. I also usually put all requirements in a list inside the setup.py so that everything is in the same place. Then I create the release tag using git-flow, which is very easy and well organized for features, hot-fix, develop and release branches.  To upload and build the wheel I use twine which enables you to upload to PyPI in a secure/easy manner. Here is a sample setup.py I made for a project (example setup.py), it references required packages, command lines, version, twine for PyPI and other info. It works well for extras packages used in test or documentation.

I agree @Deathn0t . The choice of setup.py vs setup.cfg is orthogonal to this issue.  setup.cfg is indeed a bit nicer, but in the end I would say it doesn't really matter much.
The goal of this is to reduce the number of places where the version needs to be manually updated (currently 3) and if possible automate some of it with respect to the git tag.

One possible solution proposed in https://github.com/icubam/icubam/pull/127

repo: icubam/icubam


text:
Minor Fixes

Using python ping can require elevated permissions, even if ping does not. using requests solves that problem. also changing to makes it easier to test without installing using pip.

I changed it to relative imports because when imported from a folder it giving a import error. do you want to remove that from the pull request

I'm agree about the internet fix, it works well on mac

Changes the internet check from pythonping to socket
If you can check it on Mac and let me know it would be great

authors: Fakesum SwatX18 idandaniel

repo: idandaniel/ballyregan


text:
ssdb-server process does not returns memory.

Hi, I'm testing ssdb-server with Jedis framework.
Its functionality and performance is great !!!
perfect Redis replacement, I love it.
but One problem blocks me from applying to operation.
=> "Physical & virtual memory is only allocated and not released."
The "Demo" application provided has the same problem.
calling ssdb.del() does not free memory.
and setting value to the same key increases memory usage.
I use Mint linux (almost same as ubuntu) as test platfom.
and didn't changed any option, and I just build and install and run as manual.
How's the other guys ???
Did I done something wrong or didn't done something essential???
Thanks in advance.

Hi,
First, SSDB does not claim to alloc or free memory every time you operate on it. SSDB will alloc and free memory on its own dicision.
Second, here's the doc desribes some on memory management - http://ssdb.io/docs/config.html . Normally, with the default config file, ssdb-server will use up to 2GB memory, and maybe more when the server is on heavy load, less memory usage maybe applied.

@ideawu Docs between different languages show different algorithm, please check:

http://ssdb.io/docs/zh_cn/config.html says cache_size + write_buffer_size * 66 + 32
http://ssdb.io/docs/config.html says cache_size * 2 + write_buffer_size * 66 + 32

Which one is correct?

cache_size + write_buffer_size * 66 + 32
is correct, the doc is updated.

@ideawu Doc http://ssdb.io/docs/config.html not update yet.

@ideawu Doc http://ssdb.io/docs/config.html not update yet. Please check:

clean you browser's cache.

Checked. Thanks.

所以，默认设置算出来，10 * 64MB * 66 = 40 GB?

authors: CaledoniaProject ideawu ignung muyinliu

repo: ideawu/ssdb


text:
关于复现问题

我在复现这个代码，但是在执行python setup.py build develop之后，出现问题error: command '/usr/local/cuda/bin/nvcc' failed with exit status 1

这个是我针对自己项目hack实现的一个code base，如果有问题建议练习原作者

nvcc应该是cuda的问题，建议检查nvidia驱动和cuda是否安装正确


text:
Not sure why this happens when i run it

root@Kali:~/whatsapp-analyzer# python analyzer.py vibes_chat.txt
Traceback (most recent call last):
File "analyzer.py", line 334, in
members = sorted(chat.process(), key=lambda m: sum(m.days))
File "analyzer.py", line 96, in process
self._rmnl()
File "analyzer.py", line 90, in _rmnl
prev = prev[:-1] + ' ' + msg
TypeError: 'NoneType' object has no attribute 'getitem'
root@Kali:~/whatsapp-analyzer#

root@Kali:~/whatsapp-analyzer# python analyzer.py vibes_chat.txt
Traceback (most recent call last):
File "analyzer.py", line 334, in
members = sorted(chat.process(), key=lambda m: sum(m.days))
File "analyzer.py", line 96, in process
self._rmnl()
File "analyzer.py", line 90, in _rmnl
prev = prev[:-1] + ' ' + msg
TypeError: 'NoneType' object has no attribute 'getitem'
root@Kali:~/whatsapp-analyzer#

The error happens while formatting the chat file. I reproduced it by adding a blank line at the start of the file, it should work now.

repo: idleice/whatsapp-analyzer