Publish pure Python wheels under a separate PyPI name?

I'm a big fan of Alpine/musl Linux so an extra 4 MBs of disk footprint plus all the security implications of a static/vendored runtime (both libgcc and Rust's runtime are in there) are a pretty high cost for Rust's performance boost in a library that wasn't anywhere close to being a bottleneck.
You do already have an opt-out for the Rust stuff but it's not really sufficient – I can't put it in a requirements.txt nor the dependencies section of a pyproject.toml. Would you be willing to create a separate project on PyPI with only the pure Python wheels to make them more accessible?

Hi @bwoodsend, thanks for posting.
I'm certainly up for this if it makes things easier. I'd have to give this some thought to ensure it doesn't have any unforeseen drawbacks.
Regarding requirements.txt, you can do:
some-other-dependency==0.4
whenever==0.6.3
--no-binary whenever

and with poetry:
poetry config --local installer.no-binary whenever

(don't forget to set WHENEVER_NO_BUILD_RUST_EXT=1 of course)
I understand it's less clean than an pip install whenever-py, but note that having multiple packages on pypi also comes with downsides (i.e. it takes the rust/pure-python choice away from downstream clients, and what happens if both are installed?)

It occurs to me that if someone did end up with both in their dependency tree somehow, they would probably expect to be able to pass one instance of whenever.Instant() to some function from whenever_py. That makes me rather less keen on this change...

Agree with your last comment. After installation, there should only one module named whenever, and it either uses rust or pure Python.
Here are some alternative approaches I can think of, but most have a downside:

(current approach) provide a way to disable building extension from source distribution. Downside: a bit complicated to configure (--no-binary with WHENEVER_NO_BUILD_EXT)
a whenever-py package that installs itself as whenever. Downside: upstream dependencies will have to make this decision, potentially silently override downstream dependencies.
a dummy whenever-py package that if installed, tells whenever to import the pure-python code, not the rust extension. Downside: the large binary is still installed, taking up space. Also, more exotic platforms will not be supported.
Making the rust extension opt-in. pip install whenever would install pure-python, pip install whenever[rust] would install the speedups. Downside: most users wouldn't realize they need to add rust, and it may erroneously encourage upstream dependencies to depend on it.

Regarding your particular case: does adding --no-binary whenever to requirements.txt not work for you? Or is it the fact that it feels a bit clunky compared to a separate package?

The requirements.txt was more just an example. I pretty much exclusively create setuptools projects then add whenever to its dependencies.

Ah I see how the current way of choosing rust/python doesn't fall neatly in your setup.
I'm curious though: how would you configure something like --index-url if you'd need to?
I draw this comparison because this is also something only the downstream user (i.e. the one who pip/poetry/etc. installs) can decide.
It seems the consensus in Python packaging is that this type of decision (no-binary or index-url) cannot be made by a package, and these would typically be configured in a dockerfile or deployment script

I'm curious though: how would you configure something like --index-url if you'd need to?

I've so far never needed to. I'd probably tell people to put it in the pip.conf although that's hardly any less work.

It seems there's no easier way to provide the pure-Python version that doesn't have other drawbacks.
@bwoodsend one more thing: the _pywhenever.py module is vendorable, if that helps (but this of course comes with other downsides).
I'll add an entry in the FAQ about this topic

How about:

pip install whenever_py installs whenvever/*.py
pip install whenever installs whenever/{rust stuff} (maybe move into a private _whenever_rust package if it's easier) and declares a dependency on whenever_py=={same version}

Then:

People still get the rust stuff by default
If a package chooses to use whenever_py, the end consumer can override by installing whenever
If a package chooses to use whenever, the old environment variable/--no-binary approach will still work

If that makes your head hurt then feel free to close this as unactionable. I don't want to make things worse.

Interesting suggestion 👀 . If it indeed gives the advantages you mention I'd definitely consider it.
The question is though: is it possible for two packages (i.e. whenever and whenever-py) to be installed to the same directory (i.e. whenever). My intuition says no, but I'd have to give it a try...

Just did a quick-n-dirty test: any modules with the same package name will result in uninstallation of the previous package. This makes sense to me: you could get weird package 'merges' otherwise 🤔 .
However, an alternative could work:

a PyPI package named whenever installs itself as _whenever_rust. It depends on whenever-py PyPI package.
a PyPI package named whenever-py installs itself as whenever. Its __init__.py checks whether _whenever_rust is installed and uses it if available. Otherwise, it just uses the Python version.

This solution would maybe solve everything—if there isn't anything I'm missing 🤔.
Things to already think about:

Will it be prohibitively unintuitive for other libraries to depend on whenever-py instead of whenever?
Will it be too confusing that there two ways to use the pure-Python version? i.e. pip install whenever-py and WHENEVER_NO_BUILD_RUST_EXT=1 pip install whenever --no-binary whenever?

One disadvantage I can think of this solution: while typical users doing pip install whenever will get the expected result (the rust version of the library), users installing a package that depends on whenever-py will have to explicitly opt-in to the rust version (by declaring whenever in their own requirements.txt or similar)
I can think of a few responses to this:

Don't recommend libraries to depend on whenever-py. People using a library that uses whenever should use the --no-binary option to disable the rust version. People can still directly depend on whenever-py without problems.
Educate users about the fact that they may need to explicitly depend on whenever to get the speed boost (this is a hard sell)
Instruct library designers that they should have a rust-speedups extra, i.e. foo only installs whenever-py and foo[rust-speedups] would install whenever, not only whenever-py. Also a hard sell.

Option 1 is probably the most realistic, at the cost of having two different ways to do the same thing. Not sure if it'd be worth it 🤔

I suppose you'd need to instruct library developers to educate their users about whenever speedups (perhaps using 'extras'), if they opt for depending on whenever-py. Perhaps they can use "extras" like foo[rust-speedups]

I do maintain that this should be a minority. You really don't have to do much outside of whenever before the performance benefit of Rust is overshadowed by something else. Libraries should usually know if they fall into the you won't notice it camp.
>>> whenever._EXTENSION_LOADED
False
>>> now = whenever.Instant.now()
>>> timeit.timeit(lambda: now.format_rfc3339(), number=1_000_000)
1.6375649879919365
# Some unrealistically minimal REST API style collateral code already costing more than the format_rfc3339()
>>> timeit.timeit(lambda: json.dumps({"time": now.format_rfc3339()}), number=1_000_000)
3.4939360100543126

I find the meaning of the word confusing varies depending on who your package attracts but I think this is odd but fairly explainable:
Running pip install whenever will install the pure Python implementation (whenever-py) plus some speedups written in Rust. If you do not want or need the speedups, you can run pip install whenever-py instead. For packages that depend on whenever, prefer adding whenever-py to your dependencies instead of whenever but advise your downstream users that they may get a speedup by additionally installing whenever.
The part I'm struggling with is to make the distinction between whenever the project and whenever the Python package. I'm hoping that the prefer adding whenever-py to your dependencies would remove the need to mention the WHENEVER_NO_BUILD_RUST_EXT switch.

@bwoodsend Out of curiosity - can you show what the output of timeit for the above example would be for the rust version on your machine?

Personally I don't understand why I should opt for something that is slower? If I read this as a library developer I'll always go with whenever. Why should I put additional burdens on the library users and make them additionally install something. Nobody has ever complained that something too fast. :wink:
And even if I decided to opt for the python version then I would have to provide additional packages like my-lib[speedups] because every thing else is too hard. Why would I make myself more work.
As far as I understand from the first post the issue is a 4MB size increase which is nothing.
If I can trade 4MB of space for 0.01% CPU time I will always do it.
I currently fail to see the benefit for the added complexity.

Out of curiosity - can you show what the output of timeit for the above example would be for the rust version on your machine?

Do bear in mind that the example is completely fabricated though...
>>> timeit.timeit(lambda: json.dumps({"time": now.format_rfc3339()}), number=1_000_000)
3.4939360100543126
>>> timeit.timeit(lambda: now.format_rfc3339(), number=1_000_000)
1.6375649879919365

As far as I understand from the first post the issue is a 4MB size increase which is nothing.
If I can trade 4MB of space for 0.01% CPU time I will always do it.

Well if that was the universal mindset then we wouldn't be having this discussion.

I do a lot of packaging over ~300KB/s network rates so 4MB stings. I do not care about a performance boost that I cannot see.
Lambda web services bill you almost exclusively based on space. For example, if I buy 1GB I can either have 1000 / 20 = 50 runners or 1000 / (20 + 4) = 41 runners so unless rust gives me an overall boost of > (50 - 41) / 50 = 18% (which it won't because handling HTTP requests costs way more than converting datetimes), then rust will actually slow the overall service down.
And there's still the security aspect. Rust is statically linked meaning that CVEs (of which it produces a fair number) are sticky. For me to feel comfortable about having rust anywhere secure, someone would have to track that list in realtime for vulnerabilities, filter for those that end up in the rust binaries and again for those which are actually relevant, then bump the Rust toolchains and rerelease whenever one does come through and publish advisories telling everyone to upgrade whenever. I don't want to put that burden on myself or Arie so I'd rather make the secure by default route as practical as possible.

Happy to see a vibrant discussion here. While there's much to be said on whether to prefer the Rust or Python version, it's clear that we should keep giving the users a choice. The question is whether the method of choosing between them can be improved.
I'm leaning towards keeping the current behavior, since:

choosing between Rust and Python is something that should be up to the downstream user (i.e. somebody deploying an app, or running a script) and not upstream libraries.
People choosing the pure-Python version will probably have reasons for this decision, and are generally more familiar with customizing their installation (using --no-binary) than the average user.

In some utopic world, all Rust/C-extensions to Python would be optional and the packaging ecosystem would support it natively, like pip install everything.txt --prefer-pure-python and pip install everything.txt --prefer-binary or something.

I'm leaning towards keeping the current behavior

Fair enough. Let's call it a day then. Thanks for considering it anyway.

Well: for now I'm not changing it, but I have a feeling may reconsider this in the future 🤔 and get more feedback from users.


Wrong default path for Windows

from dwave.cloud.config import get_default_configfile_path
print(get_default_configfile_path())
C:\Users\jpasvolsky\AppData\Local\dwavesystem\dwave\dwave.conf

(There is an extra "\dwavesystem" between Local and dwave.)
According to dwave.cloud.config.load_config_from_file(filename=None):
On Windows, config file should be located in: C:\Users<username>\AppData\Local\dwave\client\dwave.conf

Thanks! Docs weren't up to date.


Vector iteration improvements

Changes:

pairs/values on InitiatorDVec are now special iterators, which fixes some subtle problems.
MPIData now has definitions of pairs, keys, and values. These can be used to iterate over the local part of the vector and provide mapreduce, which performs the reduction across ranks.

Pull Request Test Coverage Report for Build 891507191

56 of 72 (77.78%)  changed or added relevant lines in 3 files are covered.
2 unchanged lines in 1 file lost coverage.
Overall coverage increased (+0.3%) to 80.289%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

src/RMPI/mpidata.jl
24
40
60.0%

Files with Coverage Reduction
New Missed Lines
%

src/DictVectors/initiators.jl
2
74.0%

Totals

Change from base Build 884457988:
0.3%

Covered Lines:
2281

Relevant Lines:
2841

💛  - Coveralls


Add constructor based installer

Depends on #246
Fixes #245
Test with:
curl -L -O https://github.com/proppy/conda-eda/releases/download/v0.0-1358-g4ea08b3/openlane-sky130a-0-Linux-x86_64.sh
bash openlane-sky130a-0-Linux-x86_64.sh -b -p silicon-env/
source silicon-env/bin/activate
flow.tcl -design inverter

/cc @QuantamHD @umarcor @mithro

@PiotrZierhoffer  / @umarcor - Could you please review? I think it looks fine and thus we should merge but are unsure about the failures?

@proppy - Any idea why things are failing in the CI?

seems unrelated, nightly CI has similar failure: https://github.com/hdl/conda-eda/actions/runs/3253556045

but we can get https://github.com/hdl/conda-eda/pull/246 reviewed indepently if it eases the process.

I tested using the installer and unfortunately stumbled upon such an error:

Can you share the full log? I also have a more recent version of the installer here https://github.com/proppy/conda-eda/releases/tag/v0.0-1418-g170b751

What bothers me a little is that we'll have a tag added for each run of the Construct workflow, i.e., with each Upload workflow run from master. Do I get it right? Isn't there any other option to publish the installer?

I couldn't think of something else if we want to publish the installer as a GitHub release, another possibility it to move them on GCS in timestamped directory, that's something I think would also make sense for packages (see https://github.com/hdl/conda-eda/issues/204).

Log: openlane.log

@PiotrZierhoffer, @umarcor would it make sense to setup a dedicated bucket for those so that we can get rid of the noise that automated tagging would add to the repo (as @ajelinski pointed in https://github.com/hdl/conda-eda/pull/247#pullrequestreview-1145791901)


Fix #2461: let the parent container scroll also on touchmove event

A follow-up commit to 924af44b7ac7c3087d24427cc5904707da5cdf85 @kenwarner

OK, looks useful.  I won't merge at this time because I know @swalters is doing a lot of change and I don't want to break his merge.  But we'll look after that.

Any update on this?
@kenwarner @PaulL1

I believe this code is already included - I saw it when I was working through the scrolling changes.  Are you able to look at the current code base and check that it would merge correctly?

Seems like it's not included. I will rebase tomorrow and update this PR.

@kenwarner @PaulL1 rebased.

It looks to be there in master at present - a slight variation on the code but very similar:
              // todo: this isn't working when scrolling down.  it works fine for up.  tested on Chrome
              // Let the parent container scroll if the grid is already at the top/bottom
                if ((scrollEvent.y && scrollEvent.y.percentage !== 0 && scrollEvent.y.percentage !== 1 && containerCtrl.viewport[0].scrollTop !== 0 ) ||
                    (scrollEvent.x && scrollEvent.x.percentage !== 0 && scrollEvent.x.percentage !== 1)) {
                  evt.preventDefault();
              }

              scrollEvent.fireThrottledScrollingEvent();

As such, closing.

@PaulL1, the code that you mentioned is for mousewheel scroll event (https://github.com/angular-ui/ng-grid/blob/master/src/js/core/directives/ui-grid-render-container.js#L123) and fixes the #2461 issue for desktop:
 // Scroll the render container viewport when the mousewheel is used
            $elm.bind('wheel mousewheel DomMouseScroll MozMousePixelScroll', function(evt) {

However, this patch fixes the touchmove event instead (https://github.com/angular-ui/ng-grid/blob/master/src/js/core/directives/ui-grid-render-container.js#L173) and thus fixes the same #2461 issue, but on touchpads (mobile/tablet).
Can you please re-open?

Ah, OK then.  I'll merge.

Thanks!


Use as duration picker

I'm struggling to find a duration picker, so I was wondering  if this could be used as a durationpicker ?

Hmm... the closest sample might be the v-for demo here. Not sure if it's what you are looking for, though.


testSaveSerializedObject test is failing with PostgreSQL and HHVM 3.15.2

Extracted from #12936 and #12971.
For example see this build job.
PostgreSQL version: 9.3.15
HHVM version: 3.15.2
yii\tests\unit\framework\db\pgsql\CommandTest::testSaveSerializedObject

Failed asserting that 0 matches expected 1.

/home/travis/build/yiisoft/yii2/tests/framework/db/pgsql/CommandTest.php:86

/home/travis/build/yiisoft/yii2/vendor/phpunit/phpunit/phpunit:47

Related code:
$db = $this->getConnection();

$command = $db->createCommand()->insert('type', [
    'int_col' => 1,
    'char_col' => 'serialize',
    'float_col' => 5.6,
    'bool_col' => true,
    'blob_col' => serialize($db),
]);
$this->assertEquals(1, $command->execute()); // Test fails here

Thank you for the report. Do you have any suggestions?

Thank you for the report. Do you have any suggestions?

Not yet. Unfortunately I have not much experience with HHVM, but will try to see what can cause this error.

Likely need to look at your pgsql driver methods for createCommand(), insert(), and execute()
note: createCommand() is common to both failing tests.

See my comments at https://github.com/yiisoft/yii2/pull/12971#issuecomment-260211160 and https://github.com/yiisoft/yii2/pull/12971#issuecomment-260211253

HHVM support is dropped. #14178


Whats this encoding exactly ?

I know this makes the text bold, but whats this encoding exactly ? Just curious :)
https://github.com/tj/node-prune/blob/03dd2717c9a27cc08fe86a5b0bae8654f403b464/cmd/node-prune/main.go#L54

ANSI Escape Codes


Change switches to new custom one

This is just some tidying. Now that we have a custom switch that allows custom color and loading state, I switched out our other two switches to the new one. To be honest they don't really need loading state but at least it's consistent. I also made the custom switch more flexible for reuse.
TO TEST:

Go to events page, make two events, one canceled and one not. Make sure the switch still filters.
Open incognito window (or log out), go to login page. Add a console log in the LoginForm handleSubmit function. Make sure the value is changing when clicking the switch and hitting submit.
Make sure notification settings switches still work.

Web frontend checklist

[ x ] Formatted my code with yarn format
[ ] There are no warnings from yarn lint --fix
[ x ] There are no console warnings when running the app
[ N/A ] Added any new components to storybook
[ N/ A] Added tests where relevant
[ ] All tests pass
[ x ] Clicked around my changes running locally and it works
[ ] Checked Desktop, Mobile and Tablet screen sizes

that's so cool :D

I think you can also just call it Switch: I think we have that in some other places, e.g. with <Alert/>


aws: use common makefile for generating the AMI image

Fixes: #399
Signed-off-by: Pradipta Banerjee<EMAIL_ADDRESS>

Hi, i just noticed when i use the podvm image created by the common makefile for aws running a pod hits an error:
2022/12/04 10:10:45 [adaptor/proxy] CreateContainer: successfully pulled image "registry.fedoraproject.org/fedora:latest"
2022/12/04 10:10:45 [adaptor/proxy] CreateContainer fails: rpc error: code = Internal desc = No such file or directory (os error 2)

Warning  Failed          65s   kubelet            Error: failed to create containerd task: failed to create shim task: No such file or directory (os error 2): unknown

Additionally I'd update the README.md to use the new image makefile target
(I also noticed i didn't modify the common foldor to copy the auth file but I'll do it in separate)

Hi, i just noticed when i use the podvm image created by the common makefile for aws running a pod hits an error:
2022/12/04 10:10:45 [adaptor/proxy] CreateContainer: successfully pulled image "registry.fedoraproject.org/fedora:latest"
2022/12/04 10:10:45 [adaptor/proxy] CreateContainer fails: rpc error: code = Internal desc = No such file or directory (os error 2)

Warning  Failed          65s   kubelet            Error: failed to create containerd task: failed to create shim task: No such file or directory (os error 2): unknown

Additionally I'd update the README.md to use the new image makefile target (I also noticed i didn't modify the common foldor to copy the auth file but I'll do it in separate)

Good catch @snir911 . I'll update the README for now.

@snir911 did you VM creation succeed in AWS or still having the issue ?

@bpradipt issue still exist, i have two ami images, one created on this branch and one on upstream, the one created from this branch keeps failing with the same error

@bpradipt probably the issue is because we're the missing the ExecStartPre=-umount /sys/fs/cgroup/misc workaround needed for the aws kernel

@bpradipt probably the issue is because we're missing the ExecStartPre=-umount /sys/fs/cgroup/misc workaround needed for the aws kernel

Yes.. this entry is missing in the common files. This is safe to be added in the common files


XIVY-15045 Fix typo for Checkbox in TypeBrowser

I think it's fine to just merge such a small change without adding me as a reviewer ^^


redirect on backend page access doesn't include a message

we need to let the user know that the page they tried to reach requires login
like login fail

completed with PR #164


Incorrect velocity when physics tick rate is lower than rendering framerate

Godot version
v4.3.stable.official [77dcf97d8]
Issue description
A WiggleBone attached to a PhysicsBody3D or to a node that's moved with _physics_process() will move incorrectly if the physics tick rate is lower or not synced with the framerate. In this case, the WiggleBone will follow the velocity instead of reacting to acceleration (see #10)
This can be somewhat fixed by separating _process() and _physics_process() in wiggle_bone.gd, and providing a new parameter to process the WiggleBone in _physics_process() instead. However, this makes the effect slower/faster depending on the physics tick rate (see video)
https://github.com/user-attachments/assets/83def426-6d9f-4f76-8c9a-9e81220437fa
Repro project:
WiggleBone_MRP.zip
Steps to reproduce

Start a new Godot project
Import WiggleBone
Attach a WiggleBone to a CharacterBody3D with a minimal movement script
In the project settings, set "Physics ticks per second" to 30 (Physics > Common (advanced settings))
OR
In a script, set Engine.physics_ticks_per_second to 30
Notice the issue

Since this is due to a desync between the physics and rendering, it can also be fixed by attaching a physics interpolation script like 8bit's godot recipe to the skeleton or a parent in the hierarchy before the PhysicsBody

The latest release is a complete rewrite (see release notes) and adds new nodes which should not have any frame rate issues. I could not find a stable implementation for the previous behaviour which used the acceleration for movement. It now uses the velocity.


Namespacing issues

In my scenario I have the same models one in sql and one in dynamodb
but when I create
models/entity/my_model.rb
with
Entity::MyModel
classname
I get errors as I am guessing its trying to use the :: in the class name, rather than converting it to an underscore like regular models.
Could we get a fix for this?
thanks,
Simon

As a quick fix while this is being resolved you can override this function to set the table name manually
def self.get_table_name
"table_name"
end

Released in v1.2.4


Update aws-core, http-client-spi, ... to 2.16.15

Updates

software.amazon.awssdk:aws-core
software.amazon.awssdk:http-client-spi
software.amazon.awssdk:netty-nio-client

from 2.16.14 to 2.16.15.
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Ignore future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "software.amazon.awssdk" } ]

labels: library-update, semver-patch

Superseded by #271.


Code to find dual equations

Fixes #72.
It might be nice to be able to also produce a proof of the duality of each of these equations in Lean. Right now you have to trust in my (and Claude's) coding ability. I believe it to be correct but that's not saying much.

Once we have #36 we should be able to formalize duality in Lean, but for now a numerically generated list should be fine.  We can at least numerically test whether various numerically generated sets of implications are duality-invariant, which presumably they should be if they were generated by a duality-invariant scheme.


Autobroadcast - repeating broadcast msgs - no order

While the broadcaster is working, it appears to be using a randomizer for each of the messages, but it also means they are repeating too soon as shown in my chat window.

What would be helpful is to add another parameter that states the sort order number (e.g. sortOrder: 1, 2, 3 etc or 0 for random sort)
The sortOrder would provide exact sorting for broadcasting for each server.  I could have welcome, jobsstats, voting as 1,2,3 and 4-7 for the others.
Another option would be to add a parameter one level up.
messages:
sortBy: (fileorder, alphanumericASC, alphanumericDESC, random) - with random as default
Thanks! -Steve

@Haileykins - just checking in to see if you'll be able to update this plugin for 1.13.1?

This plugin will work 100% with 1.13.x as it does not use any code that has changed in 1.13.x, I have added the enhancement tag as something to do and will definitely consider this as an addition on the next update (I'm currently working for a server and just got a new truck, so I have been a bit busy).
Sorry for this reply coming so late, GitHub has not been notifying me of new issues etc.
In the meantime to prevent the messages from spamming your chat like that, there is an option that is a chat interval feature that won't broadcast a message until enough messages are sent to reset the counter and let it broadcast again. For example, if you set the chat message interval to 10 it will wait until ten messages have been sent in chat before it will broadcast again. Its set to 0 by default.

Thanks Haileykins, I had a feeling that it was a notification issue so I always follow up just in case. :-)
If I change the Chat-Interval: 1 or higher then I see no broadcast messages.  Even with an /abc reload or /abc reboot
I tested the /abc cast myMessage and that works fine.  Is it possible that the                         player.spigot().sendMessage(msg); code is not working for PaperSpigot and only working for Spigot when the interval is changed?

Hi - yes I do.  Feel free to connect to me here: https://discord.gg/NGWzDP


Allow meta tags as templateOptions

Hi in my case I want to get rid of the annoying blue colored links set on Apple devices. In order to achieve that I would have to add the following meta tag to my email template:
< meta name="format-detection" content="email=no" >
So in general it would be nice if we could add meta tags just as we could add title.

Hi, thanks for the suggestion. I'm open to adding meta tags to the default template generator if they're general enough. I'd also like to minimize the number of configuration options in renderTemplate, for security and UX reasons. In this instance, the meta tag is too specific to add for everyone.
I'd suggest using generateCustomTemplate, which is the third (optional) parameter to renderTemplate. This allows you to provide a custom template, with your own meta tags and configuration. You can see how it's used here: https://github.com/revivek/oy/blob/ca50d8c31055a283fcd4442712ae38b736aad4b0/src/utils/Renderer.js There's an outstanding task to add documentation for this feature.

Hi @revivek,
I created a PR (https://github.com/revivek/oy/pull/68) to add some more details about how to implement custom templates. I was really struggling to figure out how to use the feature. So I wrote down some notes that would have been helpful to myself.
I really appreciate you creating and maintaining this project. I was feeling daunted by the task of generating a bunch of branded HTML emails, but overall Oy has made it much more pleasant!


[QUESTION] how to improve hashlib speed with async

How can I improve my hashlib performance using async await if I need to iterate and process 100,000 CSV files and hashlib for each one
Would i expect much improved performance against standard method, especially if these csv files are remotely in shared network drives?
Win 10/Linux environments

Thanks @dmontagu ! :bowing_man:
Yeah, what @dmontagu said. If it's taking a long time, you might want to do it in a background task. Possibly in an external system like ARQ or Celery.


Expected BugsnagFeatureFlag but found BugsnagFeatureFlag

I don't know enough about Swift to know why this crash is happening, but I get this after an unrelated crash on iOS 18 with library version 1.0.0-BETA-4.
Project source is here: https://github.com/zacharee/ArcadyanKVD21Control/.
Steps to reproduce:

Run the project.
Enable the "Advanced" toggle on the login screen.
Enter google_play_test_user and google_play_test_pass for the credentials and log in.
Go to the Settings tab.
Enable Auto Refresh and tap the pencil/edit button.
Close the dialog and scroll down.
The app will crash because of an unrelated Compose issue.
Trying to open the app again will cause the below error to be raised.

EXC_BREAKPOINT: Fatal error: NSArray element failed to match the Swift Array Element type
Expected BugsnagFeatureFlag but found BugsnagFeatureFlag

0  libswiftCore.dylib +0x109c4       _ArrayBuffer._getElementSlowPath(_:)
1  libswiftCore.dylib +0x15f8c       Array.subscript.read
2  libswiftCore.dylib +0x15e94       protocol witness for Collection.subscript.read in conformance [A]
3  libswiftCore.dylib +0x61880       protocol witness for IteratorProtocol.next() in conformance IndexingIterator<A>
4  libswiftCore.dylib +0x16f5e4      Sequence.contains(where:)
5  HINT Control.debug.dylib +0x7c9c  closure #1 in static NSExceptionKtReporter<>.bugsnag(_:) (BugsnagNSExceptionKtReporter.swift:18:30)
6  HINT Control.debug.dylib +0x7e40  thunk for @escaping @callee_guaranteed (@guaranteed BugsnagEvent) -> (@unowned Bool) (<compiler-generated>)
7  HINT Control.debug.dylib +0x24b1c -[BSGEventUploadOperation runWithDelegate:completionHandler:] (BSGEventUploadOperation.m:87:18)
8  HINT Control.debug.dylib +0x25dc8 -[BSGEventUploadOperation start] (BSGEventUploadOperation.m:220:9)
9  Foundation +0x723d88              __NSOPERATIONQUEUE_IS_STARTING_AN_OPERATION__
10 Foundation +0x723a90              __NSOQSchedule_f
11 libdispatch.dylib +0x135e8        _dispatch_block_async_invoke2
12 libdispatch.dylib +0x3e5c         _dispatch_client_callout
13 libdispatch.dylib +0x77fc         _dispatch_continuation_pop
14 libdispatch.dylib +0x69d4         _dispatch_async_redirect_invoke
15 libdispatch.dylib +0x1656c        _dispatch_root_queue_drain
16 libdispatch.dylib +0x16fb4        _dispatch_worker_thread2
17 libsystem_pthread.dylib +0x3b34   _pthread_wqthread

It looks like this came from me having Bugsnag installed as a pod in my Kotlin project and NSExceptionKt's SwiftPM package depending on Bugsnag's SwiftPM package. I had to make some of my own headers to let me access some functions I use in Bugsnag from Kotlin, but I think it's working now.


Map of Futures or Streams

I am interested in a structure similar to FuturesUnordered and SelectAll that allows users to insert, remove, and modify the stored futures and streams by a key at runtime.
Has there been any discussion about a feature like this for futures-rs? If not, I would be happy to write an RFC arguing for inclusion in this library.

FYI: tokio has a similar feature: https://docs.rs/tokio/0.3/tokio/stream/struct.StreamMap.html

FYI: tokio has a similar feature: docs.rs/tokio/0.3/tokio/stream/struct.StreamMap.html

Unfortunately, tokio's StreamMap is not very efficient. It walks through the entire list and polls all streams (this shortcoming is documented). Additionally, the tokio-stream crate unconditionally depends on tokio itself despite StreamMap not requiring tokio at all.
It would be nice to have something that is equally efficient to SelectAll where only the Streams that are ready are polled again.
My usecase is that I have a set of mpsc::Receivers and I'd like to poll them concurrently but I want to know, which item originated from which Receiver. Most notably, I need to know, when a particular Receiver ends.

Closing in favor of #2329.


Add TLS/Auth to backfill-redis

Description

Would y'all be open to a PR that enables the use of TLS and auth via backfill-redis? I've never used golang, but it looks fairly straightforward to implement using the options struct in backfill-redis here.

Yes, feel free to open a PR, thanks!

oops, sorry for muddying the waters. feel free to delete that extra PR. 😅


Console: after Reload Configuration button, the adapter names are not reloaded

After Reload Configuration button:

A renamed adapter is not picked up by the Console.
New entries in Configuration Messages are not refreshed.

If you run a F!F Console, with e.g. an adapter exampleadapter and you change the name in the file, to exampleadapter2 and click the Reload Configuration button, the new adapter name is not displayed and the old name stays in the list. This is causing issues if you click at one.
If the adapters are reloaded, after the finishing of the reload configuration, this is fixed. E.g. as it is fetched at: http://localhost/iaf/api/adapters
The same problem also is valid for the contents/lines inside Configuration Messages. Can you address that as well?
Reporter
J. Koster
To Reproduce
See above.

Configuration
Any example configuration will do.
Environment
Verified with FF! 8.1.0-20240308.042334

https://github.com/frankframework/frankframework/commit/3472b8a32a7c67f769e09ee132fe43d4f6da3677 solved this issue, together with https://github.com/frankframework/frankframework/pull/7108


Game Crashing on Startup Latest Forge 1.201

https://pastebin.com/wjmYnDKB

Hi, please submit a full log rather than just a crash report. This crash is not actually caused by Sniffer+, but the real reason isn't shown in the crash report. Thank you!

I had the same crash, but looking at the Debug.log I found that some other mods crashed, like InventoryProfileNext and JEI(near the end of file)
Updated those and it's working now, really weird that Forge accuse another mod though :/

Yeah, I think it's because those issues are caught by Forge and will display an error after startup rather than outright crashing, but the Registries freeze which end up crashing my mod. So mine crashes immediately before Forge will display their error for the true culprits. I'm gonna close this issue since the OP isn't responding.


WatchESPN: Non-monotonous DTS in output stream 0:1 issues

I've seen similar issues posted here for other sites.  I've tried re-compiling the latest FFMPEG, and still have issues.
I'm trying to download from watchESPN for personal use.  The URL below is currently valid, I'm not sure how long it will last.  I've extracted the appropriate m3u8 url from the page on my own, since youtube-dl doesn't support watchESPN currently.  In any case, there seems to be issues with the server-side inserted advertisements, which screw up the resulting file.

[x] I've verified and I assure that I'm running youtube-dl 2016.11.22

What is the purpose of your issue?

[x] Bug report (encountered problems with youtube-dl)

$ youtube-dl -v 'http://content-ausc2.uplynk.com/55cf54cc10ea4f40a9f9ee10d601e717/z.m3u8?pbs=c9b5a2fe2e3840c0b4f712d7c4422553' -o output.mkv
[debug] System config: []
[debug] User config: []
[debug] Command-line args: [u'-v', u'http://content-ausc2.uplynk.com/55cf54cc10ea4f40a9f9ee10d601e717/z.m3u8?pbs=c9b5a2fe2e3840c0b4f712d7c4422553', u'-o', u'eastern.mkv']
[debug] Encodings: locale UTF-8, fs utf-8, out UTF-8, pref UTF-8
[debug] youtube-dl version 2016.11.22
[debug] Python version 2.7.10 - Darwin-16.1.0-x86_64-i386-64bit
[debug] exe versions: ffmpeg N-82622-g42ae9c6-tessus, ffprobe git-2016-11-24-9955123
[debug] Proxy map: {}
[generic] z: Requesting header
[generic] z: Downloading m3u8 information
[debug] Invoking downloader on u'http://content-ausc2.uplynk.com/55cf54cc10ea4f40a9f9ee10d601e717/z.m3u8?pbs=c9b5a2fe2e3840c0b4f712d7c4422553'
[download] Destination: eastern.mkv
[debug] ffmpeg command line: ffmpeg -y -headers 'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:10.0) Gecko/20150101 Firefox/47.0 (Chrome)
' -i 'http://content-ausc2.uplynk.com/55cf54cc10ea4f40a9f9ee10d601e717/z.m3u8?pbs=c9b5a2fe2e3840c0b4f712d7c4422553' -c copy -f mp4 -bsf:a aac_adtstoasc file:eastern.mkv.part
ffmpeg version N-82622-g42ae9c6-tessus Copyright (c) 2000-2016 the FFmpeg developers
  built with Apple LLVM version 8.0.0 (clang-8<IP_ADDRESS>)
  configuration: --cc=/usr/bin/clang --prefix=/opt/ffmpeg --extra-version=tessus --enable-avisynth --enable-fontconfig --enable-gpl --enable-libass --enable-libbluray --enable-libfreetype --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopus --enable-libschroedinger --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzmq --enable-version3 --disable-ffplay --disable-indev=qtkit --disable-indev=x11grab_xcb
  libavutil      55. 41.101 / 55. 41.101
  libavcodec     57. 66.107 / 57. 66.107
  libavformat    57. 58.100 / 57. 58.100
  libavdevice    57.  2.100 / 57.  2.100
  libavfilter     6. 67.100 /  6. 67.100
  libswscale      4.  3.101 /  4.  3.101
  libswresample   2.  4.100 /  2.  4.100
  libpostproc    54.  2.100 / 54.  2.100
Input #0, hls,applehttp, from 'http://content-ausc2.uplynk.com/55cf54cc10ea4f40a9f9ee10d601e717/z.m3u8?pbs=c9b5a2fe2e3840c0b4f712d7c4422553':
  Duration: 03:07:00.06, start: 0.000000, bitrate: 0 kb/s
  Program 0
    Metadata:
      variant_bitrate : 0
    Stream #0:0: Audio: aac (HE-AACv2) ([15][0][0][0] / 0x000F), 48000 Hz, stereo, fltp
    Metadata:
      variant_bitrate : 0
    Stream #0:1: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p, 1280x720, 29.97 fps, 29.97 tbr, 90k tbn, 60 tbc
    Metadata:
      variant_bitrate : 0
    Stream #0:2: Data: timed_id3 (ID3  / 0x20334449)
    Metadata:
      variant_bitrate : 0
Output #0, mp4, to 'file:eastern.mkv.part':
  Metadata:
    encoder         : Lavf57.58.100
    Stream #0:0: Video: h264 (High) ([33][0][0][0] / 0x0021), yuv420p, 1280x720, q=2-31, 29.97 fps, 29.97 tbr, 90k tbn, 90k tbc
    Metadata:
      variant_bitrate : 0
    Stream #0:1: Audio: aac (HE-AACv2) ([64][0][0][0] / 0x0040), 48000 Hz, stereo, fltp
    Metadata:
      variant_bitrate : 0
Stream mapping:
  Stream #0:1 -> #0:0 (copy)
  Stream #0:0 -> #0:1 (copy)
Press [q] to stop, [?] for help
[mp4 @ 0x7f9690015400] Non-monotonous DTS in output stream 0:1; previous: 720896, current: 0; changing to 720897. This may result in incorrect timestamps in the output file.
[mp4 @ 0x7f9690015400] Non-monotonous DTS in output stream 0:1; previous: 720897, current: 2048; changing to 720898. This may result in incorrect timestamps in the output file.
[mpegts @ 0x7f969080a400] DTS 1216 < 1349848 out of order
[hls,applehttp @ 0x7f968f800600] DTS 1216 < 1349848 out of order
[mp4 @ 0x7f9690015400] Non-monotonous DTS in output stream 0:0; previous: 1349848, current: 1216; changing to 1349849. This may result in incorrect timestamps in the output file.
[mp4 @ 0x7f9690015400] Non-monotonous DTS in output stream 0:1; previous: 720898, current: 4096; changing to 720899. This may result in incorrect timestamps in the output file.
[mp4 @ 0x7f9690015400] Non-monotonous DTS in output stream 0:0; previous: 1349849, current: 4218; changing to 1349850. This may result in incorrect timestamps in the output file.
[mp4 @ 0x7f9690015400] Non-monotonous DTS in output stream 0:0; previous: 1349850, current: 7222; changing to 1349851. This may result in incorrect timestamps in the output file.
[mp4 @ 0x7f9690015400] Non-monotonous DTS in output stream 0:1; previous: 720899, current: 6144; changing to 720900. This may result in incorrect timestamps in the output file.
[mp4 @ 0x7f9690015400] Non-monotonous DTS in output stream 0:0; previous: 1349851, current: 10226; changing to 1349852. This may result in incorrect timestamps in the output file.
[…]

To be sure, I can reproduce this in ffmpeg directly, so it's not an issue with youtube-dl per se.  I'm just looking for the right flags to add to the command to avoid this issue.
ffmpeg -i 'http://content-ausc2.uplynk.com/55cf54cc10ea4f40a9f9ee10d601e717/z.m3u8?pbs=c9b5a2fe2e3840c0b4f712d7c4422553' output.mp4

ffmpeg provides a -loglevel option. Feeding it with error or above can eliminate those warnings.
Such errors indicate that the m3u8 file is not well-formed, and in general it won't affect the result. At the youtube-dl side, you can choose the native HLS downloader:
youtube-dl --hls-prefer-native <the URL>

Closing as it's not a youtube-dl issue. If you find the final file is broken, please go to http://trac.ffmpeg.org/ and report a bug.


i use your hub and only change token,but error? what happend

apphub-linux does not exist

In new version you must enter DOWNLOADLINK, FILENAME, TOKEN not just TOKEN.
Please read the README.md file.


Missing screenshot of Github Blame on the contribution wiki

Hi, i was going through the contribution wiki to setup the project and noticed that one of the screenshot link was broken.
Link - https://github.com/oppia/oppia/wiki/Contributing-code-to-Oppia#notes

Do let me know if can send a PR to add the image

Hi @jaiakash -- yes, feel free to send a PR to this repo (oppia-web-developer-docs) if you like. Thanks!

This seems to be fixed by the developer by changing their system DNS to <IP_ADDRESS> or <IP_ADDRESS>.
See https://github.com/oppia/oppia-web-developer-docs/pull/217#issuecomment-1872270934


Scorm 2004

Hi,
First, thank you very much for this scorm 1.2 run time implementation! It works really well and really simple to include to an existing LMS.
I would like to know if you worked on a version that works with the scorm 2004 version?
By the way, did you make all of the code by your own or have you been inspired by other code? It could help me to build a run time for scorm 2004.
Thank you in advance for your answer,
Greg

Hi Greg, thanks for the feedback!
I have not worked on a version yet for Scorm 2004, but if there was
interest in it - I would be happy to take a look at it.
The code is all mine and just based on the Scorm 1.2 reference guide here:
https://scorm.com/scorm-explained/technical-scorm/run-time/run-time-reference/
~Gabe
On Thu, Jun 1, 2017 at 10:49 AM, gregdeluxee<EMAIL_ADDRESS>wrote:

Hi,
First, thank you very much for this scorm 1.2 run time implementation! It
works really well and really simple to include to an existing LMS.
I would like to know if you worked on a version that works with the scorm
2004 version?
By the way, did you make all of the code by your own or have you been
inspired by other code? It could help me to build a run time for scorm 2004.
Thank you in advance for your answer,
Greg
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/gabrieldoty/simplify-scorm/issues/1, or mute the
thread
https://github.com/notifications/unsubscribe-auth/AHjUCOMuJ-mK-NRE9hJUdHLcfQgErtpkks5r_s97gaJpZM4NtF3m
.

Hi,
Thanks for your fast feedback :D
Did you take a lot of time to built it ?
I thought about maybe adapting your scorm api to fit it for scorm 2004 run time reference... As you have a good experience about it, do you think it would be a good idea ?
Thanks again !
Greg

Feel free to make a fork of it for Scorm 2004 - the engine took me a few
weeks to build and test, I would imagine porting it over to Scorm 2004
would probably be a much easier process
~Gabe
On Thu, Jun 1, 2017 at 10:56 AM, gregdeluxee<EMAIL_ADDRESS>wrote:

Hi,
Thanks for your fast feedback :D
Did you take a lot of time to built it ?
I thought about maybe adapting your scorm api to fit it for scorm 2004 run
time reference... As you have a good experience about it, do you think it
would be a good idea ?
Thanks again !
Greg
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/gabrieldoty/simplify-scorm/issues/1#issuecomment-305519221,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AHjUCAkYHgobnAHg3Au87f-vRiQCTfp6ks5r_tENgaJpZM4NtF3m
.

Thanks for the info.
For the moment I'll keep focus on scorm 1.2 but if I start any development for scorm 2004 I let you know ;)
Greg


[Custom Components]

I have created a custom component as described in below article and it works fine till now.
https://github.com/formio/angular-formio/wiki/Custom-Components-with-Angular-Elements
Now I have the requirement to access all the form data inside this custom component (.ts file of the angular component). Is there any way I can do it?

As the custom components are written in Angular, those can reach services.
Try the following:

Create a new service, and put a Subject there.
Outside of formio (at the parent/wrapper component), handle the submission (change output, add a check if $event.data is exist).
Pass the submission data to the Subject.
Inside of the custom components inject that service and subscribe to the Subject. (Don't forget to unsubscribe on destroy.)

Let me know if it works for you and I add this to the FAQ part of the wiki.

Thanks @merobal, let me try this and I will get back to you.

@merobal
This works good. Thank you for pointing me to right direction.
I am using ngrx-store to save the state but yes using an angular service will do the same thing so should work as well.
using the Change event of formio, I am able to get the most recent data of the form and store it in ngrx store.
<formio [submission]="formData" [form]="schema" (change)="onChange($event)"></formio>
onChange(event) {     if (event.data) {       const data = _.cloneDeep(event.data);       this.store.dispatch(new formIoActions.SetFormsIoDataLocalCopy(data));     }   }
Then store is injected as service to custom component to get the latest data.
this.subs= this.store.select(formIoReducer.formsioDataLocalCopy)       .subscribe(data => {         if (data) {           this.data = data;           console.log('data, this.data);         }       });
Also, I am modifying the schema of some components dynamically using custom logic feature of the form-io library, so I was trying to get the updated schema as well. But there is no good way to get full updated schema object. I am getting the updated schema in Change event but only for the component that is being changed.
Will keep looking into it.


Infobox translation doesn't work

What could be better
When adding the infobox the translation stops working.
example:
Works:

text to be translated

Works:

text to be translated

Does not work:

text to be translated

On what page are you experiencing this problem
All pages with infobox

/fundlike
/node
/buywallet
/multisig

Additional context
Add any other context about the problem here.

Interesting!

Samples of funds are:

Grayscale Bitcoin Trust

VanEck Vectors Bitcoin ETN

There are funds (ETNs) you can buy on regular exchanges, the same type of exchange you can but stocks. Click the i-icon above for more info.

If you use these products, you can never be technically sure the fund really holds your bitcoin.

How does that sound?

Don't like that. I want to self-custody.

Sure! I will buy fund-like products on a regular exchange.

Intro gets translated. infobox-header (the
 in the
) does not. @Martinomagnifico do you maybe know why? :)

Interesting!

Samples of funds are:

Grayscale Bitcoin Trust

VanEck Vectors Bitcoin ETN

There are funds (ETNs) you can buy on regular exchanges, the same type of exchange you can but stocks. Click the i-icon above for more info.

If you use these products, you can never be technically sure the fund really holds your bitcoin.

How does that sound?

Don't like that. I want to self-custody.

Sure! I will buy fund-like products on a regular exchange.

Intro gets translated. infobox-header (the
 in the
) does not. @Martinomagnifico do you maybe know why? :)

I think it is because the infobox class contains display:none;  when I remove display:none it does work

I think it is because the infobox class contains display:none;  when I remove display:none it does work

That is weird right? It only translates visible stuff? :thinking_face:

That is weird right? It only translates visible stuff? :thinking_face:

Nope forget that. It has to do with how we set the infobox content, the translation is done on the initial page load, or when the language changes.
If the selected language is English, the HTML is rendered as English. When we go to the next slide, a javascript function loads the current HTML and puts it into the infobox. If the language changes, the slide HTML changes too, but the infobox HTML doesn't change because it is outside of an
. I think I have a workaround for this!

Nope forget that. It has to do with how we set the infobox content, the translation is done on the initial page load, or when the language changes.
If the selected language is English, the HTML is rendered as English. When we go to the next slide, a javascript function loads the current HTML and puts it into the infobox. If the language changes, the slide HTML changes too, but the infobox HTML doesn't change because it is outside of an
. I think I have a workaround for this!

Oh yeah! We copy the innerhtml to an other div! Nice find, wonder what you come up with to fix.

Oh yeah! We copy the innerhtml to an other div! Nice find, wonder what you come up with to fix.

Nice find and fix

Nice find and fix


Customize {{ name }}  in  sprite.html preview (example) sheet

My setup:

Each SVG file name is prepended with "icon__" (for legacy reasons)
Using grunt-svg-sprite config file
Specifying mode.symbol{} configuration
All renders correctly.

Objective:
In the sprite sheet, using a modified version of the template "sprite.html", I want to remove the prefix "icon__" from the rendered {{name}} variable.
I've created a function in the "variables" object, which will return a string value.
Is it possible to pass the symbol "name" or "id" value to the custom function, modify, and return value?
Example:
// This does not work, but shows idea
...
"variables": {
    "shortenName": function(_name) {
        return _name.replace("icon__", "");
   }
}

{{#shapes}}

                        <svg class="{{#selector.dimensions}}{{#last}}{{#classname}}{{raw}}{{/classname}}{{/last}}{{/selector.dimensions}}">
                            <use xlink:href="#{{name}}"></use>
                        </svg>

{{{shortenName name }}}

{{/shapes}}

I'm new to both svg-sprite and mustache templates.
Is my objective achievable?
Is my syntax in mustache template correct?
Thanks.

Answering my own question:
Solution:
...
        "variables": {
            "shortenName": function () {
                return function (val, render) {
                    let new_val = render(val);
                    return new_val.replace("icon__", "");
                }
            },
        }

{{#shortenName}}{{name}}{{/shortenName}}

My mistake was in trying to pass the value to the top-level function for 'shortenName()', instead of using the 'render' function.


Apply Operator Pattern - IntervalAction Update

This issue addresses the transition of the Scheduler Intervalaction endpoint for PUT to the operator pattern and the addition of the accompanying unit tests.
https://github.com/edgexfoundry/edgex-go/projects/11#card-24596170

@nkstanchev Is this still being worked?

Closed.  Post common-bootstrap, this is no longer needed.


chore(exchange): update readme

a package for building the yoroi deeplinks should be created.
---> transfer/payment-request?link= CIP13 is not enough there is a new proposal to be opened CIP1399
---> exchange/result?status=<success | error>&amount=&provider=<banxa | encryptus>

closing this one for now


Feat: Lack of animation

Describe the feature
Make the website more interactive using Spline models
Result: More viewers
I can resolve this issue
Add ScreenShots

Record

[X] I agree to follow this project's Code of Conduct
[X] I'm a GSSOC'24 contributor
[X] I want to work on this issue

@Its-Aman-Yadav i am a frontend developer and Ui designer, i will surely make this website catchy and interactive , i agree to follow this project's code of conduct and eager to work on it , please assign this project to me under gssoc'24 .


Exposing the BSG_KSCrash type

Goal
Bugsnag collects stack traces automatically when an issue is reported. For some situations however clients might want to supply their own stack traces. Even though the BugsnagEvent exposes a threads variable that can be populated, there's no easy way to create the proper array.
This PR just re-organizes some headers to make the BSG_KSCrash type, making it possible for clients to use something like BSG_KSCrash.sharedInstance().captureThreads(exception, depth: BSGNotifierStackFrameCount, recordAllThreads: true) to create the appropriate stack trace.
Design
No special design was necessary
Changeset
Exposing the BSG_KSCrash type to make it possible to capture the appropriate BugsnagThread array
Testing
Using my branch in my pod file I added a call to BSG_KSCrash.sharedInstance().captureThreads(exception, depth: Int32(BSGNotifierStackFrameCount), recordAllThreads: recordAllThreads) to my project and used the value returned by it in my BugsnagEvent's threads

Hi @gpambrozio thanks for the PR.
Would you mind giving a bit of context around why you want to populate the threads property yourself? It's not a use-case we had in mind, perhaps there is a better way we can address the problem.

@nickdowell In a gist, what we do in our project to log errors and warnings is something like this:
    func log(type: OSLogType, message: @autoclosure @escaping () -> String) {
        DispatchQueue.global(qos: .background).async {
            Bugsnag.notify(NSException(name: NSExceptionName.genericException, reason: message(), userInfo: [:])) { event in
                // set our own thread here
                return true
            }
        }
    }

One of the reasons why we dispatch async is that the closure that creates message can get pretty expensive for us in some cases. But we have more reasons too, the example above is a very simplified version of what we actually have.
Since Bugsnag would capture threads at the point where we call Bugsnag.notify the stack trace we get would be irrelevant to the log itself since it happens in the context of the async call, not where the log is actually called.
So with the change in this PR I can do this:
    func log(type: OSLogType, message: @autoclosure @escaping () -> String) {
        let exception = NSException(name: NSExceptionName.genericException, reason: "", userInfo: [:])
        let threads = BSG_KSCrash.sharedInstance().captureThreads(exception, depth: BSGNotifierStackFrameCount, recordAllThreads: false) ?? []

        DispatchQueue.global(qos: .background).async {
            Bugsnag.notify(NSException(name: NSExceptionName.genericException, reason: message(), userInfo: [:])) { event in
                event.threads = threads
                return true
            }
        }
    }

This captures the threads at the appropriate moment and saves it until the async call happens. It would be better to have captureThreads maybe be a simpler function, maybe a static in Bugsnag, ideally only with a recordAllThreads parameter but this change is the minimal to make it work for me.
Thanks.

Thanks for the additional info @gpambrozio
Within Bugsnag we will discuss the possibility of adding a formal API for this, and update this PR in due course.
It's unlikely we will opt to expose BSG_KSCrash as it's an internal implementation detail and not something we would like to maintain as part of our public API.

@nickdowell any updates or ideas on how we can solve this? We had to update our fork to use the latest version of the library and now we're having issues with some cases not capturing the stack trace.

Hi @gpambrozio sorry for going so long without a response.
There is way to solve your original problem (setting the message asynchronously) without needing to use any of our internal APIs or capture thread states yourself.
BugsnagEvent has an orignalError property that normally contains the NSError or NSException object passed to notify(), but since it's of type id / Any? it can be used to attach arbitrary objects (including closures!) to then use in an OnSendError callback.
You can then call notify()  synchronously (without computing the message up front) and the correct stack traces will be captured.
For example:
configuration.addOnSendError { event in
    if let message = event.originalError as? () -> String {
        event.errors.first?.errorMessage = message()
    }
    return true
}

func log(type: OSLogType, message: @autoclosure @escaping () -> String) {
    Bugsnag.notify(NSException(name: NSExceptionName.genericException, reason: "")) { event in
        event.originalError = message
        return true
    }
}

Hope this helps!

@nickdowell I got an email with a suggestion but I see you removed it. Any reason? Would your suggestion still work? I was gonna share that with a co-worker that might work on the issue. Thanks.

@gpambrozio sorry about that, I removed it once I realised the suggested approach won't work for events where delivery needs to be retried. This is because we store the original state of the event (before OnSend) when persisting to disk and cannot persist originalError since it can be of any type.

@nickdowell would you then reconsider what we're suggesting or maybe suggest a different approach. At the moment we have to maintain our own fork because of this limitation.

Hi @gpambrozio a simpler alternative to maintaining a branch of our repo would be to expose our internal threads API in an Objective-C bridging header:
// AwesomeApp-Bridging-Header.h

#import <Bugsnag/Bugsnag.h>

NS_ASSUME_NONNULL_BEGIN

@interface BugsnagThread ()

+ (NSArray<BugsnagThread *> *)allThreads:(BOOL)allThreads
                callStackReturnAddresses:(NSArray<NSNumber *> *)callStackReturnAddresses;

@end

NS_ASSUME_NONNULL_END

Allowing your Swift code to capture the threads before calling notify() (as you're already doing):
let threads = BugsnagThread.allThreads(true, callStackReturnAddresses: Thread.callStackReturnAddresses)

// ...

DispatchQueue.global(qos: .background).async {
    Bugsnag.notify(NSException(name: NSExceptionName.genericException, reason: message(), userInfo: [:])) { event in
        event.threads = threads
        return true
    }
}

This does of course run the risk of breaking your build if we remove that API in a future release.


Add @FileExists validation to configuration classes

Failed due to flaky test: 2020-05-11 14:57:47 INFO: FAILURE     /    io.prestosql.tests.hive.TestHiveTransactionalTable.testReadFullAcid (Groups: storage_formats, hive_transactional) took 1 minutes and 24 seconds

@losipiuk @wendigo   maybe we do not much of a static state (global cache)?
for now we can do at the top of the test method
Path keytab = java.nio.file.Files#createTempFile(java.nio.file.Path, java.lang.String, java.lang.String, java.nio.file.attribute.FileAttribute<?>...);

and use that in config map and assertions?

@losipiuk @wendigo maybe we do not much of a static state (global cache)?
for now we can do at the top of the test method
Path keytab = java.nio.file.Files#createTempFile(java.nio.file.Path, java.lang.String, java.lang.String, java.nio.file.attribute.FileAttribute<?>...);

and use that in config map and assertions?

Works too.

If I was a bad man I would request to add test to check if validation actually works :) It is nice to have as a followup PR.

If I was a bad man I would request to add test to check if validation actually works :) It is nice to have as a followup PR.

This is tested in airlift

This is tested in airlift

The fact that annotation works is tested, yes.
We are not testing the configs where we use it though. I do not feel strongly about it to be honest. But I recently saw many request to add tests for validation constraints added to config classes. Following that approach we should add tests for all occurences of @FileExists too.

We are not testing the configs where we use it though

This i dont understand

But I recently saw many request to add tests for validation constraints added to config classes. Following that approach we should add tests for all occurences of @FileExists too.

i think it might be an overkill. Maybe we should have a discussion?

We are not testing the configs where we use it though

This i dont understand

But I recently saw many request to add tests for validation constraints added to config classes. Following that approach we should add tests for all occurences of @FileExists too.

i think it might be an overkill. Maybe we should have a discussion?

Lets go with this one. And if we come to decision we want to add tests for validation we can add those in followup.


44         path = glob.glob('./datasets/%s/%s/*' % (self.dataset_name, data_type)):      45       46   TypeError: 'module' object is not callable

44         path = glob.glob('./datasets/%s/%s/*' % (self.dataset_name, data_type)):
45
46
TypeError: 'module' object is not callable

What model are you trying to run?

Maybe you're trying to run an old version. This is how the current version of srgan/data_loader.py looks like:
        path = glob('./datasets/%s/*' % (self.dataset_name))

Can you try updating?


Add Store Handlers to query for entire arrays/lists

The Query Store does not have a way to query for the entire stored array/list. Perhaps the same can be said for Maps as well.
The instance types should be something like:
StoreQueryHandler (A.Array a) (QueryArgs ArrayKey -> Sem r (QueryResult [a]))
StoreQueryHandler (L.List a) (QueryArgs ListKey -> Sem r (QueryResult [a]))

If no key (i.e., ArrayKey, ListKey) is available for such an instance, maybe a query arg of () might work.

Side note: if querying for the entire structure in store is something reserved for Vars (i.e., storing a map, array or list as a Var store type), then perhaps this isn't necessary.

You probably wouldn't want to expose this by default because these lists can be arbitrarily long (like in theory thousands of elements) and you don't want to ever try to serialize the whole thing. This style of default access by index only is the same as is done in ethereum, I think it's sufficient for now.
It's possible to implement these kinds of queries by hand and include them in the query api, since both lists and arrays have a toList method


Add support for a rhel9 based bastion

Beta versions of rhel9 indicate that the preferred remote login over ssh is with a cloud-user id.
There could be other changes required to fully support a rhel9 based bastion/helper-node.

We need a sudo user access to configure bastion for OCP deployment without a password prompt.
If the concern is using a non-root user, we can now set it via the Terraform variable rhel_username.
Agree with complete test using RHEL9 to claim full support.

@manojnkumar I have tested Terraform SSH provisioner with v1.2.0 which worked with the CentOS 9 image given by @Shilpi-Das1.
So we need to just add it to the doc to use Terraform v1.2.0 or later for working with newer version of RHEL or CentOS.

Terraform v1.1.9:
│ Error: remote-exec provisioner error
│
│   with null_resource.bastion_init,
│   on main.tf line 10, in resource "null_resource" "bastion_init":
│   10:   provisioner "remote-exec" {
│
│ interrupted - last error: SSH authentication failed (root@<ip>:22): ssh: handshake failed:
│ ssh: unable to authenticate, attempted methods [none publickey], no supported methods remain

Terraform v1.2.0:
$ cat main.tf
resource "null_resource" "bastion_init" {
  connection {
    type        = "ssh"
    user        = "root"
    host        = "<ip>"
    private_key = file(coalesce("~/.ssh/id_rsa", "/dev/null"))
    agent       = false
    timeout     = "2m"
  }
  provisioner "remote-exec" {
    inline = [
      "whoami",
      "cat /etc/redhat-release"
    ]
  }
}
$ terraform apply -auto-approve

Terraform used the selected providers to generate the following execution plan. Resource actions are
indicated with the following symbols:
  + create

Terraform will perform the following actions:

  # null_resource.bastion_init will be created
  + resource "null_resource" "bastion_init" {
      + id = (known after apply)
    }

Plan: 1 to add, 0 to change, 0 to destroy.
null_resource.bastion_init: Creating...
null_resource.bastion_init: Provisioning with 'remote-exec'...
null_resource.bastion_init (remote-exec): Connecting to remote host via SSH...
null_resource.bastion_init (remote-exec):   Host: <ip>
null_resource.bastion_init (remote-exec):   User: root
null_resource.bastion_init (remote-exec):   Password: false
null_resource.bastion_init (remote-exec):   Private key: true
null_resource.bastion_init (remote-exec):   Certificate: false
null_resource.bastion_init (remote-exec):   SSH Agent: false
null_resource.bastion_init (remote-exec):   Checking Host Key: false
null_resource.bastion_init (remote-exec):   Target Platform: unix
null_resource.bastion_init (remote-exec): Connected!
null_resource.bastion_init (remote-exec): root
null_resource.bastion_init (remote-exec): CentOS Stream release 9
null_resource.bastion_init: Creation complete after 4s [id=7421883950020013377]

Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

This one is resolved.


Steam Deck Guide May Not Work

Love the mod, but the Steam Deck guide did not work for me for my steam version of Tunic.  The issue is that proton tricks picks the wrong folder to apply the dll overide to and doesn't seem to have a way to change it.  In order to get bepinex to work for Tunic specifically you seem to need to use another version of wine tricks.
For me I set up Tunic in a wine prefix in the Lutris app.

Download Lutris app, configure your steam library.
Download tunic through lutris (probably not necessary)
Hit configure and change the runner to wine
Under game options select the executable as tunic.exe (you can find it by right-clicking tunic in steam-manage-browse local files)
Under wine prefix select a location for the game files to be stored (I chose /home/deck/Games/Tunic but you can choose any location)
Extract the bepinex x64 file found in the tunic randomizer to your tunic folder (can be done in any step, the tunic folder should be located in /home/deck/Games/Tunic/dosdevices/d:/steamapps/common/TUNIC/ during this step)
In Lutris click on the wine glass next to play and open up wine tricks-select the default wineprefix-install a windows DLL or component-select winhttp and hit ok.
Launch Tunic through Lutris to activate bepinex
The bepinex folder you extracted in step 7 should now have new folders including plugins-put the "TunicRandomizer.dll" you downloaded in the newly created plugin folder
Next time you launch through Lutris it should be as a randomizer

Optional steps to be able to launch through steam library/gamingmode:
Right Click tunic in lutris-create application menu shortcut-search for tunic in steam's system search- right click the tunic without an icon image-add to steam-Now that you have the Tunic randomizer as a non steam game-You can rename to something distinctive in properties and add in custom artwork by search "Tunic" in steamgriddb
Hope this might help somebody save the hours of trial and error I needed to go through to figure this out. Very new to linux so there are probably easier ways to get this to work, but this is what I could figure out.

Thanks for the info, glad you were able to get it working in the end. The current guide has worked for myself and several others, but good to have more options if it doesn't work for everyone.


Error: Cannot find module 'next-aws-lambda'

Description
When I use new version of the plugin (v 2.3.2), I get the following error when I try run on AWS (this is happening in my custom lambda)
Error: Cannot find module 'next-aws-lambda'
Note: I also installed next-aws-lambda. This is strange, because it runs perfectly locally.

Also, my code is not the root folder... rather, it's a client folder. I have put my serverless.yml file in that (i.e. the client) folder.

This is due to the plugin looking for next-aws-lambda in the same folder when copying it. I noted that in another issue, and the official response was https://github.com/danielcondemarin/serverless-nextjs-plugin/issues/75#issuecomment-493856802
As forcing it to install in the leaf doesn't work reliably, I've been patching the plugin to just include the ../ in the path. Realistically this project should be updated to resolve the actual module and grab it from there, rather than just assuming it's in the same location.

Thanks for the reply. Can you do me a favor and share some code of your
patch?
Barry Steyn
Blog http://doctrina.org LinkedIn http://ca.linkedin.com/in/barrysteyn
GitHub https://github.com/barrysteyn

My patch is just
-    path.posix.join("node_modules/next-aws-lambda", "**")
+    path.posix.join("../node_modules/next-aws-lambda", "**")

in node_modules/serverless-nextjs-plugin/lib/build.js

Would you happen to know why it works on my local deploy
(serverless-offline).
Thanks for this. I'll try it and report back here.
--
Barry Steyn
Blog http://doctrina.org LinkedIn http://ca.linkedin.com/in/barrysteyn
GitHub https://github.com/barrysteyn

Hi, yes this worked. @danielcondemarin, this definitely seems like a bug

@me4502 I submitted a PR to fix this issue. See #127. @me4502 can you do me a favor and test out my PR in your code.

Has/can this be extended so other packages can be included as well? I'm keen on using serverless-http instead of next-aws-lambda. I get a "Cannot find module 'serverless-http'" error when using v2.3.4


Better error checking on owns meta-data

Suggested in #6048
We should have a better error message if you try to add $owns meta-data pointing to an un-versioned relationship. It's a faulty design and throwing an exception would be appropriate, rather than a mere warning.

Thanks @guyvanbael for helping us spot this. ;)

do we want to assign a milestone to this?


Snmp - added doc and refactor of the tests

follows https://github.com/apache/camel-quarkus/pull/4871
Fixes all suggestion mentioned in https://github.com/apache/camel-quarkus/pull/4871#issuecomment-1535789390

I added the text into limitations section, as it feels like the right one.

@JiriOndrusek thanks for adressing the suggestions!
I dared to fixup some small glitches in this PR by creating a new PR to avoid another review round: https://github.com/apache/camel-quarkus/pull/4876
First, snm in the org.apache.camel.quarkus.component.snm.graal package name looked like a typo. I changed it to simply org.apache.camel.quarkus.component.snmp because we tend to use graal packages for substitutions. I also moved the camel classes to org.apache.camel.quarkus.component.snmp because I think there is no reason to introduce a duplicate package.
Other than that, i rephrased the docs text a bit. I hope I have not broken anything.

@ppalaga thank you for the fixes you provided!


Per datastore storage cost

Author Name: Michal Strnad (Michal Strnad)
Original Redmine Issue: 5050, https://dev.opennebula.org/issues/5050
Original Date: 2017-03-07

Ability to assign a storage cost based on the datastore(s) the VM's storage is deployed.

This can be revisited in a future Showback revamp

This can be revisited in a future Showback revamp


Use std::thread::available_parallelism instead of num_cpus

          Not a reivew comment, just a glimpse of this PR, we can replace this with `std::thread::available_parallelism()`, `num_cpus` is almost unmaintained (as it no longer needs to), and has issues that are solved by the std counterpart, e.g., this one: [std::thread::available_parallelism() return 0](https://github.com/rust-lang/rust/issues/115868).

Originally posted by @SteveLauC in https://github.com/apache/iceberg-rust/pull/373#discussion_r1706281350

Let me take this, looks pretty straightforward:)


give zookeeper a second to respond before closing connection during ruok query

the -q option does only exist in bsd versions of netcat. -i exists in both gnu and bsd versions. so using it in all cases for simplicity.

PG1 910

rebased and merged in cb584ee3316d0321a7b7a80522e439becc9022b7


Unicode Plots

Hi Ronan,
I am exploring the possibility to build embedded data acquisition systems that run as TUI app inside a tmux session that is accessible/usable via a low-bandwidth ssh connection. It seems that TextUserInterfaces.jl might be the way to start. I was just playing around with the examples in your repo and was exploring possible hooks to add plots. I came across an old post of yours on Julia discourse that shows that you made UnicodePlots.jl work. It looks fantastic! If you still have that code, would it be possible to share it as a snippet via a response? I am specifically wondering about how you "convert ANSI escaping color codes to Ncurses", and more generally how to take the Unicode Plots output and dump it onto a box. I would try to mash it into a reactive concept app that - assuming I succeed - could be added to the examples folder.
Markus

Hi @mdpetters !
Thanks!
TextUserInterfaces.jl is going through a major rewrite. I am almost done, but my time to do so is very limited unfortunately :( Hence, the interfaces changed a lot and the old code does not work here. However, if you want to convert ANSI escape sequences to NCurses colors, you only need to use a widget that I call ANSI label. It performs the correction automatically (however, there might be some edge cases).
To display a plot created by UnicodePlots.jl, you need to do:
using UnicodePlots
using TextUserInterfaces

function tui()
    initialize_tui()

    w = create_window(
        border = true,
        title  = " UnicodePlot.jl ",
    )

    c = w.widget_container

    ansi_label = @tui_ansi_label(
        parent        = c,
        text          = "",
        bottom_anchor = (:parent, :bottom),
        left_anchor   = (:parent, :left),
        right_anchor  = (:parent, :right),
        top_anchor    = (:parent, :top),
    )

    # Create a plot with UnicodePlots.jl.
    x = 0:0.01:10
    y = sin.(x)
    io = IOBuffer()
    show(
        IOContext(io, :color => true),
        lineplot(x, y; xlabel = "t", ylabel = "sin(t)")
    )
    str = String(take!(io))

    change_text!(ansi_label, str)

    app_main_loop()
end

tui()

This code creates a window that spans the entire terminal, adds a ANSI label that spans the entire window container, and adds the unicode plot there. Notice that you must use the development version of TextUserInterfaces.jl.

By the way, hit F1 to exit the main loop :)


[Feature Request] Manual Reload

I would like to see a gameplay option that essentially forces you to reload manually, rather than automatically reloading when you run out of ammo.
I feel that this could add a little bit more challenge for people who are very familiar with the game and want to add slightly more depth.
It would sound odd having weapons make no noise when attempting to fire, though, so it might be necessary to add a "click" dryfire sound. This could optionally be used when trying to fire a weapon with no ammo available (rather than switching weapons), but I'm not sure if it's possible to add new content like that.
I would also suggest a second option, "no backpack reloading", which prevents reloading weapons when you put them away.
This feature request is actually 4 feature requests in one:

Add a dryfire "click" sound when firing while empty.
Prevent reloading when a clip is empty unless Auto Reload is turned on (on by default)
Prevent reloading when switching away from a weapon unless Backpack Reload is turned on (on by default)
Play dryfire sound when firing while clip and reserve ammo are both empty, rather than switching weapons, unless Auto Reload is turned on (on by default)

For what it's worth, PD already has dryfire clicks, if you hold fire after emptying out the mag

I updated the ticket. I didn't realise there was already a dryfire sound, thanks.


added setup.py

Added setup.py so that the repo can be installed as a package through pip. also added pychart/init.py
use:
pip install git+https://github.com/miningape/pychart.git@package for now.
change the thing after @ to a commit hash, tag or branch (probably master after this pull request goes through

Also added python-package workflow

I think we should follow this guide here - it gives a good overview of how we should structure our files and prepare them for exporting through pip using setup.cfg to control which directories are available through install. Also from a quick look at online guides for compiling cli tools that can run alone (pip or pytest) it seems the most compatible
https://packaging.python.org/en/latest/tutorials/packaging-projects/

I think we should follow this guide here - it gives a good overview of how we should structure our files and prepare them for exporting through pip. Also from a quick look at online guides for compiling cli tools that can run alone (e.g. pip or pytest) it seems the most compatible
https://packaging.python.org/en/latest/tutorials/packaging-projects/

Okay so for now I moved pychart to src/pychart. This works now, and we can later updated it to be compliant with PyPi..

Okay this doesn't work


Add support for relative redirects

We recently ran into the problem that a public feed moved to a new location.
The original request returns a 301 Moved Permanently now with a relative redirect.
This works fine in the browser and with curl, but throws an exception with rss-parser.
This pull request contains a test case and a possible fix.

Looks great, thanks for the fix!

Published as 3.7.2


Processor doesn't park itself in a know good state prior to going to sleep

Describe the bug
When utilizing clock gating driven be the sleep signal the processor hangs on wakeup. This is root caused to be because the fetch engine ends up hanging in the IF_PENDING state which it never exists as the response from the memory system never arrives.
In sleep state the fetch engine is holding the RE signal on the instruction bus high, which prevents non-processor bus managers from taking the bus.
To Reproduce
Implement clock gating for the riscv and peripherals as seperate controls. Have the riscv clock gate but have the memories still run. This happens in systems where the processor can go to sleep but an external port like I2C access the memories while the processor is asleep.
This will allow the memories to respond and move on, locking out the riscv fetch engine.
Expected behavior
When going to sleep the processor should park itself in a know good state from which it can safely resume.
Environment:

OS: RHEL 7
GCC Version RISCV 13.2

Additional context
As I'm still on the older version of the core I can't push the implemented fix. The fix is somewhat simple and involves touch the fetch engine and execute engine in neorv32_cpu_control.vhd.
With the provided the changes the processor safely parks itself prior to issuing sleep and safely resumes at PC+4 after going out of sleep.
Changes to the cpu_sleep indicator. We only assert sleep when the processor is in CPU_SLEEP and the fetch engine is safely parked in IF_WAIT.
-- MM
--  ctrl_o.cpu_sleep    <= '1' when (execute_engine.state = CPU_SLEEP) else '0';
  ctrl_o.cpu_sleep    <= '1' when ((execute_engine.state = CPU_SLEEP) and (fetch_engine.state = IF_WAIT)) else '0';

Changes to the fetch engine. This ensures that IF_PENDING goes to IF_WAIT to park the fetch engine when we go to sleep. We are using the execute engine current and next state being CPU_SLEEP to prevent IF_PENDING for going back to IF_REQUEST when the next processor state is sleep.
In IF_WAIT we hang around until the processor is out of sleep.
        when IF_PENDING => -- wait for bus response and write instruction data to prefetch buffer
        -- ------------------------------------------------------------
          if (fetch_engine.resp = '1') then -- wait for bus response
            fetch_engine.pc        <= std_ulogic_vector(unsigned(fetch_engine.pc) + 4);
            fetch_engine.unaligned <= '0';
            if (fetch_engine.restart = '1') or (fetch_engine.reset = '1') then -- restart request (fast)
              fetch_engine.state <= IF_RESTART;
            -- do not trigger new instruction fetch when a branch instruction is being executed (wait for branch destination)
            elsif ((execute_engine.ir(instr_opcode_msb_c downto instr_opcode_lsb_c+2) = opcode_branch_c(6 downto 2)) and
                   (execute_engine.ir(31) = '1')) or -- predict: taken if branching backwards
                  (execute_engine.ir(instr_opcode_msb_c downto instr_opcode_lsb_c+2) = opcode_jal_c(6 downto 2)) or    -- always taken
                  (execute_engine.ir(instr_opcode_msb_c downto instr_opcode_lsb_c+2) = opcode_jalr_c(6 downto 2)) then -- always taken
              fetch_engine.state <= IF_WAIT;
              -- MM changes
            elsif ((execute_engine.state = CPU_SLEEP) or (execute_engine.state_nxt = CPU_SLEEP))  then -- we are going to sleep
              fetch_engine.state <= IF_WAIT;
            else -- request next instruction word
              fetch_engine.state <= IF_REQUEST;
            end if;
          end if;

        when IF_WAIT => -- wait for branch instruction
        -- ------------------------------------------------------------
        -- MM changes
          if (execute_engine.state /= CPU_SLEEP) then
            if (fetch_engine.restart = '1') or (fetch_engine.reset = '1') then -- restart request (fast) if taken branch
              fetch_engine.state <= IF_RESTART;
            else
              fetch_engine.state <= IF_REQUEST;
            end if;
          end if;

I never thought about using the sleep signal for some clock gating... but I like the idea!
How do you do the clock gating? If you turn off the CPU's clock during sleep mode then it won't be able to wake up again since the internal interrupt logic would also be shut down?! 🤔

This is root caused to be because the fetch engine ends up hanging in the IF_PENDING state which it never exists as the response from the memory system never arrives.

Changes to the cpu_sleep indicator. We only assert sleep when the processor is in CPU_SLEEP and the fetch engine is safely parked in IF_WAIT.

This makes sense. I will add this "feature" to the CPU. Thanks for that!

As I'm still on the older version of the core [...]

I can see that 😅 The fetch engine (and also the execute engine) got a whole make-over resulting in a smaller size and even higher f_max. Maybe you should consider an update. 😉

Working on on-boarding the update, will get there :)
As you said the processor doesn't have the ability to go out of sleep with no clock, but thats where the "magic" happens. Its a fundamentally simple combinatorial function that you can apply inside the cpu_control block.
Something like this:
assign wakeup = (|(csr.mie & {FIRQ, nonFIRQ}) | debug_mode);
So just a bitwise and of the csr.mie with all the IRQs which is then has an reduction or operator applied. We then or that with debug_mode.
A note here is that WFI will cause the processor to wake even if mstatus.mie is disabled. If mstatus.mie is disabled the WFI should go PC+4 vs taking the trap.
The clock gating circuit can either use a library cell or just use a plain old gate function:
logic clock_enable;
always @(negedge clk_i or negedge rst_n_i) begin
  if (rst_n_i == 1'b0)
    clock_enable <= 1'b1; // default to clock on
  else begin
    clock_enable <= 1'b1; // assume the clock is always on
    if ((sleep == 1'b1) && (wakeup == 1'b0))
      clock_enable <= 1'b0; // turn off the clock
  end
end
assign riscv_clk = clock_enable && clk_i; // gate off the clock after the falling edge of clk_i

That's a really smart solution!
But there is one big problem: the FIRQs are high for just a single cycle when firing. And this single cycle is to short to bring the CPU out of sleep mode and to re-enable the clock.
One possible solution would be to split the CPU's clock domain into a switchable one and an always-on one (just for the the interrupt logic). However, I would like to keep all the CPU logic inside one clock domain - otherwise we would need at least two FPGA clock tiles for all the logic that might increase critical path length.
However, I really like the idea to turn of the CPU clock while being in sleep mode. So I would suggest to move the "clock enable" logic outside of the CPU: disable the CPU clock when the sleep signals gets high and re-enable the clock as soon as there is a rising-edge on any of the interrupt lines (FIRQ, non-FIRQs and debug-mode entry-IRQ.


Interface for outgoing multicast cannot be selected

If I read net/connUDP.go WriteMulticast() right it always sends multicast over ALL interfaces using all possible source IPs. Multicast often has to be sent to a single interface.
(I am not even sure how go-coap would handle linklocal IPv6 adresses, which solve this issue with a lot of multicast applications)

I have been digging into the code a bit more and I am a bit confused...
1st, you don't seem to use the WriteMulticast() call anywhere except for a test, despite its "working".
2nd, you iterate over all the addresses of an interface and try to send the multicast. Why? You can just use the "any" IP address in the ControlMessage{} struct to send a multicast and define the interface only with the index.

It also seems that there is no "WriteMulticast()" function on udp-client and udp-session level...

If you are interested, I have a fork of this project with multicast cleaned up a bit and options to set the outgoing interface, hoplimit and source separately.

Hi. I created  PR https://github.com/plgd-dev/go-coap/pull/276, could you share it maybe your interface could be better :).

I just added PR #277 , which contains my current multicast code including the "non-confirmation" message fix.


Better toaster warnings when not on the correct network

Now the toaster title say "Unable to connect wallet". This is technically correct, but maybe not too helpful.

This has been fixed in #78


Invalid double -1.07502e

After upgrading from 1.1.7 to 1.1.9, I'm getting the following error:
E/flutter (16703): [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: FormatException: Invalid double
E/flutter (16703): -1.07502e
E/flutter (16703): #0      double.parse (dart:core-patch/double_patch.dart:112:28)
E/flutter (16703): #1      parseDouble (package:vector_graphics_compiler/src/svg/numbers.dart:32:17)
E/flutter (16703): #2      _parseTransformParams (package:vector_graphics_compiler/src/svg/parsers.dart:34:20)
E/flutter (16703): #3      parseTransform (package:vector_graphics_compiler/src/svg/parsers.dart:71:33)
E/flutter (16703): #4      _Elements.linearGradient (package:vector_graphics_compiler/src/svg/parser.dart:334:45)
E/flutter (16703): #5      SvgParser._parseTree (package:vector_graphics_compiler/src/svg/parser.dart:779:20)
E/flutter (16703): #6      SvgParser.parse (package:vector_graphics_compiler/src/svg/parser.dart:799:5)
E/flutter (16703): #7      parse (package:vector_graphics_compiler/vector_graphics_compiler.dart:76:17)
E/flutter (16703): #8      encodeSvg (package:vector_graphics_compiler/vector_graphics_compiler.dart:143:5)
E/flutter (16703): #9      SvgLoader._load.<anonymous closure>.<anonymous closure> (package:flutter_svg/src/loaders.dart:137:14)
E/flutter (16703): #10     _testCompute (package:flutter_svg/src/utilities/compute.dart:12:38)
E/flutter (16703): #11     SvgLoader._load.<anonymous closure> (package:flutter_svg/src/loaders.dart:135:21)

There appears to be a problem with parsing the gradientTransform attribute, because the actual value double value (-1.07502e-05) is correct. Please see the svg below:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100%" height="100%" viewBox="0 0 653 650" version="1.1"
	xmlns="http://www.w3.org/2000/svg"
	xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
	xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
	<path d="M326.338,529.156l61.418,87.513l20.475,-104.907l91.7,54.957l-23.956,-104.176l106.144,12.919l-64.269,-85.45l102.2,-31.343l-93.45,-51.919l80.606,-70.212l-106.481,-9.413l45.1,-96.95l-101.138,34.725l1.769,-106.9l-78.231,72.837l-41.887,-98.375l-41.844,98.375l-78.269,-72.837l1.75,106.9l-101.1,-34.725l45.087,96.95l-106.506,9.413l80.625,70.212l-93.45,51.919l102.219,31.343l-64.269,85.45l106.138,-12.919l-23.982,104.176l91.707,-54.957l20.512,104.907l61.382,-87.513Z" style="fill:#fee849;fill-rule:nonzero;"/>
	<path d="M326.338,97.243l68.243,-97.243l22.769,116.587l101.875,-61.081l-26.619,115.744l117.938,-14.35l-71.413,94.944l113.55,34.843l-103.812,57.663l89.544,78.013l-118.294,10.468l50.081,107.713l-112.375,-38.569l1.987,118.769l-86.962,-80.932l-46.512,109.3l-46.507,-109.3l-86.95,80.932l1.956,-118.769l-112.343,38.569l50.087,-107.713l-118.325,-10.468l89.594,-78.013l-103.85,-57.663l113.587,-34.843l-71.425,-94.944l117.932,14.35l-26.632,-115.744l101.888,61.081l22.781,-116.587l68.207,97.243Z" style="fill:#feb81b;fill-rule:nonzero;"/>
	<path d="M542.056,324.562c0,119.125 -96.6,215.707 -215.718,215.707c-119.132,-0 -215.694,-96.582 -215.694,-215.707c-0,-119.137 96.562,-215.7 215.694,-215.7c119.118,0 215.718,96.563 215.718,215.7Z" style="fill:#fee849;fill-rule:nonzero;"/>
	<path d="M516.594,324.562c-0,105.069 -85.182,190.25 -190.256,190.25c-105.069,0 -190.244,-85.181 -190.244,-190.25c-0,-105.081 85.175,-190.25 190.244,-190.25c105.074,0 190.256,85.169 190.256,190.25Z" style="fill:#f7db69;fill-rule:nonzero;"/>
	<path d="M326.338,142.768c-100.238,0 -181.788,81.557 -181.788,181.794c0,100.238 81.55,181.788 181.788,181.788c100.243,-0 181.793,-81.55 181.793,-181.788c0,-100.237 -81.55,-181.794 -181.793,-181.794Zm-0,380.507c-109.563,-0 -198.707,-89.144 -198.707,-198.713c0,-109.568 89.144,-198.712 198.707,-198.712c109.568,-0 198.718,89.144 198.718,198.712c0,109.569 -89.15,198.713 -198.718,198.713Z" style="fill:#feb81b;fill-rule:nonzero;"/>
	<path d="M325.412,418.837c-43.618,0 -85.868,-19.993 -114.837,-54.368c-31,-36.757 -39.306,-85.894 -14.031,-127.957c27.493,-45.793 77.712,-73.756 128.868,-73.756c50.244,0 98.144,26.594 126.613,70.163c30.231,46.268 16.819,103.481 -20.406,141.025c-28.425,28.662 -66.819,44.893 -106.207,44.893Z" style="fill:url(#_Linear1);"/>
	<defs>
		<linearGradient id="_Linear1" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-1.07502e-05,245.936,-245.936,-1.07502e-05,325.153,172.034)">
			<stop offset="0" style="stop-color:#fdf9e5;stop-opacity:1"/>
			<stop offset="1" style="stop-color:#f7db69;stop-opacity:1"/>
		</linearGradient>
	</defs>
</svg>

Downgrading to 1.1.7 solves the issue.

This is actually a bug in vector_graphics. I thought it was fixed but, alas, it was not. Looking now.

Something went wrong with publishing vector_graphics 1.0.9. I've published 1.0.9+1  which shoudl fix this. Please run dart pub upgrade.


The transposed convolutional animation is confusing

I feel like the input and output could be mislabeled in transposed convolutional animation section.

They seem correct to me. Blue maps (below) are inputs, and cyan maps (above) are outputs.

According to the paper, it states that 4x4 cyan feature is an input, rather than output.
Could you explain why blue maps are input in this case?


Cannot Connect [Important]

All users are complaining that it isnt working (although it is for me)
This is a comment from one of them.
"i do the exact same steps as showing in the vid but "Connecting
If you cannot connect to the servers, check if you have some anti virus or firewall blocking the connection."
Is still showing up and i can't play"
I have lots of users with the same problem and i'm not sure what it is

It's likely that the launcher is outdated.

Shouldn't be, they I got all the messages last night, and also the old launcher still works so that shouldn't make a difference

Yeah, not working,

This should be fixed.


Light wallet GUI 2.0.160203 - not ignoring all accounts

Is there a limit to how many accounts a user can ignore, some dont get ignored

Yes, 20 I believe I set it too. Arbitrary, but I just didn't want it to be unbounded.

Do you have that many accounts in your wallet that you want to ignore?

let me count hold on

yes around 35

almost all created after the launch of 2.0 . paid for

You did not have to do it for me, but thank you ...


fix: Update _config.yml(2 changes listed below)

repository value had a typo
Below was live
If you want to link only specific pages in your header, use this and add the path to the pages # in order as they should show up.
header_pages:

about.md

Archive artifact
./
./junk/
./junk/2016/
./junk/2016/05/
./junk/2016/05/20/
./junk/2016/05/20/this-post-demonstrates-post-content-styles.html
./CODE_OF_CONDUCT.md
./404.html
./feed.xml
./CHECKLIST_TODO.md
./assets/
./assets/main.css
./assets/main.css.map
./assets/minima-social-icons.svg
./assets/css/
./assets/css/style.css
./assets/css/style.css.map
./update-npm.sh
./blog.html
./2016/
./2016/05/
./2016/05/20/
./2016/05/20/welcome-to-jekyll.html
./2016/05/20/my-example-post.html
./LICENSE
./README.md
./misc/
./misc/2016/
./misc/2016/05/
./misc/2016/05/20/
./misc/2016/05/20/super-long-article.html
./misc/2016/05/19/
./misc/2016/05/19/super-short-article.html
./collab-ready-repo.md
./script/
./script/bootstrap
./script/build
./script/cibuild
./script/server
./index.html
./CODEOWNERS
./404.md
./update-gem.sh


Add support for startup option bazelrc

As discussed in #278 adding support for --bazelrc option. Since this is a startup option, additional changes were needed.

@googlebot I signed it!

@libsamek, thank you so much for taking the time to fix this and to enhance the project!


Enhance Design/Layout of PDF-Page

At the confirmation page there should be a logo, a bold font for the title.
Optionally, the bought products should be shown in a table.
Thanks to @lisa-devseccon for raising this issue.

I used the PDFs ugliness as a kind of running gag during talks or trainings, but in all honesty: I was just too lazy to ever make them pretty... :+1:


Option to make jsc.paths fully specify /index.js (and/or extension)

Describe the feature
https://github.com/swc-project/swc/pull/7860/files#diff-bcaf2bc6fe05ee79eb969eb9c1e4152d05d007e43947ea621ded5c19fe88770d
In some cases,
import { fn } from "./libs/pkg/src/index.js";
console.log(fn);

would be more desirable.
Babel plugin or link to the feature description
No response
Additional context
No response

Reopening as fix was reverted. https://github.com/swc-project/swc/pull/7906


Remove example hook messages

[0] example hook running scrape:all
[0] [info] [2023-07-05 10-07:06] [scrape:all]:  runAll
[0] example hook running scrape:amazon

:tada: This issue has been resolved in version 1.1.16-dev.1 :tada:
The release is available on:

npm package (@dev dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

:tada: This issue has been resolved in version 1.1.16 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Deployment

#Deployment
##User Story
As a marketing agency
I want a codebase that follows accessibility standards
So that our own site is optimized for search engines
##Acceptance Criteria
Given that when i check the codebase then the following occurs:
Semantic HTML elements can be found throughout the source code
HTML elements follow a logical structure independent of styling and positioning
Image and icon elements contain accessible alt attributes
Heading attributes fall in sequential order
Title elements contain a concise, descriptive title

Done


showAboutDialog Allow for additional buttons

When showing the AboutDialog, we would like to add a 3rd button "PRIVACY", there is currently no method to do this. It would be nice if it acception some list of extra btns, like TabBar does.

Hello, @HansMuller I would like to submit a PR for this.
Also, it would be great if you can provide your input on what exactly should get opened when we click the privacy button.