Discussion
Loading...

#Tag

  • About
  • Code of conduct
  • Privacy
  • Users
  • Instances
  • About Bonfire
django
@django@social.coop  ·  activity timestamp 7 hours ago

What’s up with Vivaldi keyboard shortcuts?

CMD+Alt+ (left | right) Arrow keys does not navigate the tabs from left to right or right to left, but jumps around seemingly by Tab age…

#vivaldi

Pierre \ Ra-Mon :vivaldi_blue:
@ramon@social.vivaldi.net replied  ·  activity timestamp 7 hours ago

@django You can customize these #keyboard #shortcuts ⌨️ for #tab #switching (either by their order in the tab bar or by history usage) in the #Vivaldi vivaldi_red Settings > Keyboard > "Tabs" section.

  • Copy link
  • Flag this comment
  • Block
Hacker News
@h4ckernews@mastodon.social  ·  activity timestamp 4 days ago

Switching from GPG to Age

https://luke.hsiao.dev/blog/gpg-to-age/

#HackerNews #Switching #from #GPG #to #Age #cryptography #security #encryption #migration

  • Copy link
  • Flag this post
  • Block
Felix Palmen :freebsd: :c64:
@zirias@mastodon.bsd.cafe  ·  activity timestamp 5 months ago

Solved! 🥳

This was a pretty "interesting" bug. Remember when I invented a way to implement #async / #await in #C, for jobs running on a threadpool. Back then I said it only works when completion of the task resumes execution on the same pool thread.

Trying to improve overall performance, I found the complex logic to identify the thread job to put on a pool thread a real deal-breaker. Just having one single MPMC queue with a single semaphore for all pool threads to wait on is a lot more efficient. But then, a job continued after an awaited task will resume on a "random" thread.

It theoretically works by making sure to restore the CORRECT context (the original one of the pool thread) every time after executing a job, whether partially (up to the next await) or completely.

Only it didn't, at least here on #FreeBSD, and I finally understood the reason for this was that I was using #TLS (thread-local storage) to find the context to restore.

Well, most architectures store a pointer to the current thread metadata in a register. #POSIX user #context #switching saves and restores registers. I found a source claiming that the #Linux ( #glibc) implementation explicitly does NOT include the register holding a thread pointer. Obviously, #FreeBSD's implementation DOES include it. POSIX doesn't have to say anything about that.

In short, avoiding TLS accesses when running with a custom context solved the crash. 🤯

  • Copy link
  • Flag this post
  • Block
Log in

bonfire.cafe

A space for Bonfire maintainers and contributors to communicate

bonfire.cafe: About · Code of conduct · Privacy · Users · Instances
Bonfire social · 1.0.0 no JS en
Automatic federation enabled
  • Explore
  • About
  • Members
  • Code of Conduct
Home
Login