Running update four times with 1/4 of the timestep gives different results

I have this code:
#define N_DWORLD_STEPS 1

for (int i = 0; i < N_DWORLD_STEPS; i += 1)
{
    dworld->update(advance_in_ms / (N_DWORLD_STEPS * 1000.0));
}

The physics world behaves quite differently if I set N_DWORLD_STEPS to 1 or 4 (friction appears to be much higher for example).  Why would this be?
(I am trying it like this because the accuracy using one step doesn't appear to be enough.)
I am running with head.  I set up the dworld with:
rp3d::PhysicsWorld::WorldSettings settings;
settings.defaultVelocitySolverNbIterations = 20;
settings.isSleepingEnabled = false;
settings.gravity = rp3d::Vector3(0, 0, -9.81);
dworld = gGameState->physics_common->createPhysicsWorld(settings);
dworld->setNbIterationsVelocitySolver(30);
dworld->setNbIterationsPositionSolver(20);

It's not surprising that the physics simulation behaves differently with different timesteps. The smaller the timestep, the more precise is the numerical integration and therefore the simulation.

(I am trying it like this because the accuracy using one step doesn't appear to be enough.)

I am not sure to understand this. Can you explain a little bit more?
What is advance_in_ms in your code exactly?

Hi Daniel, thanks for the reply.
The difference is not on the level of differences in accuracy - a body accelerated under contact at at least twice the rate.
Advance in ms is 32 in this instance.
Best,
Ian

I am not really sure what can cause this behavior in the friction constraint.

Try this.  My output I get is:
Before -5.000000 -5.000000 1.000000
After -4.987674 -4.987674 1.109570
Before -5.000000 -5.000000 1.000000
After -4.978106 -4.978106 1.196050
Which is a huge difference.
DefineEngineFunction( test_dworld_ticking, void, (), , "")
{
	rp3d::PhysicsCommon physics_common;

    for (int i = 0; i < 2; i += 1)
    {
        rp3d::PhysicsWorld::WorldSettings settings;
        settings.defaultVelocitySolverNbIterations = 20;
        settings.isSleepingEnabled = false;
        settings.gravity = rp3d::Vector3(0, 0, -9.81);
        rp3d::PhysicsWorld* dworld = physics_common.createPhysicsWorld(settings);

        // floor

        rp3d::Transform at_origin = rp3d::Transform(rp3d::Vector3(0,0,0), rp3d::Quaternion(0,0,1,0));

        rp3d::RigidBody* floor_body = dworld->createRigidBody(at_origin);
        floor_body->setType(rp3d::BodyType::STATIC);
        const rp3d::Vector3 floor_half_extents(10,10,1);
        rp3d::BoxShape* floor_col_shape = physics_common.createBoxShape(floor_half_extents);
        rp3d::Collider* floor_collider = floor_body->addCollider(floor_col_shape, at_origin);

        // cube

        rp3d::RigidBody* cube_body = dworld->createRigidBody(rp3d::Transform(rp3d::Vector3(0,0,0), rp3d::Quaternion(0,0,1,0)));
        const rp3d::Vector3 cube_half_extents(0.5,0.5,0.5);
        rp3d::BoxShape* cube_col_shape = physics_common.createBoxShape(cube_half_extents);
        rp3d::Collider* cube_collider = cube_body->addCollider(cube_col_shape, rp3d::Transform(rp3d::Vector3(5,5,1), rp3d::Quaternion(0,0,1,0)));

        {
            rp3d::Transform tform = cube_collider->getLocalToWorldTransform();
            Point3F pos = to_torque_vector(tform.getPosition());

            print("Before %f %f %f", pos.x, pos.y, pos.z);
        }

        if (i == 0)
        {
            F32 advance_in_seconds = 32.0 / 1000.0;
            dworld->update(advance_in_seconds);
        }
        else
        {
            F32 advance_in_seconds = 32.0 / (1000.0 * 2.0);
            dworld->update(advance_in_seconds);
            dworld->update(advance_in_seconds);
        }

        {
            rp3d::Transform tform = cube_collider->getLocalToWorldTransform();
            Point3F pos = to_torque_vector(tform.getPosition());

            print("After %f %f %f", pos.x, pos.y, pos.z);
        }
    }
}

Thanks a lot for your code. I will use this to investigate the issue.

I have investigated this a little bit.
The difference is due to the position correction algorithm (split impulses) for contacts. Because of precision errors and numerical integration errors, the physics engine needs to correct for position drift after solving the velocity constraints.
If we disable position correction, there is no difference between calling the PhysicsWorld::update() method once and calling it twice with half of the time step. There is no way to easily disable position correction for contacts in the library (because it's really important to have it to avoid penetration of bodies). However, you can disable it by commenting the two lines 58 and 59 in src/systems/DynamicsSystem.cpp:
newLinVelocity += isSplitImpulseFactor * mRigidBodyComponents.mSplitLinearVelocities[i];
newAngVelocity += isSplitImpulseFactor * mRigidBodyComponents.mSplitAngularVelocities[i];

But why is position correction (split impulses) causing this difference. The idea behind "split impulses" is to compute, in each frame, the position error (which is basically the penetration depth between the two bodies). Then, if the penetration depth between the bodies if 5cm for instance, the idea is to correct the position of both bodies such that there is no more penetration depth. However, in order to avoid visual artifacts, we do not want to correct those 5cm in a single frame. It's better to correct a little bit each frame (for instance 20% of the error each frame). Therefore, each frame we correct the position according to the following formula:
position correction each frame = -beta * penetrationDepth / timeStep;
where beta is 0.2 in order to fix 20% of the penetration each frame. With this in mind, after some frames, the penetrationDepth is completely corrected.
However, in your example, where you call the PhysicsWorld::update() method only once or twice, the physics engine does not have the time to completely fix the penetration. If you use beta=1 (meaning that we fix the penetration after a single frame), you will see that there are also no differences between your two examples but this value is not feasible in practice because
this will result in visual artifacts. Therefore, I am not really surprised that there is a difference in your two examples when calling only once or twice the PhysicsWorld::update() method.
Concerning the issue that the friction seems much higher when the time step is different, I do not observe this on my side. As a test, I used the testbed application and made an inclined plane with a cube sliding on it. With a time step of 16ms the cube slided on the plane across the screen during 19 seconds. If I use a time of 32ms, 8ms or 4ms the cube takes the same time to slide across the screen.
Note that when I was investigating this, I found an issue with the computation of the two friction vectors. I have fixed it in this commit. Therefore, you should pull the last version of the master branch.

That's great, thank you Daniel - I'll take a look at the fix as well, I was having trouble with some weird friction issues.

Let me know if we can close this issue or if you still need something.


403 error when attempting to install Razer Chroma patch on 0.72 +804

Expected Behaviour
Should click install and update to the latest Installed version of Chroma in Aurora
Actual Behaviour
Error message displayed seen here:
https://imgur.com/pCveUPq.jpg
Frequency
Every time
Aurora Version:
beta 0.7.2 +804 as I read in this post that it would fix the flickering issue I was seeing in OW
https://github.com/antonpup/Aurora/issues/1960
2020-05-09 20.02.22.log

Razer took down this link. We're trying to figure out what the best way to handle this is.

Cool, thank you. I tried it on the latest stable release and the download worked? But then I ended up with #1960

I managed to find a copy of what Aurora used to grab from Razer. Here is a link. Digitally signed by Razer, it's safe. Just run as admin then reopen Aurora. You might have to restart your PC if Aurora fails to connect. If a developer doesn't want links, I'll edit my comment.

Was gonna suggest "is there a way these SDKs could be hosted elsewhere without legal ramifications from Razer" but I assume the answer's no...

I can confirm the download link shared by @coggy9 does fix Aurora Chroma support. However, it will cause your Razer devices to exhibit the rainbowing effect (tested in Razer Chroma Emulator). It will also break the "Chroma Connect" feature of the Razer Synapse software.
@MoshiMoshi0 I'd be happy to help with RazerSdkWrapper.dll development if you're looking for assistance.

@coreyshuman If you know assembly you can help with reverse engineering the encryption they introduced in 3.12.0+. I have not yet had a chance to properly analyze the disassembly.

@MoshiMoshi0 definitely, that sounds like a fun challenge. I had started to review the disassembly of the ChromaEmulatorService.exe since it looks like that one interfaces with the broadcast API and passes the data into a websocket for the emulator Electron app. I can continue down that route.
Would you be able to share the wrapper source or any docs/notes on the pre-encryption broadcaster to give me a head start understanding the underlying protocol?

@coreyshuman Ok, cool. But please lets continue this conversation on the aurora discord since this is off topic to the issue


[scripts|msbuild] pass toolchain flags

Ports using msbuild:
3fd
ace
activemq-cpp
chakracore
easyhook
ecsutil
gsoap
hunspell
ideviceinstaller
idevicerestore
libfabric
libgpg-error
libirecovery
libmicrohttpd
libosip2
libusb
libvpx
mdnsresponder
monkeys-audio
mp3lame
mpir
ngspice
nmap
ocilib
openni2
pbc
pmdk
python2
python3
rsasynccpp
scintilla
sdl1
tbb
tracy
unicorn
unrar
usbmuxd
winpcap
zeroc-ice

ACE looks like supports "!uwp".

@BillyONeal Are the releases of the WindowsSDK also gated by vcpkg? The errors I see here in ecsutil are related to https://developercommunity.visualstudio.com/t/code-using-windows-10-sdk-100203480-cant-be-compil/1521695

@BillyONeal Are the releases of the WindowsSDK also gated by vcpkg?

I believe we are currently installing 22621 in our lab: https://github.com/microsoft/vcpkg/blob/a9a23172a7768a05e5d5763e5dee8658eae1bdf9/scripts/azure-pipelines/windows/deploy-visual-studio.ps1#L21

hmm don't know what to do with the arm chakracore error.
the unicorn regressions seems to be a bug in vcpkg-tool.

@JackBoosY readosm seems to be a baseline regression.

since those conflicts are only v db conflicts I'll fix them after review.

@BillyONeal Should I split this PR in only the vcpkg-msbuild port and then silently update the other ports into using it? Would make that merging this a lot faster? (I mean this PR already proved that it will work so splitting it out should be a thing.)

@Neumann-A, according to your PR, I split vcpkg-msbuild and vcpkg-pkgconfig-get-modules and the parts modified by zeroc-ice to test that the CI baseline error about zeroc-ice can be successfully repaired. I would like to ask you to put the most in this PR The basic part involves vcpkg-msbuild and the part of vcpkg-pkgconfig-get-modules re-split Submit a PR and then we can fix the CI baseline error about zeroc-ice as soon as possible.

Converting to draft. This PR is more like a port status PR for the transition as soon as the other PR with the scripts is merged. It also shows how to convert.


0.8.6 error with new install / world

Installed Foundry 0.8.6 fresh, installed DSA system, then all the modules (except starterbox).
Created a new world, first login shows error: "ENOENT: no such file or directory, open '/data/Data/systems/dsa5/packs/skillsen.db~'"
It was vanished too quickly, so I can only provide console screenshot, but it was visible in the GUI.
I had the same issue once when setting up the german world. When restarting, the error is gone and it doesn't break anything for what I saw.
Bonus Info: This happens BEFORE you choose the default language in the pop up window. And all the modules are still de-activated in the settings menu.

This is a foundry problem, which is getting reported all over the place.
Nothing to do with TDE.
Restarting usually fixes this. Also some suggest this will help:
Try launching Foundry as admin (right-click the exe, Run as Administrator), load your world, open up all the SRD compendiums, and let it sit for like 5 minutes. Then quit, and re-launch normally

Foundry is now working on this.


Refactor simple config parsing to be done once at startup

Depends on https://github.com/yahoo/bullet-core/issues/5

In #42


This is malware

The client loads a malicious lib.dll

Its my dll and used for anti skidding and anti hooking i dont want to share its source code so i obfuscted it and put it if you dont wont it then remove it + if you think its malware then prove it


JabberAgent: 'connect_to_receiver'

I'm trying to understand what the option connect_to_receiver of the JabberAgent does. Could someone please explain?

Then that is set to true the Agent will connect to the configured server and emit Events for a few actions it receives.

Thanks! So there are two possible "routes"?

message from sending Huginn agent > JabberAgent > Jabber message to jabber_receiver
Jabber event > JabberAgent > message to receiving Huginn agent

Route 1 works on my server but I am having problems with route 2. Based on that, my Jabber account and server settings should be correct.
Looking at the code, the jabber_sender seems to create a MUC and then "invite" the jabber_receiver. Is that correct? How can I join that MUC in order to trigger an event, e.g. on_join?

Looking at the code, the jabber_sender seems to create a MUC and then "invite" the jabber_receiver. Is that correct? How can I join that MUC in order to trigger an event, e.g. on_join?

Hmm not sure the code call join with jabber_receiver as the argument. So jabber_receiver needs to be a room maybe?
Can you "invite" the bot into another room using a different client?

Found the issue. join requires a different format, e.g<EMAIL_ADDRESS>I fixed the problem by introducing another variable, which is used if connect_to_receiver is set to true.

Using the join format in jabber_receiver did not work?

Using the simple format (user@jabberserver.xyz), there was an error message by the xmpp4r library ("Nickname already used"). It worked after appending a nickname ("/huginn-bot" in my previous post) and using a multi-user chat JID.

If connect_to_receiver is true, the "/huginn-bot" nick will be blocked by the Huginn agent. So I cannot join the MUC with the same nick on a different device. On the other hand, if I use my jabber_sender credentials on a different client, I can see "my" chat messages, which were actually created by the Huginn agent. So I can see the generated messages from the wrong perspective :laughing:
Maybe someone else should verify this behavior.

Oh, yes jabber_sender is also used when connecting to the jabber server with connect_to_receiver=true.
So you added another variable to use the same Agent to both receive and send Events?


Improve Item.addFilter signature to use objects instead of strings.

Change signature Item.addFilter(groupName: string, filterName: string) to Item.addToFilter(filter: Filter)

Closed by https://github.com/robertpainsi/filtering.js/commit/7a4e80d3b4d3a3a8f9c0cb52b298cdf7d058b4ec


Add field for deployment args

Some apps require some args to start properly. For example, Keycloak requires an argument "start".
    spec:
      containers:
      - name: keycloak
        image: quay.io/keycloak/keycloak:21.1.1
        args: ["start", "--cache-stack=kubernetes"]

So we need a way to support these containers.
go-deploy issue: https://github.com/kthcloud/go-deploy/issues/439

@saffronjam +1 for more functionality. Could we maybe benefit from letting the user upload the yaml themselves? We could provide an example with which fields are filled in by go-deploy and which are allowed (subset of manifest spec)

That's a good idea, as it would not require an API update every time we need to add a "new" field.
We can ensure it is a Deployment manifest, and then extract the fields we need from it.

Args are now support in Create and Update as "args" https://github.com/kthcloud/go-deploy/issues/439

@saffronjam getting args: null, seems to be a bug (both creating and editing results in no args (null))

completed in #303


Detect x86_64 microarchitecture variant automatically

e.g., on my test machine
❯ cargo run -- python install 3.12
Installed Python 3.12.8 in 3.65s
 + cpython-3.12.8-linux-x86_64_v3-gnu

Note this is split into two commits:

c0f146c: which adds detection
5d78bf2: which improves behaviors and compatibility between architecture variants

While mostly I would want uv to automatically detect which microarchitecture variant to grab, I have a concern here related do docker images, specifically if uv is used to install Python in the dockerfile, what happens when the build machine and execution machine support different instruction sets?

I have a concern here related to docker images, specifically if uv is used to install Python in the dockerfile, what happens when the build machine and execution machine support different instruction sets?

I think it's fair to say the build machine will need to be on the same (or an older) microarchitecture than your execution machine. Do you think that's unreasonable?

I think it's fair to say the build machine will need to be on the same (or an older) microarchitecture than your execution machine. Do you think that's unreasonable?

Only in the sense it's not something I have to think about right now, and without being familiar with this I'm not sure it would be easy to diagnose when a failure happened?

Only in the sense it's not something I have to think about right now, and without being familiar with this I'm not sure it would be easy to diagnose when a failure happened?

Yeah the interpreter would probably just crash at runtime, or, if you use uv as your entry point, it would be "missing"

Maybe this is already an issue with other tools that are installed into docker images, and it's not that common to face, and people who do face this problem are familiar with the symptom and cause. I just never thought about it before now.

Maybe this is already an issue with other tools that are installed into docker images, and it's not that common to face, and people who do face this problem are familiar with the symptom and cause. I just never thought about it before now.

I don't think this is a common issue right now, and you raised a very valid concern. For pre-built binary artifacts, for example most Linux distros AFAIK use conservative microarchitecture and don't do any runtime detection.
There has been some discussion about this in Fedora but the proposal to bump microarchutecture has been withdrawn?
https://discussion.fedoraproject.org/t/will-future-releases-require-x86-64-v3/131200/6

Assuming this feature is eventually implemented, it would be helpful to have a way to disable CPU microarchitecture detection to retain the current behavior that v1 is used by default.  This would make it possible for folks who are mirroring python-build-standalone to continue to mirror only the v1 binaries rather than the whole set of microarchitectures, reducing both space and time requirements for mirroring.  Developers might also prefer to use the same Python executables across an entire team for consistency.

@drmikehenry thanks for the feedback!


extensions: implement ContractNegotiation Data Management Api

What this PR changes/adds
Implements ContractDefinition service for Data Management Api.
Depends on #940
Why it does that
To expose a clear and RESTful api to operate on ContractContractNegotiation
Further notes

The NegotiationInitiateRequestDto contains an offerId, while the ContractOfferRequest in which it is transformed contain a full ContractOffer object. For the moment I created it with a ContractOffer that has only the id, but's obvious that we need a better process, probably we need to include a ContractOfferDto into the NegotiationInitiateRequestDto, or retrieve it from somewhere, I need some hints on this.
Removed negotiationId from ContractAgreementDto as it seems to be unused (and since to get the agreement we need to pass from negotiation it would be needless)

Linked Issue(s)
Closes #807
Checklist

[x] added appropriate tests?
[x] performed checkstyle check locally?
[x] added/updated copyright headers?
[x] documented public classes/methods?
[x] added/updated relevant documentation?
[x] added relevant details to the changelog? (skip with label no-changelog)
[x] formatted title correctly? (take a look at the CONTRIBUTING and styleguide for details)

It can be challenging to write UTs for mapper code, that (1) do not simply repeat the code under test, (2) properly test invalid output without too much boilerplate, (3) is not fixed to specific input values.
Here is a structure (for another, but similar PR) that I think helps with those, building "correct" inputs and outputs in setup, with fake data, and then allowing methods to corrupt the data and verify expectations. It also avoids redundancy if testing roundtrip.
class TransferProcessToTransferProcessDtoTransformerTest {
    static Faker faker = new Faker();

    DtoTransformerRegistry registry = mock(DtoTransformerRegistry.class);
    TransformerContext context = new DtoTransformerRegistryImpl.DtoTransformerContext(registry);
    String id = faker.lorem().word();
    TransferProcess.Type type = faker.options().option(TransferProcess.Type.class);
    TransferProcessStates state = faker.options().option(TransferProcessStates.class);
    String errorDetail = faker.lorem().word();

    public TransferProcess.Builder entity = TransferProcess.Builder.newInstance()
            .id(id)
            .type(type)
            .state(state.code())
            .errorDetail(errorDetail);

    TransferProcessDto.Builder dto = TransferProcessDto.Builder.newInstance()
            .id(id)
            .type(type.name())
            .state(state.name())
            .errorDetail(errorDetail);

    TransferProcessToTransferProcessDtoTransformer transformer = new TransferProcessToTransferProcessDtoTransformer();
    List<String> problems = new ArrayList<>();

    @Test
    void transform() {
        assertThatEntityTransformsToDto();
    }

    @Test
    void transform_whenInvalidState() {
        entity.state(invalidStateCode);
        dto.state(null);
        problems.add("Invalid value for TransferProcess.state");

        assertThatEntityTransformsToDto();
    }

    void assertThatEntityTransformsToDto() {
        var result = transformer.transform(entity.build(), context);

        assertThat(result)
                .usingRecursiveComparison()
                .isEqualTo(dto.build());

        assertThat(context.getProblems()).containsExactlyElementsOf(problems);
    }
}

@algattik yeah, that seems a good approach, but currently is not applicable, at least to contract negotiations, since not all the fields are equal (e.g. ContractNegotiation has a ContractAgreement instance, while the Dto has only the id).
Could be something to address to another issue for sure.

@algattik yeah, that seems a good approach, but currently is not applicable, at least to contract negotiations, since not all the fields are equal (e.g. ContractNegotiation has a ContractAgreement instance, while the Dto has only the id).
Could be something to address to another issue for sure.

From this answer it seems you might be thinking that the proposed code compares the mapping input and output directly by reflection? That is not what it does, maybe you should have another look. It does not assume any identity or similarity between input and output.

@algattik yeah, that seems a good approach, but currently is not applicable, at least to contract negotiations, since not all the fields are equal (e.g. ContractNegotiation has a ContractAgreement instance, while the Dto has only the id).
Could be something to address to another issue for sure.

From this answer it seems you might be thinking that the proposed test code compares the mapping input and output directly by reflection? That is not what it does, maybe you should have another look. It does not assume any identity or similarity between input and output.

I will, my suggestion tho, is to address this optimization to another issue/pr

The NegotiationInitiateRequestDto contains an offerId, while the ContractOfferRequest in which it is transformed contain a full ContractOffer object. For the moment I created it with a ContractOffer that has only the id, but's obvious that we need a better process, probably we need to include a ContractOfferDto into the NegotiationInitiateRequestDto, or retrieve it from somewhere, I need some hints on this.

Every connector should maintain in its catalog a list of ContractOffers, that other connectors have presented. Therefor the way to do this is to resolve the ContractOffer for that particular offerId using the org.eclipse.dataspaceconnector.catalog.spi.QueryEngine


Problem with b-menu-item

Buefy v0.4.6
Chrome & Firefox:
I am running on the most recent version of Buefy installed via npm.
If I use the following component: **<b-dropdown-item>Action</b-dropdown-item>**. I get the following error:
[Vue warn]: Unknown custom element:  - did you register the component correctly? For recursive components, make sure to provide the "name" option.
I'm running Vue.js 2.4.2
Cheers.

Hello,
You are not using the latest Buefy version which is v0.5.0.
In v0.5.0 b-dropdown-option was renamed to b-dropdown-item.
So ... with you current version you need to use b-dropdown-option 😄

So the docs are missing that. I'm actually using v0.5.0 (:facepalm:). The problem has been the docs:
https://buefy.github.io/#/documentation/dropdown

Now working without any issues!


[Suggestion] Multiple small suggestions

Hello, first of I want to thank you for providing this great image viewer! I always struggled to find one that fitted my needs as well as this one does.
After using it for a bit, I want to make a couple of suggestions on how to improve the program even further (or at least put them as options and sorry if some of them have already been suggested!). I am running on Linux:

Zooming the image doesn't take up the entire workspace:

I don't know if this is deliberate, but I think it looks weird. The 'zooming area' seems to keep the image aspect ratio.

Option to reset the zoom when switching image:

Pretty self-explanatory, navigating through folders with images of multiples sizes can get a bit messy because of that. Maybe put a 'default zoom mode' option in the preferences would fix that? Since zooming in or out resets it to 'Zoom user'.

Option to close the program with 'Escape':

Some other image viewers have this feature (and sometimes by default), and I think it helps speeding up the workflow when going through multiple pictures.

Support for non-US keyboards:

Now, I know this is a common issue with GLFW and ImGUI programs, but there are have been several workarounds posted to the ImGUI and GLFW issue trackers. I managed to make it work using a slightly 'dirty' method, but it would be nice to have this change made upstream.

'Basic View' mode doesn't restore the interface and settings as they were:

For example, when I exit 'Basic View', the 'Nav bar' disappears and the 'Auto Property Window' setting gets disabled. I don't really like that.

The DDS property editor is the same as the one for animated pictures:

Only the option to display layers one-by-one would be needed here.

Option to enable 'Display Mipmaps' and 'Display Cubemap' by default when viewing DDS files:

Maybe also move those buttons to the DDS property editor window since it's the only image type that uses these options.

A keybind window:

The option to rebind keys would be nice (and not all features have a keybind assigned to them currently). Maybe also add a key hint to the icons when hovering them as well?

Add separators between icons:

Right now, all the icons are all just lined up next to each other and not necessarily grouped by functions. Adding separators and grouping the icons in a more sensible way will make the menu bar easier to navigate.

Option to scale the UI / make the font bigger:

This is just for accessibility reasons and for people with bigger / smaller monitors.

I think this is everything that I wanted to say for now. None of these issues are a deal breaker by any means! But it would make the program feel even better to use this way in my opinion.

Hi Frousties.  Nice to see the tool is being used. I think I pretty much agree with all your thoughts.
Zooming: Yeah, I wanted the displayable area to maintain aspect under zoom...but also not sure how much I like it either -- it especially breaks down viewing extremely narrow images.
Zoom Reset Option: Yup. Agree.
Esc to quit: Sure. FYI Alt-F4 currently works.
Non US keyboards: I don't own any...although I'm sure you can set the OS to interpret the scancodes as if it were a different layout. If you have code (messy or not), it could be attached to this issue (after a sep bug is made for it).
Basic View: I can look at that sometime.
Prop Editor and mipmap/cubemap: Orig intended for editing properties. Need to think about this one a bit. Point taken that only DDS files support mipmaps and cubemaps so why clutter the toolbar. As for the frame duration, agreed it should not be there for, say, DDS files... not sure for other 'non-animated' image types. Tiff, for example, can store multiple 'pages' (images)... and they could be used for flipbook anim. In fact, that frame duration field does actually set the value -- so you can adjust, for example, how long each frame takes and if you save as a gif, apng, etc, it will write that duration out. For tiff files it uses a custom (user) field for the duration, so if you reopen in tacentview, you will see it play with the saved duration for each frame.
Keybind: Can put on list. It's a bit of work.
Separators: Agreed.
Scaling: Also a bit of work... cuz I know there are at least some hardcoded offsets etc for some of the UI widgets/controls.
Additional features I'm interested in:

A proper file open/save dialog.
Using the docking branch of IMGUI (the view/thumbnail screen is annoying since it exists on top of the workspace so to speak).

Although I haven't had a lot of time to work on the viewer lately, I definitely appreciate the well-thought-out feedback. If you'd be willing to enter each of your suggestions above as a separate issue (along with my corresponding comment) it would be helpful. I may be able to knock some of them off every now and then.

Okay! I'll put an issue for each one of those!

Here, all the issues now have their separate entries. I'd be happy to help for any of those if there's any need!

Thanks Frousties. I got around to the basic mode restore issue. Basically it's now a seperate profile now so it can be customized however you like. For example, you can specify, say, a different slideshow duration. If you modified that duration while it was in 'basic' mode, it would stick next time you entered basic mode. In prefs you can always reset the profiles to their default values.

Sounds good!

Closing as they are entered individually.


Adding new interface AuthWithSaslHandler

It is required to pass the auth for memcached with http auth.
So added a new interface couchbase.AuthWithSaslHandler and
made auth param a generic interface.
Change-Id: Id8541e0a1b8559c5c141e595bb629e4f66e964c5

Looks like this pull-request #56 was replaced by #57, so closing this one for clarity.


Unable to redo changes

I have the plugin working with MIX_ENV=edit mvim (thanks for fixing that issue). But I'm seeing some strange behavior with redoing changes.
I have the plugin formatting on save and I'm able to undo previous changes, but I don't seem to be able to redo changes.
I noticed this, but it seems a bit different.

I'm not able to reproduce it now. It must have been something I was doing. Sorry for wasting your time.
Undotree looks pretty cool! I'll check it out, thanks!

Maybe I'm not losing my mind. I've captured a screen share I can send you if it'd be helpful. It's saying it's already at the newest changes when it should be able to redo the changes I made previously.
For example:
This line
testing + (blah.blah_blah_blah || 0) / (blah.blah_blah_blah_blah || 1) * (blah.blah_blah_blah || 1)

is reformatted to this
testing +
      (blah.blah_blah_blah || 0) / (blah.blah_blah_blah_blah || 1) * (blah.blah_blah_blah || 1)

Then when I undo those changes, I'm not able to redo them again.
I hope that helps.

Yup, that's exactly how the undo tree works. :-)
Using your example above:

You have the original line. This is node 0 in the tree.
Then you save which triggers the plugin which formats the line. This is node 1.
When you now undo, you're back at node 0.
You save again which runs the formatter and the line is changed again. Now you branch off node 0 and create a new node 2.

At this state, redo won't be possible anymore, because your at the leaf end of your branch already. There is nothing to redo. Undo would go back to node 0.
What you want, is to go back to the branch of node 1 again, which you can with :undo 1. (It's easy to find the right branch with the undotree plugin.)
Also see :h 32.2 and :h 32.3 which explains this with a bit of ASCII art.

Ohh, got it. The plugin's change counts in the undo tree, so you can't redo the previous changes w/ the normal command.
I was thinking the plugin's changes wouldn't actually be a part of the undo tree. Thanks for the explanation.


Comparison with DifferentiationInterface.jl

Hi there,
Adrian Hill (@adrhill) and I recently started a new unified differentiation package called DifferentiationInterface.jl:

https://github.com/gdalle/DifferentiationInterface.jl

I'm gonna try to show why we did that, how we proceeded, and what we expect to gain from it.
The discussion had started in #129 but did not go very far.
The main idea was to be less generic than AbstractDifferentiation from the start, in order to reduce the surface of error and focus on testing + performance.
This led to severe feature regressions and a complete rewrite, which is why I felt it was best to start a new project.
Whenever I say below that something is not implemented in AbstractDifferentiation, I don't mean it can never be.
I just mean it might require significant changes, not unlike the ones Adrian and I proposed.
Design principles

AbstractDifferentiation
DifferentiationInterface
Reason
Refs

Backend specification
Custom structs
Borrowed from ADTypes.jl
Used by SciML and Lux.jl
#88

Backend requirements
@primitive macro
Method implementation
Easier to understand
#13

Fallback mechanism
Based on jacobian
Based on pushforward / pullback
Makes more theoretical sense
#123

Fallback implementations
Lots of closures
No closure at all
Type stability
#109 #121

Differentiation order
First and second order
First and second order
Enough for all practical purposes

Input / output number
Anything
One in, one out
No need to deal with tuples or concatenate
#53 #65 #99

Input / output types
Anything
AbstractArray or Number
Some backends can't do more anyway + helps simplify

Differentiation cache
Not yet
Yes
Performance with ForwardDiff / ReverseDiff
#41

Mutating functions
Not yet
Yes
Performance with Enzyme and others
#14

Sparsity
Not yet
Yes
Natural with ADTypes and SparseDiffTools

Features

AbstractDifferentiation
DifferentiationInterface
Reason
Refs

Enzyme compatibility
Not yet
Yes
Easier with one array in, one array out
#40 #84 #85

Benchmarking utilities (for users)
Not yet
Yes
Easier with one array in, one array out
#45

Testing utilities (for users)
Not yet
Yes
Easier with one array in, one array out
#45

Performance comparison
I'm gonna add AbstractDifferentiation as an extension to DifferentiationInterface, so that we can include its backends in our benchmark suite and compare.
The results will be posted here in the coming days.

Thanks for the summary. I will respond to each point below.

Regarding ADTypes.jl, AbstractDifferentiation.jl predates that package. But we can of course support their AD types with an extension if needed or vice versa.
The @primitive macro is a feature but it is not essential to use. You can use method implementation to define the behaviour for a new AD backend.
The fallback is no longer based on Jacobian.
Regarding the use of closures, their use may be reduced and improved in AD.jl. But we need specific examples where closures gave a sub-optimal performance or type stability issues. Also for most backends now, we encourage using the native implementation of each AD package for any exported AD.jl function. This means that closure fallbacks are only useful when the backend package doesn't provide an implementation for such a function. In this case, we can strive to improve the closure implementation. Specific issues and PRs are welcome.
Regarding being first order only, this is a strict limitation of DI.jl.
Regarding, having one vector in and one out, there is no reason why we need to support multiple inputs and multiple outputs in AD.jl if the backend package doesn't. We can start with a single input and single output version. In fact, the ForwardDiff extension assumes a single input and single output. Same response for the types.
Regarding caching and mutating functions, I am open to proposals. Perhaps the implementation in DI.jl can be used to design a caching and mutating API for AD.jl.
Regarding Enzyme support, if DI.jl can support Enzyme then I am open to contributing the features needed for that support back to AD.jl

I just updated the comparison to include the new features we added these past few weeks (mutating functions, second order, testing and benchmarking utilities)


Don't swap items at the same location (which isn't allowed)

See http://stackoverflow.com/a/33554684/1926015
Looks like the other swaps already ensure the indices are different

Thanks @jeffaburt ! :smile:
Hm... does the condition if i != j ever actually get hit?

Yep, it gets hit when you run the main file on the insertion sort.
My pleasure!
On Apr 13, 2016, at 9:13 PM, Jesse Squires<EMAIL_ADDRESS>wrote:
Thanks @jeffaburt !
Hm... does the condition if i != j ever actually get hit?
—
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub

thanks @jeffaburt ! :smile:


Application loader support

Adds convenience support for loader to the Application class.
const app = new PIXI.Application();

// Pause rendering
app.stop();

// Load some resources
app.loader
    .add('logo', 'images/logo.png');
    .load(() => {
       app.start(); // resume rendering
    });

Added

Adds loader property the Application class, e.g., app.loader.load()
Adds constructor argument options.sharedLoader to Application to opt-in to using the shared Loader.
Adds PIXI.loaders.shared as an alias for PIXI.loader (conforms to Ticker usage PIXI.ticker.shared).

Fixed

Fixes issue when excluding the loaders module npm run dist — -e loaders (deprecations were throwing issues for deprecated Resource, e.g. 'isJson`, etc).

@englercj Fair point. I re-added PIXI.loader.


Info

FORM DATA INITIALIZE
I can initialize data form by 'submission' input. Usually i set a json in the format {field: value}. The question is if is possible and how can design the form in order to group fields logically, so data could be: { user: {name: 'ssss', email: 'a@aa.com'},address: {street: 'sss', zip: '11'} }.

We're currently addressing a backlog of GitHub issues, and as part of this effort, some inactive issues may be marked as closed. This isn't a dismissal, but a step toward more efficient tracking.
If you feel the issue is still relevant, please re-open and we'll ensure it gets the attention it deserves. Your understanding is appreciated as we work to enhance our open-source responsiveness.


Arbitrum bridge notifications when claim is ready

Add notification when claim is ready
original mock:
https://www.figma.com/design/REOouo0sAuOhoD597yZEGE/rFOX?node-id=1018-2107&node-type=section&t=Bs5U4OZV6wyIsm5s-0
UX preferred by product would be to add a toast (@reallybeard to mock)

https://www.figma.com/design/REOouo0sAuOhoD597yZEGE/rFOX?node-id=1018-2107&node-type=section&t=Bs5U4OZV6wyIsm5s-0
above mock that was probably missed during implementation

Thinking something similar to our update app toast.
Need to align on copy from @twblack88


Use more iterators

As slicing makes a copy.
r? @typesupply

unrelated but, I just noticed the Color class has the python2-only __cmp__ method, which is ignored by Python3; the built-in cmp function is also gone in Python3...
I guess we need to replace the __cmp__ method with "rich comparison" methods...
http://python3porting.com/problems.html#unorderable-types-cmp-and-cmp

It doesn't make a lot of sense to compare colors as (r,g,b) tuples, I think. Maybe cmp should just be removed.

is it used anywhere?

I don't think so, maybe it was just put in because the parent class str implements comparison.

maybe it's used for sorting them, when serializing to UFO maybe, dunno

I think the idea of subclassing str is wrong in this case; a named tuple with a custom __str__ metod would have done the same job, without having to call _stringToSequence every time one gets an attribute...

maybe it's used for sorting them, when serializing to UFO

I don't understand what you mean by that. Either way, I think the semantics of tuple and string comparison are the same anyway (the compare test previously passed on both py2 and 3).

I guess you're right.

but I still think that it would make more sense for it to be a subclass of collections.namedtuple which takes either a string or tuple of floats, rounds the floats to 5 decimal position and stores them as such; and has a str method for pretty-printing it... We could do that another time maybe.

maybe it's used for sorting them, when serializing to UFO maybe, dunno

The string subclass is there because the validator in ufoLib expects color definitions to be string instances.  But, the object can't subclass tuple because ufoLib will choke. Thus, the struple was invented. If you have a better way to make a tuple subclass work in ufoLib, I'm 100% cool with getting rid of this hack.
The comparison function is there because, um, I don't know, it was fun to write?

Thanks Tal.
The PR looks good to me.

Let's merge it then


Slight grammar tweak

Changes "find the guide that suites your operating system" to "find the guide that suits your operating system"
Sorry. I know I'm a grammar Nazi.

That single e needs to be changed

Please direct this PR at review.


Doesn't run in Python 2.6

Your code doesn't work in Python 2.6.  Please add a warning in your documentation.

Hi Martin,
Thanks for reporting this issue. I'll have a look if I can make the code run under Python 2.6 and add supported-versions disclaimer to the documentation otherwise.
Yours,
Clemens

Setting up a Python 2.6 development environment:
sudo add-apt-repository ppa:fkrull/deadsnakes
sudo apt-get update
sudo apt-get install python2.6

virtualenv -p "$(which python2.6)" venv-2.6
. venv-2.6/bin/activate
pip install -r requirements.pip
pip install nose

It looks like there are three main reasons why the tests are failing:

String formatting requires explicitly named or numbered placeholders.
The gzip.open function doesn't work in the with statement.
The unittest.TestCase class lacks a bunch of assertion methods.

These problems are all quite easy to fix and don't affect the code quality much, so I'm happy to fix the issues and make the project Python 2.6 compatible.


Return File information directly with in load info

Currently we have some complex implementation on "Get filename". It require two calls through SPO apis.
It will better if we could have filename directly returned from the loadComponentInXYZ
Ref:
FluidFramework/contracts.ts at main · microsoft/FluidFramework (github.com)
FluidFramework/odspDriverUrlResolverForShareLink.ts at main · microsoft/FluidFramework (github.com)

To clarify, the ask it to put this info on the odspResolvedUrl info

Adding that this will also be useful for Outlook. We sometimes do not know the file type and end up showing the wrong icon, which leads to mis-matched branding. So this fix will help multiple teams if it is implemented.

@Czhang0727, @leeviana, can someone work directly with ODSP to make that happen?
That said, I'll point out that with both client & Prague Graph layer in ODSP involved in caching of snapshots, the only guarantee the system can provide is that you are getting back the name of the file that it was called some amount of time ago (which is likely counted in many days). Plus there is likely no way to return it through IOdspResolvedUrl, I doubt there is any guarantee that an object one of the driver classes operates is exactly same instance the factory got not a copy. I definitely see we are making copies as local modifications are made not to affect original object.
I doubt merging these things into TreesLatest is the right approach. Why not have a parallel call with TreesLatest (and work with ODSP to make it single call if needed) to get that data?

I don't think this would happen with the treelatest call, this is for the URL resolver ODSP calls that already occur to get file information.

I do not think we have that data anywhere in the system, including URI resolver.
@jatgarg - can you please glance?

Not currently, yeah. I think as you mentioned above we'd want to work with the ODSP team first to add this to the file info calls that the resolver is making (if not already there) and then the resolved info can expose it.

On create file path, we do have filename info but not on load calls(trees/latest). So we need to work with spo if we want to add that,

I'd suggest whoever needs this functionality to work with ODSP directly to come up with design here (and double check if this is something they can / want to expose. That said, I highly doubt we want to go this pat h for these reasons:

It would be stale (consider snapshot caching and the fact that we can load from 2-day old cache).
PUSH (i.e. on socket connection) is likely better place to get it, but I'd think Push does not know file name either and would need to talk to SPO, so there is not much value in proxying it through PUSH.
There needs to be some update story here (i.e. user working offline for a day, and then eventually connecting - I'd assume we would want to learn about rename happened during this time and refresh UX).

At the moment, this is just to low priority for platform side, and i do not see good story around how to expose this in generic way that makes sense to all services, so it might be worth keeping this topic outside of FF.

I don't think staleness/update story are concerns here. At least from OWAs perspective we only care about the file name because its the host's responsibility to show the correct icon for branding. There are several types of fluid components/loops that all hydrate and have different brand icons (.fluid vs .note for example).
We don't even need the full file name. Extension would be enough, if that is easier.

@kcurlett Teams doesn't care about staleness as well, however we would like the file name and the file extension, not just the extension.

as you probably know, the notion of file does not exist at Fluid Runtime layer. ODSP driver maps container instance to a file, driver interface is generic and not exposed back to host or runtime (in original form), so there is no easy way to ask driver-specific info.
I believe the problem at hand is much better solved in O365 eco-system (i.e. in FFX repo) by recording such info in the file itself and exposing it as a component. This gives you much more flexibility (info stored and exposed could be easily changed / extended in the future) and its uniform for all storages you might ever want to use. That's essentially "container creation properties" (if we want it to be generic). We could help by exposing generic property bag from container runtime, as Si is in the process of adding such concept to it (current PR is not exposing programmatic access to it, but this could be added in the future). This will not change the need to have some contract spelled out outside of FF repo (i.e. interpreting properties to have some meaning), but may simplify / not require unique storage.

The resolved URL interface is exposed back to the hosts and is how hosts today ask for driver specific information. Actually in the interface today I already see a field for filename. While resolving an ODSP driver URL, the ODSP resolver kicks off several odsp specific API calls that return ODSP specific information. I think the key point here is that we want this behavior to be consistent across usages of the ODSP driver with ODSP concepts. That way there's no secret ODSP handshake between Microsoft container developers who have implemented this interface vs not (and also no odsp specific code in code that isn't driver specific).

the ODSP resolver kicks off several odsp specific
I believe that number is zero. I might be wrong, but I've never seen it in traces / code.
The only place I see resolver doing network calls is OdspDriverUrlResolverForShareLink.getAbsoluteUrl(), but this is not done by driver itself (i.e. driver does not need it to boot a file). This resolver preemptively makes this call to speed up future calls, but nothing in driver depends / wats for it (i.e. resolved URI is returned right away with empty filename).

I believe filename is available only for create new scenario where it is provided by host. In all other cases it's "".
The only other place where I see driver doing more calls is if TreesLatest failed and we fallback to redeemSharingLink() flow.

Yes, and similarly I think if we attach a promise to the filename field in a similar manner to getAbsoluteUrl where it might eventually have the file name that would be sufficient for hosts. We do not need the file name to boot a file either, it's exactly similar to getAbsoluteURL.


Ubuntu 16.04 UNMET PEER DEPENDENCY<EMAIL_ADDRESS>

Hello.
I got only this error installing on Ubuntu.
UNMET PEER DEPENDENCY<EMAIL_ADDRESS>So. On npm start my CPU become a lil insane.
iowait turn arround 50% for 5 minutes.
Now all is ok.
Dev tool console reply only this.
/home/o/Documents/tools/black-screen/node_modules/react/lib/ReactDOM.js:75 Download the React DevTools and use an HTTP server (instead of a file: URL) for a better development experience: https://fb.me/react-devtools
When htop is launched I cannot click on content.
F1  to F10 have the same issue don't work.
I'll give a reply when i'll get some time for try to build it on Linux.

`➜  black-screen git:(master) npm i

<EMAIL_ADDRESS>preinstall /home/joaoc/Projects/misc/black-screen
npm prune

/

<EMAIL_ADDRESS>install /home/joaoc/Projects/misc/black-screen/node_modules/pty.js
node-gyp rebuild

gyp WARN download NVM_NODEJS_ORG_MIRROR is deprecated and will be removed in node-gyp v4, please use NODEJS_ORG_MIRROR
gyp WARN download NVM_NODEJS_ORG_MIRROR is deprecated and will be removed in node-gyp v4, please use NODEJS_ORG_MIRROR
gyp WARN download NVM_NODEJS_ORG_MIRROR is deprecated and will be removed in node-gyp v4, please use NODEJS_ORG_MIRROR
make: Entering directory /home/joaoc/Projects/misc/black-screen/node_modules/pty.js/build'   CXX(target) Release/obj.target/pty/src/unix/pty.o ../src/unix/pty.cc: In function ‘Nan::NAN_METHOD_RETURN_TYPE PtyFork(Nan::NAN_METHOD_ARGS_TYPE)’: ../src/unix/pty.cc:222:34: warning: ignoring return value of ‘int chdir(const char*)’, declared with attribute warn_unused_result [-Wunused-result]        if (strlen(cwd)) chdir(cwd);                                   ^   SOLINK_MODULE(target) Release/obj.target/pty.node   COPY Release/pty.node make: Leaving directory /home/joaoc/Projects/misc/black-screen/node_modules/pty.js/build'

<EMAIL_ADDRESS>postinstall /home/joaoc/Projects/misc/black-screen
npm run recompile

<EMAIL_ADDRESS>recompile /home/joaoc/Projects/misc/black-screen
export ELECTRON_VERSION=$(npm run electron-version --silent); HOME=~/.electron-gyp cd node_modules/pty.js; node-gyp rebuild --target=$ELECTRON_VERSION --arch=x64 --dist-url=https://atom.io/download/atom-shell

make: Entering directory /home/joaoc/Projects/misc/black-screen/node_modules/pty.js/build'   CXX(target) Release/obj.target/pty/src/unix/pty.o ../src/unix/pty.cc: In function ‘Nan::NAN_METHOD_RETURN_TYPE PtyFork(Nan::NAN_METHOD_ARGS_TYPE)’: ../src/unix/pty.cc:222:34: warning: ignoring return value of ‘int chdir(const char*)’, declared with attribute warn_unused_result [-Wunused-result]        if (strlen(cwd)) chdir(cwd);                                   ^   SOLINK_MODULE(target) Release/obj.target/pty.node   COPY Release/pty.node make: Leaving directory /home/joaoc/Projects/misc/black-screen/node_modules/pty.js/build'
npm WARN engineStrict Per-package engineStrict (found in this package's package.json)
npm WARN engineStrict won't be used in npm 3+. Use the config setting engine-strict instead.
npm ERR! Linux 4.2.0-30-generic
npm ERR! argv "/home/joaoc/.nvm/versions/node/v4.4.1/bin/node" "/home/joaoc/.nvm/versions/node/v4.4.1/bin/npm" "i"
npm ERR! node v4.4.1
npm ERR! npm  v2.14.20
npm ERR! code EPEERINVALID
npm ERR! peerinvalid The package<EMAIL_ADDRESS>does not satisfy its siblings' peerDependencies requirements!
npm ERR! peerinvalid Peer<EMAIL_ADDRESS>wants<EMAIL_ADDRESS>npm ERR! Please include the following file with any support request:
npm ERR!     /home/joaoc/Projects/misc/black-screen/npm-debug.log
➜  black-screen git:(master)
`

@silentwarrior try to use nvm
➜  ~ nvm --version                                                      [2.3.0]
0.31.0
➜  ~ npm --version                                                      [2.3.0]
3.8.8
➜  ~ node --version                                                     [2.3.0]
v4.4.3
➜  ~

➜  black-screen git:(master) npm start                                                        [2.3.0]

<EMAIL_ADDRESS>start /home/o/Documents/tools/black-screen
npm run compile && npm run watch-tsc | npm run watch-scss | npm run electron

<EMAIL_ADDRESS>compile /home/o/Documents/tools/black-screen
npm run cleanup && npm run compile-tsc && npm run compile-scss && npm run copy-html

<EMAIL_ADDRESS>cleanup /home/o/Documents/tools/black-screen
rm -rf compiled

<EMAIL_ADDRESS>compile-tsc /home/o/Documents/tools/black-screen
tsc

<EMAIL_ADDRESS>compile-scss /home/o/Documents/tools/black-screen
node-sass stylesheets/main.scss compiled/all.css > /dev/tty

Rendering Complete, saving .css file...
Wrote CSS to /home/o/Documents/tools/black-screen/compiled/all.css

<EMAIL_ADDRESS>copy-html /home/o/Documents/tools/black-screen
cp src/views/index.html compiled/src/views > /dev/tty

<EMAIL_ADDRESS>electron /home/o/Documents/tools/black-screen
electron .

6:57:49 PM - Compilation complete. Watching for file changes.

Removing the node_modules directory and then npm install should help. It's some caching issue.


HashSet.from(Iterable elements) creates a set ordered in unpredictable way.

Dart API Spec reads about HashSet.from(Iterable elements) constructor:
Creates a hash set as by new HashSet<E>() and adds each element of elements to this set in the order they are iterated.
This means that elements of the created set should be ordered in the same way as original Iterable object.
However, this is not so in some cases. For example, the following test example shows that elements from the same Iterable can be ordered in the different way from tun to run:
import "dart:collection";
main() {
  print(new HashSet.from([1, 2, 3, "string", null, []]));
}

Just run it several times and compare output.
Here are my results of several runs on my Windows desktop, I am using dart 1.21.0:
{1, [], 2, null, 3, string}
{1, 2, null, 3, [], string}
{1, 2, null, 3, string, []}
{1, 2, [], null, 3, string}
{1, 2, null, 3, string, []}
{1, [], 2, null, 3, string}
{1, 2, null, 3, [], string}
{[], 1, 2, null, 3, string}
{1, 2, null, 3, [], string}
{1, [], 2, null, 3, string}
If I print elements of the set using set.forEach(element)  construction, I get the same result: the order of the elements is unpredictable.

A HashSet is not required to iterate elements in the order they are added. A LinkedHashSet does that, but a HashSet doesn't have to, and indeed doesn't.
The "in the order they are iterated" does have an effect, which is why it's there - if two not-identical-but-equal elements are in the iterator, the one added first will be the one in the resulting set. We could probably remove that clause without anybody noticing, and just not guarantee anything about the order elements are added in, but as usual, we can't be absolutely sure nobody is depending on it.
Purely as a curious observation, if you look at the output, you'll actually see that it's fairly consistent. The only element that moves around is the empty list. That's because it's the only element that uses its identity hash code as its hashCode. The rest have the same hash code every time the program is run, and the HashSet is deterministic, so the only thing different between runs is where the empty list is placed in the hash table.

Maybe the following would make the dartdoc easier to understand:
https://codereview.chromium.org/2567393002/


binutils: fix an error handling bug in the Gold linker

Motivation for this change
Fixes #101490, a bug found in gold error handling, that causes gold to fail to link at all if built for musl, and the filesystem used doesn't support fallocate. (ZFS, for example.)
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[ ] Fits CONTRIBUTING.md.

@utsl42 Can you resolve the merge conflict?

Please do not merge the target branch into PRs and rebase and resolve the merge conflict.

@ofborg eval

Have we tried upstreaming this fix? If so, it would probably be good to link to that effort in a comment, so we know when the patch can be removed.

@utsl42 please fix the merge conflict.

@utsl42 please fix the merge conflict.


NixOS fails to mount partitions with "label=partitionlabel" because it is wrongly using by-label instead of by-partlabel

Describe the bug
NixOS can't find partitions via label because it tries to use the paths /dev/disk/by-label/mypartition whereas NixOS mounts via /dev/disk/by-partlabel/partition
Steps To Reproduce
Steps to reproduce the behavior:
Use swapDevices = [ { label = "myswap"; } ]; with "myswap" being the label set on on the swap partition
System then complains about "looking for /dev/disk/by-label/myswap"
Expected behavior
System mounts the swap partition and boots without error
Fix
label = should use by-partlabel, not by-label.

Strongly disagree. You cannot mount a partition (partlabel), only a filesystem (label). So the natural meaning of .label should be the FS label. Your suggestion is the far more surprising behaviour.
If you want to use partlabel, you'd have to extend the fileSystems submodule.

You cannot mount a partition (partlabel)

I mean, that's literally what I'm doing to workaround this bug, via device = /dev/disk/by-partlabel/mypartition
Perhaps the name of .label should be changed to something less ambiguous.

. .label means label, they're quite literally the same word, I fail to see the ambiguity. If you'd like .partlabel perhaps a PR is in order?
... you cannot see how by-label and by-partlabel are horribly ambiguous?
Not to mention that by-label is wrong, its called partition name, precisely to prevent this ambiguity and confusion.

calling by-label a label is wrong these days, its called partition name

I think you're confused, by-label is not a property of a partition, so "partition name" would be horribly wrong. https://www.mankier.com/8/mke2fs calls it a "volume label".
Anyway, think I've made my original point clearly enough, if others feel differently I leave it up to them.

I am aware that by-label is a property of GPT whereas by-partlabel lives in the filesystem.
The NixOS manual itself suggests "root-partition" as an example label.
Let's just take Gparted as the lead here, I trust they have thought this through much more deeply than either of us :)
by-label is what corresponds to Name in Gparted, and by-partlabel corresponds to Label in Gparted.
NixOS is flouting this convention which leads to users making assumptions and getting into trouble.
Note that fileSystems.<name>.encrypted.label also use the label terminology.
Perhaps fileSystems.label should be renamed fileSystems.gptlabel and partlabel should become fileSystems.fslabel to prevent any future confusion.

.label is too ambiguous to someone glancing over it
For me it was lucky because it was just my swap partition, but I imagine someone in the future will also assume .label refers to by-partlabel (which I feel is not a gigantic leap to make), footgun themselves and lose access to their root partition. Then they'll either need to be comfortable in SystemD's emergency shell, or have a LiveUSB at the ready.

True, these names can be confusing. However, in NixOS it's not that much of a problem: you can just select the previous generation in the bootloader (just with arrow keys in systemd-boot, a separate menu in GRUB IIRC) and boot to the last good configuration. Also, in the case of swap, you can do a nixos-rebuild switch which would just show an error without crashing the system if your labels are wrong.

2. .partlabel doesn't exist yet
Like mentioned by @eclairevoyant, this needs to be written. I might check out how .label works and take it from there

It doesn't seem like a very popular feature, but don't hesitate to try to implement it. You'll get acquianted with Nixpkgs module system in the process! But IMO it should be a separate option: it won't do good to guess too much here.

3. encrypted.label also uses .label
This is much less of an issue / priority as here the label refers to /dev/mapper/<label> and as I understand (wrongly?) that's the only way to really use a label with an encrypted device, but I feel it should be included for posterity as we're already talking about .label being aspecific

Well, this label is really confusing, because it doesn't have anything in common with filesystem labels :smile: It's connected with how device-mapper works. It's the transparent block layer between a physical device (or devices) and some useful representation as a block device inside of /dev/mapper/ with arbitrary name ("mapped name"), and that device can be mounted as a filesystem. Two common applications are LVM (Logical Volume Manager, can be used to merge several physical drives into a single physical partition, /dev/mapper/<volume-group-name>-<volume-name> is a block device of a specific volume) and dm-crypt (usually used with LUKS, the block device in /dev/mapper is the unencrypted partition). So in case of LUKS, the manual procedure of mounting might look like this: unlock the encrypted partition with cryptsetup luksOpen /dev/sda1 nix_rocks and mount it with mount /dev/mapper/nix_rocks /mnt/data. Note that the mapped name (in this case nix_rocks) can be replaced with anything you like, and that's the label in swapDevices.*.encrypted.label and fileSystems.<name>.encrypted.label.
However, do note that in the case of LUKS-encrypted root, you'd like to do it a bit differently. First, specify it to be unlocked in initrd via boot.initrd.luks.devices."nvme0n1p6_crypt".device = "/dev/disk/by-uuid/<uuid>"; (or using labels). Then you can mount it using its mapped name (nvme0n1p6 here) via fileSystems."/" = { device = "/dev/mapper/nvme0n1p6_crypt"; ... }; (you can use the unencrypted filesystem's UUID here too, that's what nixos-generate-config does). This way you'd have all necessary pieces ready at appropriate times during boot.


Pantum M6559NW remains in 'printing' state even after a document is printed

Hello,
I'm having an issue with a Pantum M6559NW printer. When I send a print job via IPP or the local network, the printer successfully prints the document. However, the printer remains in 'printing' state for 60 seconds, causing a delay for subsequent jobs. So, when the printer exits the 'printing' state, the corresponding 'job finished' message appears in Ubuntu, starting the next job. Interestingly, I found that pressing the 'cancel' button on the printer immediately completes the job, without any further delays or issues. Furthermore, canceling the job by terminal has the same effect, although Ubuntu displays the 'job canceled' message.
After reviewing the ipp-usb logs, it appears that CUPS attemps to make multiple HTTP requests to check the job completion state. These repeated requests are shown in 232b-5e20-CH8D003284-Pantum-M6550NW-series.log as follow:
08-04-2023 01:07:03: > HTTP[028]: POST http://localhost:60000/ipp/print
08-04-2023 01:07:03: > HTTP[028]: request body: got 342 bytes; EOF
08-04-2023 01:07:03: > HTTP[028]: body is small (342 bytes), prefetched before sending
08-04-2023 01:07:03: > HTTP[028]: HTTP request header:
08-04-2023 01:07:03: >   POST /ipp/print HTTP/1.1
08-04-2023 01:07:03: >   Host: localhost:60000
08-04-2023 01:07:03: >   User-Agent: CUPS/2.4.1 (Linux 5.19.0-38-generic; x86_64) IPP/2.0
08-04-2023 01:07:03: >   Content-Length: 342
08-04-2023 01:07:03: >   Content-Type: application/ipp
08-04-2023 01:07:03: >   Date: Sat, 08 Apr 2023 04:07:03 GMT
08-04-2023 01:07:03: >
08-04-2023 01:07:03:   USB[1]: connection allocated, 2 in use: --- a-- ar-
08-04-2023 01:07:03:   HTTP[028]: connection 1 allocated
08-04-2023 01:07:03: > USB[1]: write: wanted 548 sent 548 total 548
08-04-2023 01:07:03: < USB[1]: read: wanted 4096 got 215 total 215
08-04-2023 01:07:03: < HTTP[028]: POST http://localhost:60000/ipp/print - 200 OK
08-04-2023 01:07:03: < HTTP[028]: HTTP response header:
08-04-2023 01:07:03: <   HTTP/1.1 200 OK
08-04-2023 01:07:03: <   Cache-Control: no-cache
08-04-2023 01:07:03: <   Connection: keep-alive
08-04-2023 01:07:03: <   Content-Length: 239
08-04-2023 01:07:03: <   Content-Type: application/ipp; charset=utf-8
08-04-2023 01:07:03: <   Server: Mrvl-R1_0
08-04-2023 01:07:03: <   X-Content-Type-Options: nosniff
08-04-2023 01:07:03: <   X-Frame-Options: SAMEORIGIN

Could it be the printer stays in 'printing' state because of these requests? Apart from this, something noticeable is that the server responds to all these requests with the Connection header in keep-alive, even though I attempted to use ipp-usb's quirks to force the printer to close the connection. To rule out a printer issue, I printed a test document from my phone, which completed without any delays or issues. Furthermore, this probem does not happen with the native driver.
I experimented this issue in Ubuntu 22.04 and Ubuntu 22.04. For the latter case, the CUPS version is 2.4.1op1-1ubuntu4.1.
Please let me know if you require more information, or if there's anything I can do to resolve this issue.

gustingonzalez Check if the printer is using the correct driver. Make sure that you have installed the correct driver for your printer model and that it is configured properly in CUPS.

@p21nc3, although the native driver works fine, the problem occurs when using the driverless approach, via IPP.

IIUC the issue happens with IPP, regardless over USB or network, but then I see a IPP-USB log - have you tried it via ethernet or wifi? It would be great if you set it over network and tested it, so I can rule out ipp-usb.
In any case, there is a link in issue template - https://github.com/OpenPrinting/cups/blob/master/REPORTING_ISSUES.md - please follow it and provide the requested data.

@zdohnal, thanks for the response.
I've tested the printer over the network and happens the same issue.
Below are the required data:

Ubuntu 22.04.2 LTS (but tested on 20.04 too, with same problem).
Cups version 2.4.1op1-1ubuntu4.1
N/A
When a document is printed, the printer remains in 'printing' state for 60 seconds, causing a delay for subsequent jobs.
M6559NW
Done.
Done.
Done.
Here is the error_log.txt and the journalctl log.txt.

lpstat -e
Pantum_M6550NW_series_3D8C80_USB
lpstat -t (the output is in spanish):
el planificador de tareas se está ejecutando
no hay un destino predeterminado del sistema
dispositivo para Pantum_M6550NW_series_3D8C80_USB: implicitclass://Pantum_M6550NW_series_3D8C80_USB/
Pantum_M6550NW_series_3D8C80_USB aceptando peticiones desde sáb 15 abr 2023 18:22:36
la impresora Pantum_M6550NW_series_3D8C80_USB está inactiva.  activada desde sáb 15 abr 2023 18:22:36

lpinfo -v:
network beh
file cups-brf:/
network ipp
network lpd
network socket
network https
network http
network ipps
network ipp://Pantum%20M6550NW%20series%5B3D8C80%5D%20(USB)._ipp._tcp.local/

Pantum_M6550NW_series_3D8C80_USB.ppd.txt
12. The problem ocurrs with all tested files.
13. d00245-001.txt
14. That problem happens with LibreOffice, Document Viewer, printing from terminal, etc.

@gustingonzalez please provide the requested data when you print over the network and without cups-browsed (your printer is installed as implicitclass, which means it is installed via cups-browsed), so we can narrow the issue.
So it would be great if you turned off cups-browsed service, removed Pantum_M6550NW_series_3D8C80_USB printer if it still exists, unplug USB cable, use network connection (your printer seems to be in your local network, so you don't have to install it at all and it is available in lpstat -e), reproduce the issue via network and provide error_log with debug messages, attr.log and network capture via wireshark.


Support for CDK 2

Thanks for this library, it's pretty handy. Any chance you can dedicate sometime to support CDK v2

https://github.com/masahirompp/aws-cdk-webpack-lambda-function/pull/20

@muhamadto Thanks for your PR. I've merged the pull requests and released them. please use<EMAIL_ADDRESS>

@masahirompp no, thank you! I'm using your library for building a template for CRUD api using lambda and apigateway. Your work is so helpful.


[#3373] Document how we work with rules_go, gazelle, and update-deps

resolves #3373

Looks great! Very helpful for new contributors.


[#994] Fix Core BB service token support in events

Description
Please provide a summary of the pull request and the issue it fixes. Please add necessary details, context, dependencies, explanation of when review is needed (see next section), etc.
Fixes #994
Review Time Estimate
Please give your idea of how soon this pull request needs to be reviewed by selecting one of the options below. This can be based on the criticality of the issue at hand and/or other relevant factors.

[ ] Immediately
[ ] Within a week
[x] When possible

Type of changes
Please select a relevant option:

[x] Bug fix (non-breaking change which fixes an issue).
[ ] New feature (non-breaking change which adds functionality).
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected).
[ ] Other (any another change that does not fall in one of the above categories.)

Checklist:
Please select all applicable options:

[x] I have signed the Rokwire Contributor License Agreement (CLA). (Any contributor who is not an employee of the University of Illinois whose official duties include contributing to the Rokwire software, or who is not paid by the Rokwire project, needs to sign the CLA before their contribution can be accepted.)
[x] I have updated the CHANGELOG.
[x] I have read the Contributor Guidelines.
[x] I have performed a self-review of my own code.
[ ] I have commented my code, particularly in hard-to-understand areas.
[ ] My change requires updating the documentation.
[ ] I have made necessary changes to the documentation.
[ ] I have added tests related to my changes.
[x] My changes generate no new warnings.
[x] New and existing unit tests pass locally with my changes.
[x] Any dependent changes have been merged and published in downstream modules.

@shurwit, I have tested this with the Core BB service token, and it's working fine in the local development machine. The GET /events response did not contain any private group events. I think we may need to do further testing after deployment to DEV.
Could you please fix the merge conflicts in the CHANGELOG and move the change entry to the unreleased section? I think we can merge this PR after that. Thanks.

Hi, @bingzhang, Could you please deploy the latest Events BB to the DEV instance and test this change in the deployed instance when you get a chance? I have shared the details of testing via Slack. Thanks.


No robot code execution - FMS or roboRIO related instead?

We are Team 8 at Silicon Valley Regional. We've been having issues in some (not all) of our qualification matches today, where according to the driver station, there is robot code and the communications are good, however no robot code runs (no autonomous, no print statements from our code, no control/teleop, so no code appears to be executing).
We aren't sure exactly what the issue was, but we were wondering if this lines up with any fault that can happen when Strongback is used incorrectly? We thought disabling Strongback (strongback.disable()) might cause this, as the FMS disables our robot shortly between auto and teleop modes, and we only start Strongback in robotInit, so it may have no restarted Strongback. However, at Central Valley Regional this was not an issue, so we aren't sure why this works.
Mid-match, restarting robot code from the driver station fixed the issue, restoring us to normal teleoperation.
If it's not a Strongback issue, we'd appreciate any information you may know about how this relates to the Field Management System or roboRIO instead.

@niharmitra, If the FMS disables your robot between auto and teleop, this could definitely lead to a problem if your teleopInit() method doesn't call Strongback.restart().
Your robot code has to be able to handle any combination of being initialized, disabled, and started in autonomous and/or teleop.

In robotInit(), set up Strongback components you're going to use but do not call start() or restart().
In disabledInit() always call Strongback.disable()
In autonomousInit() always call Strongback.restart() first.
In teleopInit() always call Strongback.restart() first.
In testInit() always call Strongback.restart() first.

Note that three of the autonomous, teleop and testing mode initialization methods call Strongback.restart(), which will kill any commands that might have been started but not stopped/cancelled in a preceding mode, and ensures that all of the Strongback components are running and ready to go. You can see these calls in our team's code from this season.
Our robot did have problems in the final matches in our regional when our robot appeared (via the robot signal light) to have lost power completely. Fortunately, it booted immediately, though this did cost us valuable 20 seconds during the match. We believe that our main breaker was the problem, since in the pit we could replicate the problem by simply wiggling the breaker body (not touching the actual lever or wires). However, this is clearly a different phenomenon than you describe.

@niharmitra Were you ever able to get this working? I know it's months too late, but I know @AGausmann had stopped by your pit during the 2016 World Championships, and I thought he said you were running okay.
We'll close this issue without any changes if this is not a problem anymore.

We believe that the issue may have been related to some issue with Disabled. If we enabled and then disabled the robot in queue, then played a match, we would need to restart the roboRIO in match. When we restarted the roboRIO right before playing the match, we didn't experience this problem. So while we weren't able to ever precisely determine the problem, we did find that workaround.

Starting in Strongback 1.2, we rewrote the logic for when and how the Strongback thread runs the various services and how the start(), restart(), disable(), and stop() methods work. The disable()method will kill all commands but keeps the services running (ready to restart quickly), while stop will stop the services. Either way, start() and restart() are identical now and both will get Strongback running again after being disabled or stopped. See #85 for details.
Anyway, it's far more efficient now and we've fixed some strange behaviors 1.1.x versions had. But whatever version of Strongback you use, be sure to test repeatedly disabling and re-enabling the robot with Strongback 1.2 or later (including the newer 2017.x versions).


Gathering persistent logs

Signed-off-by: Jorma Virkkunen<EMAIL_ADDRESS>

I have nothing to add at this point.


Added logic to cleanup the apt cache.

This reduces the image size by ~21mb.  This resolves #5.
@naamunds

I didn't realize the apt cache was so large!

LGTM


Add version numbers to dependencies in Cargo.tomls

Motivation
To publish on crates.io all package dependencies specified with paths need to also specify a version that will match the crates.io version of the dependency. This PR adds those version numbers.
Have you read the Contributing Guidelines on pull requests?
Yes
Test Plan
Only cosmetic changes, existing CI should suffice

CC @bmwill

:umbrella: The latest upstream changes (presumably 253d3919b44da1d6032b85e724c18b669d697f5c) made this pull request unmergeable. Please resolve the merge conflicts.

@bors-libra r+

:pushpin: Commit 7028da2 has been approved by bmwill

:hourglass: Testing commit 7028da2a6b312e8bafb3b0ee17ef99e0485914bf with merge 4771611c2a6f6af69150c0030a2a902b8ebe1d6c...

:sunny: Test successful - checks-circle_commit_workflow
Approved by: bmwill
Pushing 4771611c2a6f6af69150c0030a2a902b8ebe1d6c to master...


Ignore attribute options. For example you don't care about the author

Example cli:
-i description,task

Absolutely - It would be greatly helpful to see this feature.
In light of issue #32 , I would like to have an initial set of usage doc.md for my roles and playbooks - which carries author info & useful description. Not the tasks (in the interest of consistency) - because the aforementioned issue causes me to have tasks for some playbooks while none for others in the doc.


support for displaying fiat amounts

Closing in favor of https://github.com/getAlby/bitcoin-connect/pull/164


Simple JS-only example

I couldn't get this to work. I opened the example musicxlm file, but nothing displayed.
I was hoping to build a super-simple app like this: https://github.com/abalter/ABCJS-Minimal-Editor-Notation-Player

what was the error message?
try using indexSimpler.html.
Also, read the readme.

Right! I didn't catch that. I was looking for build instructions on the original repo and didn't see any.
I got it to work.


Update primitives to return candidArb objects

closing in favor of https://github.com/demergent-labs/azle/pull/1438


Tags for YAML format do not work

As described in Limitations:

It's not possible for now because there is no way to distinguish one tag from another.
Since this is the third mention of the same limitation, I will leave this issue open.

I'd like this too. I prefer having tags only in the YAML property but want them coloured


Deploy to a local IIS cluster instead of Azure

I was wondering if it is possible to deploy the backend to a local environment or if anyone was planing on developing that option.  My university currently does not have the ability to deploy this application to azure but we would love to set it up in our local vsphere environment.

@ncecere shouldn't be any issue with deploying to IIS directly; the default option when running locally is IIS Express.
The challenge is DBMS selection. In the current state we're using Azure CosmosDB because it works at a large scale. I strongly recommend looking at the Changing DBMS wiki article for instructions on instrumenting a different DBMS (e.g. SQL Server).


Receiving Object in Options

Bug Report
I'm sharing an image URL which is clear doubt what issue I faced.
I'm getting object on select option value in datagrid
Issue Description
please check this
https://prnt.sc/959mFV1m_3A4
Bagisto Version

V. 1.4.1

Steps To Reproduce
I have datagrid listing and I want select option value but value contain object
Actual Result
getting object not value
Expected Result
expecting value="update"/"delete" not [object object]

Hi @vtaskme
We are already talking about this over the ticket. so I am closing this issue from here.

Hello @Sanjaybhattwebkul ,
why did you close this ticket, I'm not satisfied with your answer, kindly solve my issue.
I'm expecting resolution not clarification.

Hello @Sanjaybhattwebkul
Link
This is my issue related chats.
your support team is not suppoting, They are selling their services.
Kindly improve your support.


Extensions: Tiling Assistant

This is actually coming in Ubuntu, but it approximates the direction we want to go upstream in GNOME as well. While it's not “true” tiling (Mutter doesn’t know about the tiling, and thus doesn’t style windows with their tiled states), it could be helpful as it adds two features I love: quarter tiling plus tiling suggestions (like Windows Snap Assist).
https://extensions.gnome.org/extension/3733/tiling-assistant/
I'm testing it a bit before suggesting default settings, but it could be interesting to include.

Hello, I like the extension but it has one issue that needs to be addressed on multimonitor systems. I will report it soon on the project itself.
Basically it prompts for windows from all monitors meaning that the workflow of keeping a window stuck on the non-primary monitor gets partially broken by this. This is especially evident since it might be the first window to get suggested.
It also has some limitations that are related to some stuff being handled by mutter especially. I will write a more complete report of usage at a later time.

Another aspect that should be considered is that this extension alters the distance at which the tiling activates, at least on my dual-monitor setup. I'm going to report this to the extension, hopefully soon enough.
Edge Test.webm

Another direction: https://github.com/DEM0NAssissan7/mosaic is an extension that's being developed to test some of the recent GNOME design work around window management. I haven't tried it yet, but once we feel it's generally usable, we could consider including it instead.

It's great to see interesting and innovative solutions to an old problem being taken into consideration and approached so quickly; I've tried it, it's still in very early development but this could surely be very interesting. I will be testing it on both my laptop and dual monitor setup whenever it reaches some stability.


Utils API

A new API with some methods to help the access on the firebird context variables.

db_name

[x] SimpleConn
[x] Conn

engine_version

[x] SimpleConn
[x] Conn
[x] impl Cmp
[x] impl Ord

Pull Request Test Coverage Report for Build 442246096

-18 of 43 (58.14%)  changed or added relevant lines in 4 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-13.5%) to 66.86%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

examples/sys_infos.rs
0
7
0.0%

src/utils.rs
22
33
66.67%

Totals

Change from base Build 419497767:
-13.5%

Covered Lines:
2419

Relevant Lines:
3618

💛  - Coveralls

Pull Request Test Coverage Report for Build 442246096

25 of 43 (58.14%)  changed or added relevant lines in 4 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-13.5%) to 66.86%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

examples/sys_infos.rs
0
7
0.0%

src/utils.rs
22
33
66.67%

Totals

Change from base Build 419497767:
-13.5%

Covered Lines:
2419

Relevant Lines:
3618

💛  - Coveralls


Error: compile command failed due to signal 6, Assertion failed: (false && "unhandled reference"), function passReference, file SourceEntityWalker.cpp, line 834.

Description
While building a dependency of the project the compiler throws an error with this code:
public init(
    _ keyPath: DefaultValues.KeyPath<Value>,
    lifespan: Lifespan = .temporary,
    scope: Scope = .local
) {
    self.dependency = Dependency(keyPath, lifespan: lifespan, scope: scope)
}

public final class DefaultValues {
    public typealias KeyPath<Value> = Swift.KeyPath<DefaultValues, Value>
}

While Inject builds alone, it is does not as a dependency of the Decide in this particular environment,
It does builds on (Xcode 14.1 (14B47b, Apple Swift version 5.7.1 (swiftlang-<IP_ADDRESS>.3 clang-14<IP_ADDRESS>)) so there's no issue building the same code on my local machine.
Error unfortunately doesn't give any insight what went wrong:

here's the link to the code that failed to be hanled by swift-frontend
https://github.com/MaximBazarov/Inject/blob/76e5d0d828b34c80e820e213e61309d4801c6788/Sources/Injected-PropertyWrapper.swift#L38-L58
Build Logs
Failed step GHA
2022-12-01T13:00:58.5285180Z 1.	Apple Swift version 5.7.1 (swift-5.7.1-RELEASE)
2022-12-01T13:00:58.5286700Z 2.	Compiling with the current language version
2022-12-01T13:00:58.5288010Z 3.	While walking into decl 'Injected' (at /Users/runner/work/Decide/Decide/.build/checkouts/Inject/Sources/Injected-PropertyWrapper.swift:38:1)
2022-12-01T13:00:58.5289240Z 4.	While walking into body of 'init(_:lifespan:scope:)' (at /Users/runner/work/Decide/Decide/.build/checkouts/Inject/Sources/Injected-PropertyWrapper.swift:52:12)
2022-12-01T13:00:58.5292360Z Stack dump without symbol names (ensure you have llvm-symbolizer in your PATH or set the environment var `LLVM_SYMBOLIZER_PATH` to point to it):

Steps to reproduce

Checkout git@github.com:MaximBazarov/Decide.git branch: decision-execute
swift test -v

Expected behavior
It compiles and runs tests.
Environment

Apple Swift version 5.7.1 (swift-5.7.1-RELEASE)
Compiling with the current language version
While walking into decl 'Injected' (at /Users/runner/work/Decide/Decide/.build/checkouts/Inject/Sources/Injected-PropertyWrapper.swift:38:1)
While walking into body of 'init(_:lifespan:scope:)' (at /Users/runner/work/Decide/Decide/.build/checkouts/Inject/Sources/Injected-PropertyWrapper.swift:52:12)

Swift compiler version info: Apple Swift version 5.7.1 (swift-5.7.1-RELEASE)
Xcode version info: Xcode 14.0.1
Deployment target: x86_64-apple-macosx10.15.4

Additional info

Inject
Inject-main.zip
GitHub

Decide (Fails to build Inject)
Decide-decision-execute.zip
GitHub

It does builds on (Xcode 14.1 (14B47b, Apple Swift version 5.7.1 (swiftlang-<IP_ADDRESS>.3 clang-14<IP_ADDRESS>)) so there's no issue building the same code on my local machine.

Am I correct in making out that this issue reproduces with Xcode 14.0.1, but not with Xcode 14.1? In the environment section the specified Xcode version is 14.0.1 and the specified Swift version is 5.7.1, but to my knowledge Xcode 14.0.1 ships with Swift 5.7.0.

Thank you very much, that was the issue indeed.


[WallmineNewsBridge] Add bridge

Adds bridge for wallmine.com's news section. Returns the latest 10 articles. Closes #2027

gj as usual!


Getting this error  'configuration.containsKey('provider')': is not true. Please provide a solution. Also googlepay button not visible.

add this provider type in json file.   "provider": "google_pay", This has fixed my issue


Some feature layers are not loading after building app (dojo 3.31)

I am reporting an issue with

[ ] TypeScript definitions
[X ] another resource in this repository

I took the dojo (3.x) sample and added below feature layer to map. After building the application the below feature layer is not rendering on map.
var featureLayer = new FeatureLayer("https://services.arcgis.com/V6ZHFr6zdgNZuVG0/ArcGIS/rest/services/socal_precincts_points_2008/FeatureServer/0");
featureLayer._hasLegend = true;
map.addLayer(featureLayer);

Do i need to include any additional package to display PBF format layers?
After build i am able to view this featurelayer https://services.arcgis.com/V6ZHFr6zdgNZuVG0/ArcGIS/rest/services/superflightsWPoints/FeatureServer/0
But, this layer is not rendering and not seeing any error message in console or network tab. https://services.arcgis.com/V6ZHFr6zdgNZuVG0/ArcGIS/rest/services/socal_precincts_points_2008/FeatureServer/0

Still looking into this issue at the moment. It's just odd that it works unbuilt, but not built. Tricky one to track down. Thanks!

Thanks @odoe for looking this issue. Will wait for your update.

After disabling webgl, i am able to view the layer.
"esri-featurelayer-webgl": 0

@odoe  Did you get any chance to test this issue? Please let me know if you found any solution.

This will be fixed in the next release in early April

OK thanks


Use commands config in help system

Instead of using a hard coded array of commands (which needs to be maintained separately) we now use the commands config.
This would resolve #39.

👀  @blankenshipz - it ended up being a little simpler than we thought. 😄

:+1: :shipit:

Merged offline.


How to use two links from the same query?

await deep.insert([
    {
    type_id: typeTypeLinkId,
      in: {
        data: {
          type_id: containTypeLinkId,
          from_id: packageLinkId,
          string: { data: { value: 'A' } },
        },
      },
  },
  {
    type_id: typeTypeLinkId,
      in: {
        data: {
          type_id: containTypeLinkId,
          from_id: packageLinkId,
          string: { data: { value: 'B' } },
        },
      },
  },
  // Link with from_id A and to_id B
  // ???????
]);

If you mean in a single query, than we need support these:
https://github.com/graphql/graphql-spec/issues/375
https://github.com/graphql/graphql-spec/issues/377
https://github.com/graphql/graphql-spec/issues/583


upgrade react version & bump to version 0.0.5

Hi, I am using your package and need to use node v18. So please help me to review and publish a new version. Thanks so much

Any idea when 0.0.5 will be released?


Fix typo in example code

Coverage remained the same at 80.952% when pulling 6993ccbc4db874024f8c9eb5dabfdf17a66f53dc on 44px:patch-1 into 72519ea25ba79da6c7a5ddfb1350df08cadbbf0e on Kikobeats:master.

Thanks!


Offer a way to select a subset of kafka partition in a kafka source

The objective would be to allow having a larger indexing throughput by running K indexing pipelines for a single index.
The selector coudl be k % N, or a list of partitions maybe?

Why don't we just remove the manually partition assignment?
Set group.id with the same ID across multiple indexer, thus consumergroup bases partition assignment can do the same things for us

Good question. I think it might be surprisign that we do not rely on consumer groups at all today, and we do not rely on kafka to store checkpoint information.
There are two reasons for this:
The first one is that we want to handle more sources than just kafka, and some of these source do not offer the concept of consumer group. Kinesis for instance... But also files etc.
The second reason -which is more about why we don't use kafka transaction and have kafka deal with checkpoints- is that we want to offer exactly-once semantics atomically and for the entire pipeline up to publishing.
Publishing a split requires interacting with a metastore (today write a file on S3 or postgresql).
Building exactly once processing by creating a contraption that atomically publishing AND commits a kafka transaction together is much more complex than what is done today.

The first one is that we want to handle more sources than just kafka, and some of these source do not offer the concept of consumer group. Kinesis for instance... But also files etc.

That's great, but every source has it's own pros, we should take the advantage of them while we intergrate them, other than fallback to their version 1.0, WDYT?

The second reason -which is more about why we don't use kafka transaction and have kafka deal with checkpoints- is that we want to offer exactly-once semantics atomically and for the entire pipeline up to publishing.
Publishing a split requires interacting with a metastore (today write a file on S3 or postgresql). Building exactly once processing by creating a contraption that atomically publishing AND commits a kafka transaction together is much more complex than what is done today.

IMO, msg consumed from source and acked for the source, then source has done it's duty. the exactly-once semantics should take care within the pipeline itself or at split level, the source shouldn't be accessed anymore.

That's great, but every source has it's own pros, we should take the advantage of them while we intergrate them, other than fallback to their version 1.0, WDYT?

This would be a more interesting debate if there was one pro to using kafka consumer group in Quickwit. I see none.

@mxlxm  IMO, msg consumed from source and acked for the source, then source has done it's duty. the exactly-once semantics should take care within the pipeline itself or at split level, the source shouldn't be accessed anymore.

Anything can happen between the moment when the source delivered its message and a split was actually published.
From the quickwit user point of view, the solution you are describing is "at most once" delivery, which is rarely what people want  (usually people want at least once)

The selector coudl be k % N
looks good enough to select a subset of kafka partition.
Publishing a split requires interacting with a metastore (today write a file on S3 or postgresql).
how do we plan to maintain the partation:offset cross the K indexing pipelines? store the information in metastore?

It is stored in the metastore.

The selector coudl be k % N

can we use something like consistent hash? If we use  k % N, when there's some infra changes like remove/add in indexer node in the cluster, there will be a lot partition will be relocated to other nodes.

Something else that could be considered here is that it should be possible to use the existing Kafka Consumer group logic without storing the offsets in Kafka. This will allow the usage of the group and rebalancing logic that already exists but you simply never call commit on the consumer it self.
For this to work and maintain exactly-once semantics you have to hook the rebalance events on the consumer and correctly handle the dynamic partition assignments when a rebalance occurs. I believe the rust rdkafka lib exposes everything required for this.
The approach is something like this.

Create a consumer with auto commit and offset storage disabled.
Add hooks for the rebalance events
Subscribe to the group
Rebalance events will provide partition assignments

use the metastore offset to seek assigned partitions to the latest offset.

Start reading using the standard Kafka APIs
At each checkpoint store the offsets in the metastore
If a rebalance occurs while split creation is in progress and partition assignments change -> the in progress split will have to be invalidated and restarted on the latest assignments.

In a correctly functioning system this should be very rare

This should allow running N ingest nodes with exactly-once semantics, HA and dynamic scalability without having to implement the clustering manually.
In the metastore it will require a separate table for the offsets with 1 row per partition and the following fields.

source
topic
partition
offset

The best is to return an anyhow::Error, the framework will kill the other actor for you and log properly

@guilload is that in your radar?

Yes, I'm keeping an eye on this. I want to complete my ongoing work on k8s and retention before.

I've started looking at integrating this. I think I have it mostly mapped out but we'll see how far I get.

If a rebalance occurs while split creation is in progress and partition assignments change -> the in progress split will have to be invalidated and restarted on the latest assignments.
In a correctly functioning system this should be very rare

just curious how could quickwit handle this condition?  how did the indexing pipeline know there's an assignment change on the partition? Pass the change message to pipeline? then let actors monitor the change message, if the partition is reassigned, then return a anyhow::Error? @kstaken do you have any idea?

I'll most likely use a messaging channel between the rebalance callback and the kafka actor.

I created a specific ticket for your solution @kstaken

I am closing this generic issue in favor of more specific ones.


How i can hidde the params.about.button ?

Hi!
I'm new user for your template, i need to hidden the about button, when i try to comments with # , the button don't hidden..., how i can do it for hidden button?
Regards,
Pablo

@psilvao I was able to hide the "About" download button by adding # to the start of four lines of the config.toml file.  These four lines then look like
#        [params.about.button]
#            text = "Download theme"
#            link = "//github.com/digitalcraftsman/hugo-freelancer-theme/archive/master.zip"
#            icon = "download"

and the "About" button no longer appears on my webpage.

After commenting out [params.about.button], I still see a blank button:


Temporary increase wait time for state changes

This is an attempt to temporarily fix failing macos test job on CI - an
underlying regression makes the tests not finish within previously working
constraints, particularly in the rollover case.

bors r+


Fixes Issue#51

Created a comment in the file that needs to be changed throughout this sprint in order to fix Issue 51.

This issue is completed.
Changes Made:

'Download Output' button disabled until there are inputs.
Tags for search terms when user clicks Enter or comma
checkbox that displays 'Is the search criteria same for all search terms'.
Search Query Card implementation

@mkalal6 - It looks good but a few changes are needed.

Submit Search Query position should be fixed. It is changing now on selecting the "Is the search criteria same for all search terms" checkbox.
The card must be created after clicking the Submit Search Query button.
The download option should be enabled once the data is entered in all the mandatory fields.

@mkalal6 - I've implemented a few validations for the 'Submit Search Query 'button. Now, it's only enabled once values are provided in all fields, and I've removed the API call. Also, I've updated the NavBar and changed the filename. Please review these changes and let me know if there are any issues.


[ci] Increase timeouts for platform_tests

platform_tests are our most time-consuming tests; 30 minutes isn't always enough to run them. Increase timeouts to 60 minutes so that we aren't getting timeouts from tests that are still running.
Hopefully this will resolve the recent post-submit failures.
Also disables Windows platform_tests for stable in presubmit, matching other platforms.

Force-landing to hopefully green the tree.