[ADR] - E2E Testing

Document some of the discussions here, and validate some of the decisions moving forward.

NixOS tests look quite powerful. It would be good to understand what exactly you want to test with this setup and whether you actually need multiple machines and a network. I know that my proposition may sound stupid, as you are writing "e2e", but the deeper you go in the implementation stack, the less are the chances to find a bug.
Here is what we are doing when we test a single Cosmos module, let's call this module M:

We set up a docker image that includes the gaia server and all required modules and initialize the genesis. So every time you start the docker image, it starts a new blockchain with some predefined data. The good thing is that it is all pre-packaged, so you don't have to waste time on bootstrapping the blockchain for every single test.
We write a high-level TLA+ specification of the transactions that the module M accepts at the client end. In practice, this is an interactive activity. We refine the specs as we are running the tests in steps 3-4.
We generate multiple sequences of transactions with Apalache. If you know nothing about the module, you can blindly generate a number of sequences. In practice, it makes more sense to specify the property you want to prove or disprove and generate sequences from that property.
For each sequence, we start the docker container, connect to it as a client and feed the sequence of transactions to the module M. For each transaction in the sequence, we check, whether the success code matches to the code that was expected by the TLA+ specification (zero or non-zero code).

What is interesting here is that we do not have to spin multiple machines (even though we could do that in docker). Assuming that the consensus engine is working correctly, all we have to do is make sure that the application (module M) is processing transactions as expected. If you have no properties, that "as expected" means "has not crashed" and "does not stall". The cool thing about TLA+ specs is that once you have them, you start discovering interesting properties by checking the spec and running the tests.
In the context of IBC, I am wondering, whether it would be sufficient to run a single-node chain A, a single-node chain B, and one or two light clients between them. If you can specify the messages that should fly between them, then you can produce meaningful tests, instead of seeking in the blind.

On the choice of language, I found python to be quite practical in this case. The issue is that every Cosmos module comes with its own quirks, like "we have not implemented CLI for that", "you have to query another end-point", or "you have to interact with an oracle". So it is easier to adapt the python script to the ad-hoc needs than trying to extend the tool for all possible scenarios.


UEBA Template Spec Solution --DO NOT MERGE AS 1P

Change(s):
See guidance below
Reason for Change(s):
This PR is part of template spec solution migration for solution UEBA Essentials.
See guidance below
Version Updated:
2.0.0
Required only for Detections/Analytic Rule templates
See guidance below
Testing Completed:
The link for test results is -
test doc
See guidance below
This is a 1P solution.

The links don't work.
-https://githubusercontent.com/Azure/Azure-Sentinel/blob/master/Solutions/UEBA%20Essentials/Hunting%20Queries/Anomalous%20AAD%20Account%20Manipulation.yaml
+https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/Solutions/UEBA%20Essentials/Hunting%20Queries/Anomalous%20AAD%20Account%20Manipulation.yaml

Beyond the links not working, You can find here is pretty awkward.
-You can find here
+The new location is


Add AOT support for uprobe probes that use Debug Info

bpftrace AOT is disabled for uprobe probes that use Debug Info.
The Dwarf parser reads the Debug Info and build the corresponding SizedType used by the uprobe.
For record types, the SizedType has a non-owning pointer to its underlying Struct (std::weak_ptr<Struct> inner_struct_), which contains information about the fields of the record type.
The AOT binary doesn't rely on our Dwarf parser to get the SizedTypes, but instead de-serialise the information read and stored ahead-of-time in the .btaot section. However, because no one owns the Struct with a std::shared_ptr, the weak pointer destroys the underlying Struct right after de-serialisation. The AOT binary then do a use-after-free whenever it accesses the inner_struct_ of a record SizedType.
Describe the solution you'd like
Those underlying Struct are owned by BPFtrace::structs. A solution could be to move structs from BPFtrace to RequiredResources and have them serialised alongside.
Doing so might lead to serialising more data than we'd need to for the AOT binary. An improved solution could be to traverse and mark all used Struct and serialise only them.
Describe alternative solutions or features you've considered
Another solution could be to replace the std::weak_ptr by std::shared_ptr, but this would lead to memory leak due to cycles in the Type graph that would prevent reclaiming the memory. For instance, the Struct for the following linked-list node would never get its memory reclaimed due to a cycle with itself: struct Node { struct Node *next; ... };.

I think serializing all structs is a good place to start. If we realize that's too heavy, then we can always do a mark and sweep motion in the code to only serialized referenced structs.


Append hidden measured element to html instead of after el, to ensure…

… it always gets added to the DOM and correctly calculated
If el is temporarily hidden from the DOM for whatever reason, measuredEl will not get added to the DOM and its width will always be 0. This ensures that the element will always get added to the DOM by appending it to <html>.

:peach:


implement wifi event handling with data

Thank you for your contribution!
We appreciate the time and effort you've put into this pull request.
To help us review it efficiently, please ensure you've gone through the following checklist:
Submission Checklist 📝

[x] I have updated existing examples or added new ones (if applicable).
[x] I have used cargo xtask fmt-packages command to ensure that all changed code is formatted correctly.
[x] My changes were added to the CHANGELOG.md in the proper section.
[ ] I have added necessary changes to user code to the Migration Guide.
[x] My changes are in accordance to the esp-rs API guidelines

Extra:

[x] I have read the CONTRIBUTING.md guide and followed its instructions.

Pull Request Details 📖
Description
Fixes: https://github.com/esp-rs/esp-hal/issues/2412
Implement event handling for apsta{,dis}connect and probe
I kind of guessed which events are associated with which data. Is there a better place for this?
Added to wifi_access_point example, I don't know it would be preferred to copy-paste it as a new example.
Currently requires Boxing and somewhat ugly update function. I'm going to work on this a bit more before undrafting the request, but would like feedback on:
If the approach should be modified completely instead of following the std::panic::hook apis. The implementation here doesn't support removing a single handler, but I'm not sure when that would be preferred over checking a flag in the handler itself.
Testing
Ran the modified example on esp32 and connected to it. Got printlns for the sta connected and disconnected events as expected. Didn't test probe event.

By the way, I get a linker error trying to build the example on the latest commit, even before changing anything, and had to fix it with:
- esp-wifi-sys = { version = "0.6.0", git = "https://github.com/esp-rs/esp-wifi-sys.git", rev = "a3e2ed64e9095f120bbcebe6287ddf62760774db"}
+ esp-wifi-sys = { version = "0.6.0" }

Error:
[...]/.cargo/target\xtensa-esp32-none-elf\release\build\esp-wifi-sys-5deb9f734c403436\out\libbtdm_app.a: file not recognized: file format not recognized
          collect2.exe: error: ld returned 1 exit status

I forgot that Box<ZST> doesn't allocate, so the whole thing I did was unnecessarily complicated. Changed to Box<dyn ...>
Why pass the critical section to the event handler?
I don't know how a newtype around event types fixes the need for a trait.

By the way, I get a linker error trying to build the example on the latest commit, even before changing anything, and had to fix it with:
- esp-wifi-sys = { version = "0.6.0", git = "https://github.com/esp-rs/esp-wifi-sys.git", rev = "a3e2ed64e9095f120bbcebe6287ddf62760774db"}
+ esp-wifi-sys = { version = "0.6.0" }

Error:
[...]/.cargo/target\xtensa-esp32-none-elf\release\build\esp-wifi-sys-5deb9f734c403436\out\libbtdm_app.a: file not recognized: file format not recognized
          collect2.exe: error: ld returned 1 exit status

Maybe your local Cargo cache is trashed?

One concern I have is that currently we are burning cycles in the (most common) case when no one is interested in the events
INFO - EVENT: HomeChannelChange
INFO - took = 2042 cycles
INFO - EVENT: StaStart
INFO - took = 1393 cycles
INFO - EVENT: ScanDone
INFO - took = 1698 cycles
INFO - EVENT: HomeChannelChange
INFO - took = 2042 cycles
INFO - EVENT: StaConnected
INFO - took = 2042 cycles

(that's on C6 - I guess it's more expensive on multi-core chips)
It's not the end of the world given events are not emitted at a high frequency (not sure about things like FtmReport if enabled).
Probably the best thing to do would be to have a way to mask out events no one is interested in as early as possible (before doing anything with them) ... but that would be out of scope for this PR

One concern I have is that currently we are burning cycles in the (most common) case when no one is interested in the events

How did you measure the cycles? I'd be interested in trying this myself.
Is this a comparison of before/after the pr?
It would be strange to me that this be a significant performance drop with no registered handler.
dispatch_handler matches the enum, which should be fast, calls handle_raw which in release does nothing and calls handle, which acquires a critical section, checks the option is none and releases the critical section. The event_post method already acquires a critical section, so I don't know why this would be significantly slower.

I've changed the critical section to be passed in to dispatch_event_handler, so now the only new cost should be the match and one new borrow_ref while still holding the critical section.

The numbers were just the measured cycles calling the dispatch function w/o any registered callbacks.
On our RISC-V chips the code to do that is
    unsafe {
        asm!(
            "
                csrrwi x0, 0x7e0, 1 #what to count, for cycles write 1 for instructions write 2
                csrrwi x0, 0x7e1, 0 #disable counter
                csrrwi x0, 0x7e2, 0 #reset counter
                csrrwi x0, 0x7e1, 1 #enable counter
        "
        );
    }

    // WHAT WE WANT TO MEASURE HERE!!!! e.g. calling `dispatch`

    let mut perf_counter: u32 = 0;
    unsafe {
        asm!(
            "
            csrr {x}, 0x7e2
            ",
            options(nostack),
            x = inout(reg) perf_counter,
        )
    };
    info!("took = {} cycles", perf_counter);

Numbers I got from testing on esp32:

critical sectionlet start = xtensa_lx_rt::xtensa_lx::timer::get_cycle_count();
critical_section::with(|cs| {
    core::hint::black_box(cs);
});
let end = xtensa_lx_rt::xtensa_lx::timer::get_cycle_count();

2902
1946
2902
1945
35
1945
35
1945
35
1945
35

borrow_ref_mutlet start = xtensa_lx_rt::xtensa_lx::timer::get_cycle_count();
WIFI_EVENTS.borrow_ref_mut(cs).insert(event);
let end = xtensa_lx_rt::xtensa_lx::timer::get_cycle_count();

965
964
18
964
20
965
964
20

match statement itselflet start = xtensa_lx_rt::xtensa_lx::timer::get_cycle_count();
match event {
    ...
    WifiEvent::ApStadisconnected => {
        let end = xtensa_lx_rt::xtensa_lx::timer::get_cycle_count();
    }
}

1923
1923
1923

handle_raw with nothing registeredlet start = xtensa_lx_rt::xtensa_lx::timer::get_cycle_count();
handle_raw::<ApStadisconnected>(cs, event_data, event_data_size);
let end = xtensa_lx_rt::xtensa_lx::timer::get_cycle_count();

9
9
9

It looks like the match statement might be slow? Checking the assembly, it looks like a jump-table and I'm not sure why it takes so long. I'm not sure how to check this.

no registered event handler dispatch asm
.section .text.dispatch_event_handler,"ax",@progbits
    .literal_position
    .literal .LCPI210_0, .LJTI210_0
    .literal .LCPI210_1, <esp_wifi::wifi::event::StaNeighborRep as esp_wifi::wifi::event::sealed::Event>::handler::HANDLE.0
    .literal .LCPI210_2, .Lanon.6f9af055088f29a420e67a46e94ad374.129
    .literal .LCPI210_3, core::cell::panic_already_borrowed
    .literal .LCPI210_4, <esp_wifi::wifi::event::HomeChannelChange as esp_wifi::wifi::event::sealed::Event>::handler::HANDLE.0
    .literal .LCPI210_5, <esp_wifi::wifi::event::NdpTerminated as esp_wifi::wifi::event::sealed::Event>::handler::HANDLE.0
    .literal .LCPI210_6, <esp_wifi::wifi::event::NdpConfirm as esp_wifi::wifi::event::sealed::Event>::handler::HANDLE.0
    .literal .LCPI210_7, <esp_wifi::wifi::event::NdpIndication as esp_wifi::wifi::event::sealed::Event>::handler::HANDLE.0
    .literal .LCPI210_8, <esp_wifi::wifi::event::NanReceive as esp_wifi::wifi::event::sealed::Event>::handler::HANDLE.0
    .literal .LCPI210_9, <esp_wifi::wifi::event::NanReplied as esp_wifi::wifi::event::sealed::Event>::handler::HANDLE.0
    .literal .LCPI210_10, <esp_wifi::wifi::event::NanSvcMatch as esp_wifi::wifi::event::sealed::Event>::handler::HANDLE.0
    .literal .LCPI210_11, <esp_wifi::wifi::event::NanStopped as esp_wifi::wifi::event::sealed::Event>::handler::HANDLE.0
    .literal .LCPI210_12, <esp_wifi::wifi::event::NanStarted as esp_wifi::wifi::event::sealed::Event>::handler::HANDLE.0
    .literal .LCPI210_13, <esp_wifi::wifi::event::BtwtTeardown as esp_wifi::wifi::event::sealed::Event>::handler::HANDLE.0
    .literal .LCPI210_14, <esp_wifi::wifi::event::BtwtSetup as esp_wifi::wifi::event::sealed::Event>::handler::HANDLE.0
    .literal .LCPI210_15, <esp_wifi::wifi::event::TwtWakeup as esp_wifi::wifi::event::sealed::Event>::handler::HANDLE.0
    .literal .LCPI210_16, <esp_wifi::wifi::event::ItwtSuspend as esp_wifi::wifi::event::sealed::Event>::handler::HANDLE.0
    .literal .LCPI210_17, <esp_wifi::wifi::event::ItwtProbe as esp_wifi::wifi::event::sealed::Event>::handler::HANDLE.0
    .literal .LCPI210_18, <esp_wifi::wifi::event::ItwtTeardown as esp_wifi::wifi::event::sealed::Event>::handler::HANDLE.0
    .literal .LCPI210_19, <esp_wifi::wifi::event::ItwtSetup as esp_wifi::wifi::event::sealed::Event>::handler::HANDLE.0
    .literal .LCPI210_20, <esp_wifi::wifi::event::ApWpsRgPbcOverlap as esp_wifi::wifi::event::sealed::Event>::handler::HANDLE.0
    .literal .LCPI210_21, <esp_wifi::wifi::event::ApWpsRgPin as esp_wifi::wifi::event::sealed::Event>::handler::HANDLE.0
    .literal .LCPI210_22, <esp_wifi::wifi::event::ApWpsRgTimeout as esp_wifi::wifi::event::sealed::Event>::handler::HANDLE.0
    .literal .LCPI210_23, <esp_wifi::wifi::event::ApWpsRgFailed as esp_wifi::wifi::event::sealed::Event>::handler::HANDLE.0
    .literal .LCPI210_24, <esp_wifi::wifi::event::ApWpsRgSuccess as esp_wifi::wifi::event::sealed::Event>::handler::HANDLE.0
    .literal .LCPI210_25, <esp_wifi::wifi::event::ConnectionlessModuleWakeIntervalStart as esp_wifi::wifi::event::sealed::Event>::handler::HANDLE.0
    .literal .LCPI210_26, <esp_wifi::wifi::event::StaBeaconTimeout as esp_wifi::wifi::event::sealed::Event>::handler::HANDLE.0
    .literal .LCPI210_27, <esp_wifi::wifi::event::RocDone as esp_wifi::wifi::event::sealed::Event>::handler::HANDLE.0
    .literal .LCPI210_28, <esp_wifi::wifi::event::ActionTxStatus as esp_wifi::wifi::event::sealed::Event>::handler::HANDLE.0
    .literal .LCPI210_29, <esp_wifi::wifi::event::StaBssRssiLow as esp_wifi::wifi::event::sealed::Event>::handler::HANDLE.0
    .literal .LCPI210_30, <esp_wifi::wifi::event::FtmReport as esp_wifi::wifi::event::sealed::Event>::handler::HANDLE.0
    .literal .LCPI210_31, <esp_wifi::wifi::event::ApProbereqrecved as esp_wifi::wifi::event::sealed::Event>::handler::HANDLE.0
    .literal .LCPI210_32, <esp_wifi::wifi::event::ApStadisconnected as esp_wifi::wifi::event::sealed::Event>::handler::HANDLE.0
    .literal .LCPI210_33, <esp_wifi::wifi::event::ApStaconnected as esp_wifi::wifi::event::sealed::Event>::handler::HANDLE.0
    .literal .LCPI210_34, <esp_wifi::wifi::event::ApStop as esp_wifi::wifi::event::sealed::Event>::handler::HANDLE.0
    .literal .LCPI210_35, <esp_wifi::wifi::event::ApStart as esp_wifi::wifi::event::sealed::Event>::handler::HANDLE.0
    .literal .LCPI210_36, <esp_wifi::wifi::event::StaWpsErPbcOverlap as esp_wifi::wifi::event::sealed::Event>::handler::HANDLE.0
    .literal .LCPI210_37, <esp_wifi::wifi::event::StaWpsErPin as esp_wifi::wifi::event::sealed::Event>::handler::HANDLE.0
    .literal .LCPI210_38, <esp_wifi::wifi::event::StaWpsErTimeout as esp_wifi::wifi::event::sealed::Event>::handler::HANDLE.0
    .literal .LCPI210_39, <esp_wifi::wifi::event::StaWpsErFailed as esp_wifi::wifi::event::sealed::Event>::handler::HANDLE.0
    .literal .LCPI210_40, <esp_wifi::wifi::event::StaWpsErSuccess as esp_wifi::wifi::event::sealed::Event>::handler::HANDLE.0
    .literal .LCPI210_41, <esp_wifi::wifi::event::StaAuthmodeChange as esp_wifi::wifi::event::sealed::Event>::handler::HANDLE.0
    .literal .LCPI210_42, <esp_wifi::wifi::event::StaDisconnected as esp_wifi::wifi::event::sealed::Event>::handler::HANDLE.0
    .literal .LCPI210_43, <esp_wifi::wifi::event::StaConnected as esp_wifi::wifi::event::sealed::Event>::handler::HANDLE.0
    .literal .LCPI210_44, <esp_wifi::wifi::event::StaStop as esp_wifi::wifi::event::sealed::Event>::handler::HANDLE.0
    .literal .LCPI210_45, <esp_wifi::wifi::event::StaStart as esp_wifi::wifi::event::sealed::Event>::handler::HANDLE.0
    .literal .LCPI210_46, <esp_wifi::wifi::event::ScanDone as esp_wifi::wifi::event::sealed::Event>::handler::HANDLE.0
    .literal .LCPI210_47, <esp_wifi::wifi::event::WifiReady as esp_wifi::wifi::event::sealed::Event>::handler::HANDLE.0
    .global dispatch_event_handler
    .p2align        2
    .type   dispatch_event_handler,@function
dispatch_event_handler:

    entry a1, 32
    l32r a8, .LCPI210_0
    addx4 a8, a2, a8
    l32i.n a8, a8, 0
    jx a8

    l32r a8, .LCPI210_47
    j .LBB210_46

    l32r a8, .LCPI210_46
    j .LBB210_46

    l32r a8, .LCPI210_45
    j .LBB210_46

    l32r a8, .LCPI210_44
    j .LBB210_46

    l32r a8, .LCPI210_43
    j .LBB210_46

    l32r a8, .LCPI210_42
    j .LBB210_46

    l32r a8, .LCPI210_41
    j .LBB210_46

    l32r a8, .LCPI210_40
    j .LBB210_46

    l32r a8, .LCPI210_39
    j .LBB210_46

    l32r a8, .LCPI210_38
    j .LBB210_46

    l32r a8, .LCPI210_37
    j .LBB210_46

    l32r a8, .LCPI210_36
    j .LBB210_46

    l32r a8, .LCPI210_35
    j .LBB210_46

    l32r a8, .LCPI210_34
    j .LBB210_46

    l32r a8, .LCPI210_33
    j .LBB210_46

    l32r a8, .LCPI210_32
    j .LBB210_46

    l32r a8, .LCPI210_31
    j .LBB210_46

    l32r a8, .LCPI210_30
    j .LBB210_46

    l32r a8, .LCPI210_29
    j .LBB210_46

    l32r a8, .LCPI210_28
    j .LBB210_46

    l32r a8, .LCPI210_27
    j .LBB210_46

    l32r a8, .LCPI210_26
    j .LBB210_46

    l32r a8, .LCPI210_25
    j .LBB210_46

    l32r a8, .LCPI210_24
    j .LBB210_46

    l32r a8, .LCPI210_23
    j .LBB210_46

    l32r a8, .LCPI210_22
    j .LBB210_46

    l32r a8, .LCPI210_21
    j .LBB210_46

    l32r a8, .LCPI210_20
    j .LBB210_46

    l32r a8, .LCPI210_19
    j .LBB210_46

    l32r a8, .LCPI210_18
    j .LBB210_46

    l32r a8, .LCPI210_17
    j .LBB210_46

    l32r a8, .LCPI210_16
    j .LBB210_46

    l32r a8, .LCPI210_15
    j .LBB210_46

    l32r a8, .LCPI210_14
    j .LBB210_46

    l32r a8, .LCPI210_13
    j .LBB210_46

    l32r a8, .LCPI210_12
    j .LBB210_46

    l32r a8, .LCPI210_11
    j .LBB210_46

    l32r a8, .LCPI210_10
    j .LBB210_46

    l32r a8, .LCPI210_9
    j .LBB210_46

    l32r a8, .LCPI210_8
    j .LBB210_46

    l32r a8, .LCPI210_7
    j .LBB210_46

    l32r a8, .LCPI210_6
    j .LBB210_46

    l32r a8, .LCPI210_5
    j .LBB210_46

    l32r a8, .LCPI210_4
    j .LBB210_46

    l32r a8, .LCPI210_1

.LBB210_46:
    l8ui a9, a8, 0
    bnez a9, .LBB210_48

    movi.n a9, 0
    s8i a9, a8, 0
    retw.n

    l32r a10, .LCPI210_2
    l32r a8, .LCPI210_3
    callx8 a8

6. I tried dispatching multiple times per event and got strange results. Seems like the issue is something isn't cached and takes a bunch of cycles to load the first time? Is it possible the instructions for the match itself is what's taking a while to load?
dispatch same handler log
0: ApStaconnected - Dispatch took: 3870 cycles
1: ApStaconnected - Dispatch took: 26 cycles
2: ApStaconnected - Dispatch took: 26 cycles
3: ApStaconnected - Dispatch took: 26 cycles
4: ApStaconnected - Dispatch took: 26 cycles
5: ApStaconnected - Dispatch took: 26 cycles
6: ApStaconnected - Dispatch took: 26 cycles
7: ApStaconnected - Dispatch took: 26 cycles
8: ApStaconnected - Dispatch took: 26 cycles
9: ApStaconnected - Dispatch took: 26 cycles
critical-section-with took: 2906
ApStadisconnected - WIFI_EVENTS.borrow_ref_mut took: 967
0: ApStadisconnected - Dispatch took: 4836 cycles
1: ApStadisconnected - Dispatch took: 26 cycles
2: ApStadisconnected - Dispatch took: 26 cycles
3: ApStadisconnected - Dispatch took: 26 cycles
4: ApStadisconnected - Dispatch took: 26 cycles
5: ApStadisconnected - Dispatch took: 26 cycles
6: ApStadisconnected - Dispatch took: 26 cycles
7: ApStadisconnected - Dispatch took: 26 cycles
8: ApStadisconnected - Dispatch took: 26 cycles
9: ApStadisconnected - Dispatch took: 26 cycles
critical-section-with took: 2905
HomeChannelChange - WIFI_EVENTS.borrow_ref_mut took: 22
0: HomeChannelChange - Dispatch took: 972 cycles
1: HomeChannelChange - Dispatch took: 26 cycles
2: HomeChannelChange - Dispatch took: 26 cycles
3: HomeChannelChange - Dispatch took: 26 cycles
4: HomeChannelChange - Dispatch took: 26 cycles
5: HomeChannelChange - Dispatch took: 26 cycles
6: HomeChannelChange - Dispatch took: 26 cycles
7: HomeChannelChange - Dispatch took: 26 cycles
8: HomeChannelChange - Dispatch took: 26 cycles
9: HomeChannelChange - Dispatch took: 26 cycles
critical-section-with took: 40
HomeChannelChange - WIFI_EVENTS.borrow_ref_mut took: 22
0: HomeChannelChange - Dispatch took: 26 cycles
1: HomeChannelChange - Dispatch took: 26 cycles
2: HomeChannelChange - Dispatch took: 26 cycles
3: HomeChannelChange - Dispatch took: 26 cycles
4: HomeChannelChange - Dispatch took: 26 cycles
5: HomeChannelChange - Dispatch took: 26 cycles
6: HomeChannelChange - Dispatch took: 26 cycles
7: HomeChannelChange - Dispatch took: 26 cycles
8: HomeChannelChange - Dispatch took: 26 cycles
9: HomeChannelChange - Dispatch took: 26 cycles
critical-section-with took: 40
ApStaconnected - WIFI_EVENTS.borrow_ref_mut took: 967
0: ApStaconnected - Dispatch took: 1940 cycles
1: ApStaconnected - Dispatch took: 26 cycles
2: ApStaconnected - Dispatch took: 26 cycles
3: ApStaconnected - Dispatch took: 26 cycles
4: ApStaconnected - Dispatch took: 26 cycles
5: ApStaconnected - Dispatch took: 26 cycles
6: ApStaconnected - Dispatch took: 26 cycles
7: ApStaconnected - Dispatch took: 26 cycles
8: ApStaconnected - Dispatch took: 26 cycles
9: ApStaconnected - Dispatch took: 26 cycles
critical-section-with took: 40
ApStadisconnected - WIFI_EVENTS.borrow_ref_mut took: 967
0: ApStadisconnected - Dispatch took: 4836 cycles
1: ApStadisconnected - Dispatch took: 26 cycles
2: ApStadisconnected - Dispatch took: 26 cycles
3: ApStadisconnected - Dispatch took: 26 cycles
4: ApStadisconnected - Dispatch took: 26 cycles
5: ApStadisconnected - Dispatch took: 26 cycles
6: ApStadisconnected - Dispatch took: 26 cycles
7: ApStadisconnected - Dispatch took: 26 cycles
8: ApStadisconnected - Dispatch took: 26 cycles
9: ApStadisconnected - Dispatch took: 26 cycles
critical-section-with took: 2905
HomeChannelChange - WIFI_EVENTS.borrow_ref_mut took: 22
0: HomeChannelChange - Dispatch took: 972 cycles
1: HomeChannelChange - Dispatch took: 26 cycles
2: HomeChannelChange - Dispatch took: 26 cycles
3: HomeChannelChange - Dispatch took: 26 cycles
4: HomeChannelChange - Dispatch took: 26 cycles
5: HomeChannelChange - Dispatch took: 26 cycles
6: HomeChannelChange - Dispatch took: 26 cycles
7: HomeChannelChange - Dispatch took: 26 cycles
8: HomeChannelChange - Dispatch took: 26 cycles
9: HomeChannelChange - Dispatch took: 26 cycles

dispatch different handler log
HomeChannelChange - WIFI_EVENTS.borrow_ref_mut took: 967
0: HomeChannelChange - Dispatch took: 2898 cycles
1: NdpTerminated - Dispatch took: 28 cycles
2: NdpConfirm - Dispatch took: 973 cycles
3: NdpIndication - Dispatch took: 28 cycles
4: NanReceive - Dispatch took: 972 cycles
5: NanReplied - Dispatch took: 975 cycles
6: NanSvcMatch - Dispatch took: 27 cycles
7: NanStopped - Dispatch took: 974 cycles
8: NanStarted - Dispatch took: 27 cycles
9: BtwtTeardown - Dispatch took: 28 cycles
critical-section-with took: 3853
ApStart - WIFI_EVENTS.borrow_ref_mut took: 19
0: ApStart - Dispatch took: 3863 cycles
1: StaWpsErPbcOverlap - Dispatch took: 27 cycles
2: StaWpsErPin - Dispatch took: 28 cycles
3: StaWpsErTimeout - Dispatch took: 973 cycles
4: StaWpsErFailed - Dispatch took: 28 cycles
5: StaWpsErSuccess - Dispatch took: 972 cycles
6: StaAuthmodeChange - Dispatch took: 975 cycles
7: StaDisconnected - Dispatch took: 27 cycles
8: StaConnected - Dispatch took: 28 cycles
9: StaStop - Dispatch took: 27 cycles
critical-section-with took: 42
is wifi started: Ok(true)
Ok(EnumSet(AccessPoint))
Start busy loop on main. Connect to the AP `esp-wifi` and point your browser to http://<IP_ADDRESS>:8080/
Use a static IP in the range <IP_ADDRESS> .. <IP_ADDRESS>, use gateway <IP_ADDRESS>
ApStaconnected - WIFI_EVENTS.borrow_ref_mut took: 965
0: ApStaconnected - Dispatch took: 2898 cycles
1: ApStop - Dispatch took: 27 cycles
2: ApStart - Dispatch took: 28 cycles
3: StaWpsErPbcOverlap - Dispatch took: 27 cycles
4: StaWpsErPin - Dispatch took: 28 cycles
5: StaWpsErTimeout - Dispatch took: 27 cycles
6: StaWpsErFailed - Dispatch took: 28 cycles
7: StaWpsErSuccess - Dispatch took: 27 cycles
8: StaAuthmodeChange - Dispatch took: 28 cycles
9: StaDisconnected - Dispatch took: 27 cycles
critical-section-with took: 2908
ApStadisconnected - WIFI_EVENTS.borrow_ref_mut took: 965
0: ApStadisconnected - Dispatch took: 4830 cycles
1: ApStaconnected - Dispatch took: 1937 cycles
2: ApStop - Dispatch took: 27 cycles
3: ApStart - Dispatch took: 28 cycles
4: StaWpsErPbcOverlap - Dispatch took: 27 cycles
5: StaWpsErPin - Dispatch took: 28 cycles
6: StaWpsErTimeout - Dispatch took: 973 cycles
7: StaWpsErFailed - Dispatch took: 28 cycles
8: StaWpsErSuccess - Dispatch took: 972 cycles
9: StaAuthmodeChange - Dispatch took: 28 cycles
critical-section-with took: 3853
HomeChannelChange - WIFI_EVENTS.borrow_ref_mut took: 21
0: HomeChannelChange - Dispatch took: 974 cycles
1: NdpTerminated - Dispatch took: 28 cycles
2: NdpConfirm - Dispatch took: 973 cycles
3: NdpIndication - Dispatch took: 28 cycles
4: NanReceive - Dispatch took: 972 cycles
5: NanReplied - Dispatch took: 975 cycles
6: NanSvcMatch - Dispatch took: 27 cycles
7: NanStopped - Dispatch took: 974 cycles
8: NanStarted - Dispatch took: 27 cycles
9: BtwtTeardown - Dispatch took: 28 cycles
critical-section-with took: 42

7. Does this need to be resolved for the pr to be accepted?

Ok this definitely looks like cache misses - not really something that should be touched in this PR.
I'm personally not very convinced by the chained callbacks but I'm fine with it - will leave the last word to someone else in the team to decide (i.e. approve)

I'm personally not very convinced by the chained callbacks but I'm fine with it - will leave the last word to someone else in the team to decide (i.e. approve)

If it helps, using replace_handler with function items should be as efficient as only supporting a single fn callback, so there's shouldn't be a runtime cost to doing it this way.

@bjoernQ Is there something I can do to move this along at this point? I'd like to avoid having to merge main to keep the branch up-to-date.


Ci/notify discussions release

Addresses https://github.com/axone-protocol/community/issues/6.

Additionally, removes Discord notifications on release, as GitHub Discussions will now serve as the primary release notification channel, with optional forwarding to Discord if needed.
Also enables manual triggering with a specific tag input (only for the notification of release on discussions), alongside the default trigger on release. This adds flexibility for replaying the workflow when necessary.

Summary by CodeRabbit

New Features

Introduced a manual trigger for workflows with an optional input parameter for tagging.
Added a new job to set environment variables, improving workflow clarity.
Enhanced messaging format for notifications related to GitHub discussions.

Improvements

Updated logic for retrieving the latest release tag.
Restructured jobs to ensure efficient execution based on specific events.

size-limit report 📦

Path
Size

target/wasm32-unknown-unknown/release/axone_objectarium.wasm
458.07 KB (0%)

target/wasm32-unknown-unknown/release/axone_law_stone.wasm
648.51 KB (0%)

target/wasm32-unknown-unknown/release/axone_cognitarium.wasm
882.03 KB (0%)

target/wasm32-unknown-unknown/release/axone_dataverse.wasm
683.93 KB (0%)


Survivor Interaction: Color differentiate notes from survivors

notes from survivors need to set apart from volunteer notes.  Here is one idea on how to solve the problem:

[ ] color survivor notes
[ ] put small key indicating what the color means

Done.


Revit: Improve MEP support [masterissue]

This is a master issue to collect a few related issues.

https://github.com/specklesystems/speckle-sharp/issues/2604
https://github.com/specklesystems/speckle-sharp/issues/2597
https://github.com/specklesystems/speckle-sharp/issues/2337
https://github.com/specklesystems/speckle-sharp/issues/1915
https://github.com/specklesystems/speckle-sharp/issues/1436
https://github.com/specklesystems/speckle-sharp/issues/2004

Once tackled we should ensure, this use cases is also addressed:

https://speckle.community/t/publish-linked-revit-models/2444/39

Closing this ticket as we are moving to Jira to reduce noise. You can access it there.


Prevent a delegate from being added twice.

Checks to see if the delegate has already been added.
For addDelegate:beforeDelegate: and addDelegate:afterDelegate: it will remove the old one and insert it again at the requested index.

Looks great, but please follow the code style (spaces around =, bracket on the same line as the if, etc.).

I don't think this is a common problem, closing.


Update Dockerfile

ip

This will likely break the ollama docker image for most people so it doesn't seem appropriate to merge


Provide contract version number in addition to SDK version

It'd be great for the list here to have the API contract version number (1-7) called out here in addition to the existing SDK version number.  That's useful when using conditional XAML to match contract version numbers with sdk version numbers.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 9afdf49d-a4d3-2c25-5146-a74b31e45819
Version Independent ID: 658615f6-b07b-3186-d042-6fb4b52e0640
Content: Windows Universal Platform SDK API contracts - Windows UWP applications
Content Source: winrt-related-src/extension-sdks/windows-universal-sdk.md
Product: uwp
GitHub Login: @TylerMSFT
Microsoft Alias: twhitney

Hi Michael, thanks for the feedback. We're currently in the process of figuring out the best way to provide the information on these pages to users. I'll make note of your feedback.

@knicholasa in the meantime, could we at least in the headers next to the version number put the contract number as well for easy reference? Thanks!

Hi @michael-hawker , I no longer own this content set, so I'll let @GrantMeStrength respond.


Tomhaile/ch14633/add link to etherscan in notifications

https://app.clubhouse.io/augur/story/14633/add-link-to-etherscan-in-notifications
added 'etherscan link' to notifications. It will get style applied as design becomes available.

Pull Request Test Coverage Report for Build 1104

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 66.975%

Totals

Change from base Build 1103:
0.0%

Covered Lines:
3605

Relevant Lines:
4902

💛  - Coveralls


add Python 3.8 to Tox and Travis

Codecov Report

Merging #184 into master will increase coverage by 0.01%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master     #184      +/-   ##
==========================================
+ Coverage   69.62%   69.64%   +0.01%
==========================================
  Files          18       18
  Lines        5040     5033       -7
==========================================
- Hits         3509     3505       -4
+ Misses       1531     1528       -3

Impacted Files
Coverage Δ

stix2elevator/convert_stix.py
74.51% <0%> (+0.02%)
:arrow_up:

stix2elevator/convert_pattern.py
76.34% <0%> (+0.05%)
:arrow_up:

stix2elevator/__init__.py
80.23% <0%> (+0.56%)
:arrow_up:

Continue to review full report at Codecov.

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


Adding react-native-vector-icons together with fonts dir

Adds support for vector icons and fonts through react-native-vector-icons
Copies Jitsi Meet fonts
Connects fonts to Android and ios projects

Merged with a separate PR.


Incorrect NumberOfEntries in .pls playlist

https://github.com/Poniverse/Ponyville-Live/blob/31563f3144dc87a5459319ee493f2c2b998955aa/app/modules/frontend/controllers/StationController.php#L205
Because each station can have multiple streams, the count is incorrect here. You would need to use $i after you iterated through the stations to set NumberOfEntries properly. I don't know php so can't fork and fix myself, but should be relatively easy.
Maybe some players don't care, but foobar2000 does. It only adds 18 streams instead of expected 49. The m3u list does not have this problem and works exactly as expected.
Thanks for existing btw, after Everfree Radio died the second time it was nice to find many streams in one convenient location.

Hey @pixelscoot - I'll take a look at fixing this in the very near future.
Thanks for such a detailed bug report and you're welcome! PVL's not going anywhere. :smiley:

@pixelscoot This is now fixed! :horse:


fixed error message and a check for processor name

Replace this entire comment with:

Description: a small fix on error description / a check for processor name
Issue: the issue #11407

worth adding a simple unit test for this?

worth adding a simple unit test for this?

done
@baskaryan pls, take another look


docs: make gssoc banner adaptable to light/dark mode

Description

This PR is about making the GSSoC Banner adaptable for Dark/Light Mode of Github.
The banner will be swapped according to the theme preference, it uses Github's inbuilt functionality.

Fixes #325

Screenshots

WITHOUT USING GITHUB'S FEATURE

AFTER USING GITHUB'S FEATURE

DARK THEME
LIGHT THEME

Have you read the Contributing Guidelines on Pull Requests?

[x] Yes
[ ] No

Type of change

[x] Documentation

Checklist:

[x] My code follows the style guidelines(Clean Code) of this project
[x] I have performed a self-review of my own code
[x] My changes generate no new warnings
[x] I have added tests/screenshots(if any) that prove my fix is effective or that my feature works.

Hey there @avinashkranjan 👋🏻
Please make sure to review this PR!
Thank you.


fix: link error due to extra backtick

Hey @jacoscaz just noticed a small error in the official pino package link :)

Much appreciated @fredmaggiowski !


Fix walk_dir to pick up all html and py files.

previously whenever we had any file with extension other than html or
py we immediatelly stopped running the function, which is not what we
want to do.
now instead of stopping the function we simply jump to the next
iteration. This way we make sure we add all html and python files from
the given directory.

@asendecka tests?

@moggers87 I did not add any tests and just merged because we desperately needed this. As far as this goes, it removes a restriction that would kill the scan whenever a non html/py file was encountered, while as of now it just ignores them and carries on with the next one.e

I agree that it's better to add tests. However currently there is absolutely none tests of begin_scan , so it most probably would take some time to write nice ones. As soon as I will have a free moment I will try to add some.


Cleanup unused images

These images are neither used directly in any tests nor are they the base-image for some other image (archived or otherwise).
This is the non-controversial cleanup.
I'll send another which cleans up actually "archived" images.

Typo in the last commit.  It might not be related to our changes, maybe docker-compose or docker engine version changed and the format of docker-compose ps --format json has changed judging by the failure messages.


Dynamically include layers

Conditioalnally load layers

[x] Gui layers
[x] Ansible layers
[ ]

References:

https://milosophical.me/blog/2016/spacemacs-01.html
https://www.reddit.com/r/spacemacs/comments/8iaaoi/how_to_conditionally_include_a_layer_or_set_a/
https://github.com/Andre0991/dotfiles/blob/b25788d2001aa12ce5adaaa31f5ff38bb17ece7c/.spacemacs#L125
https://stackoverflow.com/questions/5795451/how-to-detect-that-emacs-is-in-terminal-mode
https://www.gnu.org/software/emacs/manual/html_node/elisp/Display-Feature-Testing.html

Completed with commit 5462736


how to add setActivity in fragment

how to add setActivity in fragment

you can use getActivity() in fragment


Add text in article_info_card for manager/recommender page.

 Small change in the labelling of "Methods that require specific expertise” on the page viewed by the recommender.


[WIP] aio.core: Updates

add directory/grepper
add async_set/async_list

Signed-off-by: Ryan Northey<EMAIL_ADDRESS>

this was split to other prs


pkg/nar: Add DumpPathFilter

This function adds source filtering capabilities to DumpPath.
The interface of this mimics the behaviour of the Nix builtin filterSource.

Ah, and while at it, please also extend https://github.com/nix-community/go-nix#pkgnar, to also mention DumpPathFilter.

All comments so far addressed.


Window Resize doesn't work

http://scottjehl.github.io/picturefill/examples/demo-01.html
If you resize the Browser, the image doesn't change. Only on refresh.

Please keep in mind that Chrome, which has native support for picture, will always use the largest image available in the cache. If you start with a small viewport, clear your cache, then resize your viewport to larger, you should see the behavior as expected. Picturefill 3.0 will be mimicking this behavior as well.
If you’re using Firefox 38/39, this is also an issue with native implementation, and we’re offering a stand-alone fix (which will also be available as an extension to Picturefill 3.0): https://github.com/scottjehl/picturefill/issues/512#issuecomment-109796715
Feel free to reopen if this doesn’t describe the issues you’re seeing, but please provide us with as much information as possible about the issue you’re experiencing.

Ok Thanks for the detail info :)


[SmallFix] fix version in tachyon-config.sh

The version in pom.xml is 0.7.1-SNAPSHOT
Fix it in tachyon-config.sh to find the jar.

+1 LGTM


Get app version and status using fastlane?

Question Checklist

[x] Updated fastlane to the latest version
[x] I read the Contribution Guidelines
[x] I read docs.fastlane.tools
[x] I searched for existing GitHub issues

Question Subject
Hi there,
I wonder if there is a way to get the latest app version and status using fastlane functionality without having Xcode Project set up on my machine?
I need to get both the latest version of the app which is on sale and the one which is currently in a progress and not submitted for review yet(I do undestand that I can get the latest pre-release version using AppStore Connect API but this is not the goal).
After I ran fastlane init I couldn't find any version information in metadata folder. I've also found https://docs.fastlane.tools/actions/get_version_number/ action but couldn't make it work since it requires XCode Project.
Here are the requirements:

Get current app version which is not submitted for review yet.
Get latest released app version(which is already on sale)
Get latest released app version status(on sale, removed from sale etc..)

Thanks in advance.

The building blocks for all of that certainly are present in fastlane, or in the subproject spaceship. But you might very well have to invest some time in finding it and decoupling it from e.g. Xcode projects that might just be used to get the package name and similar.

How much of the app do you have available to provide to fastlane? You can do this pretty easily with spaceship.
## Get the version that is in edit mode (not yet submitted)
  version = Spaceship::Tunes::Application.find(APP_ID).edit_version

## Get latest live version
  version = Spaceship::Tunes::Application.find(APP_ID).live_version
## Get app status
  version.app_status

You would be calling spaceship from within your own lanes.

Thanks for the suggestions. They are really helpful.
I've got less than 10 apps but the problem is that I am not familiar with Ruby and I am not sure I want to maintain my own version of FastLane.
I'll use another workaround for now: I will retrieve that data directly from AppStoreConnect web site.
I understand they can change their site anytime so my app will be broken so in a meanwhile I'll start looking into your suggestions and FastLane code.
I am also afraid that it might be a bit slow listing all apps and statuses using FastLane. Hope I am wrong.

@ahimik - this doesn't mean you will be maintaining your own version of fastlane. Spaceship currently exists in fastlane.
The only custom work you will do is create a new lane, in that lane you will make spaceship calls.
By hitting the API directly, it will be much slower and you will be essentially re-writing the work that spaceship has already done for you.
Here are some good docs you can check out:
Spaceship docs: https://github.com/fastlane/fastlane/tree/master/spaceship
Good luck!

(Spaceship is really using the same APIs the website is using by the way - so by using Spaceship directly you safe the overhead of that)

Haha! @john-mejia thanks for letting me know! I just looked into FastLane code and realized tham I am doing absolutely the same requests in the same way as you already did in FastLane... Thanks again, this will make my life easier.


open interest in futures and swaps

Open interest and liquidation are  important features in trading.
Currently open interest is received in async def on_event_kline_update as
response=requests.get(self.OIurl)
with OIurl as '_https://futures.huobi.com//api/v1/contract_open_interest_'.
Then response.json()['data'] of 'symbol'=='ETH' and 'contract_type'=='quarter' gives open interest
as 'volume'.
Direct url call in on_event ... causes significant time delay as a whole.
Question 1:  How can I solve this problem of time delay due to direct access requests?
One solurion is a separate program getting open interest and sending through online database
like MQRabbit or redis.
Question 2:  What is fast response for open interest in swaps?
Url with "_https://futures.huobi.com///linear-swap-api/v1/swap_open_interest_" gives response.json()['data'] as in futures case.  Async/await low latency way of getting open interest in swaps would be extremely helpful.
Question 3:Liquidation in futures and swaps is other important features.  What is url address for liquidation? Url "_https://futures.huobi.com//api//v1/contract_liquidation_orders_"
"_https://futures.huobi.com//swap-api/v1/swap_liquidation_orders_" do not succeed with bad request 400. How can I get low latency liquidation data?
Question 4: Is it faster by using http_utils _alpha.platforms.huobi_usdt_swap.http_utils import *_?
Best regards,
Ingyu

'https://futures.huobi.com//api/v1/contract_open_interest'.
should be:
'https://api.hbdm.com/api/v1/contract_open_interest'.

more about server url host address to see: https://docs.huobigroup.com/docs/dm/v1/en/#address
"Question 4"---> no, http_utils _alpha.platforms.huobi_usdt_swap just is a package for "full usdt swap api".


Can't conditionally exclude a query (as well as mutation)

I tried to conditionally compile a query:
pub struct Query;

#[Object]
impl Query {

    #[cfg(target_os = "linux")]
    async fn query_that_should_be_excluded(&self) -> &str {
        ""
    }

(My host machine is running Windows.)
That produces:
error[E0599]: no method named `query_that_should_be_excluded` found for reference `&graphql::Query` in the current scope
  --> some-service\src\graphql.rs:21:14
   |
21 |     async fn query_that_should_be_excluded(&self) -> &str {
   |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method not found in `&graphql::Query`

It is compiled successfully when I change target_os to windows.
Is it possible to conditionally compile queries/mutations/subscriptions? Some scenarios for that I can imagine are when you need some queries only in debug mode or stage environments, but not in production.
Repro: https://github.com/rkudryashov/async-graphql-reproducer

Also, if there is any other ability to conditionally "hide" a query, it would be nice.

Due to the limitation of procedural macros, this cannot be supported.

You could have two mods with different subqueries and toggle the mods. Not very elegant but pretty sure this would work.

That's one way to do it.
pub struct Query;

#[Object]
impl Query {
    async fn query_that_should_be_excluded(&self) -> &str {
            #[cfg(target_os = "linux")]
            {
                 .....
            }
    }

I thought I had found an elegant solution for my case:
    #[cfg_attr(target_os = "windows", field(guard(BlockingGuard())))]
    async fn query_that_should_be_excluded(&self) -> &str {
        ""
    }

struct BlockingGuard;

#[async_trait::async_trait]
impl Guard for BlockingGuard {
    async fn check(&self, ctx: &Context<'_>) -> FieldResult<()> {
        Err("Forbidden".into())
    }
}

But this is not compiled: error: cannot find attribute field in this scope
Is it by the same reason that was in the first comment?

I thought I had found an elegant solution for my case:
    #[cfg_attr(target_os = "windows", field(guard(BlockingGuard())))]
    async fn query_that_should_be_excluded(&self) -> &str {
        ""
    }

struct BlockingGuard;

#[async_trait::async_trait]
impl Guard for BlockingGuard {
    async fn check(&self, ctx: &Context<'_>) -> FieldResult<()> {
        Err("Forbidden".into())
    }
}

But this is not compiled: error: cannot find attribute field in this scope
Is it by the same reason that was in the first comment?

Due to the limitation of procedural macros, this cannot be supported. 😁

Only derive can handle cfg_attr properly at the moment.


Support sqlite3 on Linux

Part of #1483.

I tried a little to get it work on macOS but it was too much effort. If I had the time to work more on sqlite3, I'd rather replace the backend than spend time hacking the current code that is already heavily hacked.

Little bit odd to have isNT returning true on Unix, but the code is already a mess, so looks good to me.

I agree and actually had a commit changing it to isNTorPosix but it did not look cleaner: a lot of code calling isNT is commented out so either the rename would leave it using a function that is no longer there or if comments were renamed too then the code in those block would really look weird as it is doing sometimes some pretty non-Posix stuff. So in the end, I opted for a minimal change hence no rename.


Solr does not allow unquoted JSON DSL in query template

When including JSON DSL in a Solr query template, it must be quoted or is not added to the query correctly.
To Reproduce
Steps to reproduce the behavior:

Add a JSON parameter to a Solr query template:

{
  "json": {
    "query": {
      "lucene": {
        "query": "$query"
      }
    }
  }
}

Run the evaluation process.
Observe that the query details have not been added to the SolrQuery (eg. the query request looks like /select?fl=field1 field2&json=&rows=20

Expected behavior
Included JSON DSL should not require quotes around the content - this will make it harder to write and increase the number of potential bugs in the query where JSON is in use.

Closed with https://github.com/SeaseLtd/rated-ranking-evaluator/pull/79


Add progress bar for go get command

It would be good to have a bar on terminal showing progress of package downloading process.

#17959 was about adding some kind of feedback/output (possibly a progress bar) to go get. It was rejected.

Yeah, dup of #17959
I personally think it would be okay to play terminal-detection games and only do a curses progress UI if the terminal supports such things, but the Go tools are pretty opinionated against terminals, ASCII art, and color, so I don't see this happening.
I recommend somebody prototype this first as an external tool (you could run go get -v as a child process and parse its output for the prototype?), and get a demo ready. If the demo is convincing and people like it, I'd support it, but I don't think anybody on the Go team has time to work on this itself.
I'd say come back with code, with the understanding that it might be fated to live out of tree.

@bradfitz I guess we don't need any kind of fancy stuff. It will be just simple bar.
Let me implement it.

Prototype away.

One simple solution is to (buffer and) show the underlying VCS
command output if the commands executes longer than, say,
a few seconds?
Of course, we need to persuade the VCS command to always
generate progress output even when its stdout is a pipe. But
I think that's certainly doable.


testdata directory

After installing the necessary tools and packages, I attempted running ./atomgrid-gen testdata/testdata.in
I received the the following message
failed to open: testdata/2HU4_A_r.pdbqt
Aborted
And also, the grid directory appears as grid*
Maybe I miss something or I don't know if it's because I am using Windows Subsystem for Linux to run the program.

ls -a .
.   .devcontainer  .gitignore  LICENSE   README.md     atomgrid-gen.log    testdata
..  .git           .vscode     Makefile  atomgrid-gen  conformer-docking  src
ls -a testdata/
 .   ..   2HU4_A_r.pdbqt   G39.mol2   G39.sdf   conformers.mol2  'grid'$'\r'   testgrid.in

The issue of asterisk * I cannot find any suggestion from stack overflow with 5-minutes googling...

on GUI it's actually a dot, but with the terminal it appears as 'grid'$'\r'

I see..., a possible reason is the difference of end-of-line characters. Can you use dos2unix? Or, git clone git@github.com:akiyamalab/restretto.git on your WSL (not on your Windows) may solve the problem
https://itslinuxfoss.com/fix-r-command-not-found-error/


C++ complex class fixes and tests

removing overload operator+ that seems to create a compilation issue
adding unary operators + and -
fixing type (polar)
adding unit tests

Let me know if there is a particular linting/formatting to perform.

I looked at the errors, one at least looks like this:
File "/home/runner/work/cython/cython/TEST_TMP/3/run/cpp/complex_numbers_cpp_directives_cpp_locals_True/complex_numbers_cpp.cpython-37m-x86_64-linux-gnu.so", line ?, in complex_numbers_cpp.scalar_double_conjugate
Failed example:
    a.imag
Expected:
    0.0
Got:
    -0.0

and it seems compiler dependent. I can make a quick fix for those.

I updated the failing test and rebased on latest master, please re-run.

Added one commit for a spelling mistake from ac3e29771

Added tests on cos/sin and in-place operators +,-,*,/ , minor fix on test.

Rebased onto latest master. Anything blocking the merge? Anything I can actually do?

Rebased onto latest master. Anything blocking the merge? Anything I can actually do?

Thank you for your PR. If CI will be green I am OK with your PR but C++ is not my domain so I would like to have opinion from someone who is more familiar with C++.

Rebased onto latest master. Anything blocking the merge? Anything I can actually do?

Thank you for your PR. If CI will be green I am OK with your PR but C++ is not my domain so I would like to have opinion from someone who is more familiar with C++.

The CI was green before (now failing because of network issues Service Unavailable [IP: <IP_ADDRESS> 80]), so I hope it stays green :)
Who can be a person more familiar with C++?

Who can be a person more familiar with C++?

I think everyone except me :-D. @da-woods or @scoder but I am not sure how busy they are so we need to be patient.

The PR looks fine to me. I'd like to make sure it's green first, and it looks like something external is failing still.
I'll try rerunning it tomorrow and merge it if it works then.

Thanks @matusvalo and @da-woods ! It was very green before the rebase and the errors seem like spurious network issues: rerunning should do.

Thanks.
3.0.x commit is c73eb9ee0

Looks like the backport to 3.0.x does not work in Py2.7 for some reason:
======================================================================
FAIL: double_proj (line 233) (complex_numbers_cpp.__test__)
Doctest: complex_numbers_cpp.__test__.double_proj (line 233)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/usr/lib/python2.7/doctest.py", line 2224, in runTest
    raise self.failureException(self.format_failure(new.getvalue()))
AssertionError: Failed doctest test for complex_numbers_cpp.__test__.double_proj (line 233)
  File "/home/runner/work/cython/cython/TEST_TMP/1/run/cpp/complex_numbers_cpp/complex_numbers_cpp.so", line unknown line number, in double_proj (line 233)

----------------------------------------------------------------------
File "/home/runner/work/cython/cython/TEST_TMP/1/run/cpp/complex_numbers_cpp/complex_numbers_cpp.so", line ?, in complex_numbers_cpp.__test__.double_proj (line 233)
Failed example:
    double_proj(-float("infinity") + 4j)
Expected:
    (-inf+0j)
Got:
    (inf+0j)
----------------------------------------------------------------------
File "/home/runner/work/cython/cython/TEST_TMP/1/run/cpp/complex_numbers_cpp/complex_numbers_cpp.so", line ?, in complex_numbers_cpp.__test__.double_proj (line 233)
Failed example:
    double_proj(5 - float("infinity")*1j)
Expected:
    (inf+0j)
Got:
    (inf-0j)

======================================================================
FAIL: double_proj (line 233) (complex_numbers_cpp.__test__)
Doctest: complex_numbers_cpp.__test__.double_proj (line 233)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/usr/lib/python2.7/doctest.py", line 2224, in runTest
    raise self.failureException(self.format_failure(new.getvalue()))
AssertionError: Failed doctest test for complex_numbers_cpp.__test__.double_proj (line 233)
  File "/home/runner/work/cython/cython/TEST_TMP/1/run/cpp/complex_numbers_cpp_directives_cpp_locals_True/complex_numbers_cpp.so", line unknown line number, in double_proj (line 233)

----------------------------------------------------------------------
File "/home/runner/work/cython/cython/TEST_TMP/1/run/cpp/complex_numbers_cpp_directives_cpp_locals_True/complex_numbers_cpp.so", line ?, in complex_numbers_cpp.__test__.double_proj (line 233)
Failed example:
    double_proj(-float("infinity") + 4j)
Expected:
    (-inf+0j)
Got:
    (inf+0j)
----------------------------------------------------------------------
File "/home/runner/work/cython/cython/TEST_TMP/1/run/cpp/complex_numbers_cpp_directives_cpp_locals_True/complex_numbers_cpp.so", line ?, in complex_numbers_cpp.__test__.double_proj (line 233)
Failed example:
    double_proj(5 - float("infinity")*1j)
Expected:
    (inf+0j)
Got:
    (inf-0j)

https://github.com/cython/cython/actions/runs/8370946075/job/22919164368

@scoder actually the values returned by this test seem correct to me, according to the definition of std::proj(std::complex). I'll look into this today.

Probably https://github.com/cython/cython/pull/6111 - see if it works. I think the issue was that two double_proj functions were defined.
I've looked at the generated code and all it's doing is calling the standard library. What we want to test is that we call the right standard library functions, not that the standard library works. So if the standard library is being inconsistent we just need to make the definitions looser. But hopefully #6111 will sort it.

@da-woods good catch and thank you for fixing this!


Add support for OpenAI's text to speech API

How to use OpenAI's text to speech API
import AIProxy

let openAIService = AIProxy.openAIService(
    partialKey: "partial-key-from-your-developer-dashboard",
    serviceURL: "service-url-from-your-developer-dashboard"
)

do {
    let requestBody = OpenAITextToSpeechRequestBody(
        input: "Hello world",
        voice: .nova
    )

    let mpegData = try await openAIService.createTextToSpeechRequest(body: requestBody)

    // Do not use a local `let` or `var` for AVAudioPlayer.
    // You need the lifecycle of the player to live beyond the scope of this function.
    // Instead, use file scope or set the player as a member of a reference type with long life.
    // For example, at the top of this file you may define:
    //
    //   fileprivate var audioPlayer: AVAudioPlayer? = nil
    //
    // And then use the code below to play the TTS result:
    audioPlayer = try AVAudioPlayer(data: mpegData)
    audioPlayer?.prepareToPlay()
    audioPlayer?.play()
}  catch AIProxyError.unsuccessfulRequest(let statusCode, let responseBody) {
    print("Received \(statusCode) status code with response body: \(responseBody)")
} catch {
    print("Could not create ElevenLabs TTS audio: \(error.localizedDescription)")
}

Oh, please also slot your PR description into the README as well. A good spot is following the header ### How to get Whisper word-level timestamps in an audio transcription

Thank you for contributing @adityadaniel!


Why you are not using $argv for your functions

Just would like to know why you are not using $argv on any of your commands? I think will be more flexible if using, for example the implementation for gpsf that I propose to merge on #18
Wait for your answer.

@agb80
I'm sorry. I guess I just forgot.
some command may forgot or temporary..

Merged


webrtc: CloseWrite

Implemente CloseWrite for WebRTC channels.
Since WebRTC DataChannels distinguish between "text" and "binary" messages, but
qtalk only sends binary data, we could use "text" messages to send other
control messages like "EOF" to signal that the channel was closed for writes.

nice


Allow queues not to be persisted when unsubscribed

Hello,
I am using https://github.com/cdmbase/graphql-rabbitmq-subscriptions which uses this pubsub, and I noticed that when a client disconnects, the pubsub unsubscribes successfully, but only cleans the consumers, not the queues.

As seen on the picture above, RabbitMQ queues continue to stack, and it becomes problematic when we have thousands of users.
Is there a way to change this behavior ?
I was thinking about passing a autoDelete: true to the queues when created... But your opinion is very welcomed 😃

Oh my god i am struggling from this problem for few years.
I am trying to find out how to remove all queues since in couple of hours usage rabbitmq consumes too much memory.
In the meantime any idea how to get rid of the queues did you figure out ?
I will research more further about this scenario.
@xaviertholot

Oh my god i am struggling from this problem for few years.
I am trying to find out how to remove all queues since in couple of hours usage rabbitmq consumes too much memory.
In the meantime any idea how to get rid of the queues did you figure out ?
I will research more further about this scenario.
@xaviertholot


Finds Telegram channel but says "Unable to find channel. The channel is non-existing or non-public."

Describe the bug
Finds Telegram channel but says "Unable to find channel. The channel is non-existing or non-public."
To Reproduce

Go to 'https://rss-bridge.org/bridge01/'
Enter 'https://t.me/OANNTV'
Click 'Find feed from URL'
See error

channel preview is disabled. i think it is


v2.0.2

Parse countrycodes that are different in the VIES database:

GR = EL
GB = XI (Northern Ireland)

shuoldn't this be merged to master ? :) @NKoonen


Bug fix

idaskins on IDA 7.0 on macos 10.13.4+ raised an error on reg_read_string for QFontDatabase.systemFont(QFontDatabase.FixedFont).family()
Returning a standard fixed font ie 'Menlo' or 'Monaco' fixes the issue.
Included the original call for linux

Thanks for the contribution! What's the error? If it doesn't work on macOS, chances are it doesn't work on Linux either. Unfortunately, I do not have licenses for either platform and the 7.0 free release doesn't include IDAPython.

Hmmm, I think I know what's wrong. The Qt functions returns a unicode object and IDASkins expects str. IDA doesn't like unicode objects. Does appending .encode() after .family() happen to fix the error?

Ah. I tinkered with it (tried data(), constData() and realized heck the windows version is just bruteforcing 'Consolas', why not just brute force 'Menlo' :)
I'll give encode() a shot right now...


docs(ic): updated backward compatibility and versioning according to latest Catena-X guidelines

Changes here include:

Rework of non-funcational requirement for backward compatibility and versioning to reflect the changes in the overall Catena-X guidelines
Removed deprecated content (e.g., no longer valid EDC asset properties for notifications, deprecated aspect models)

@mhellmeier We also need to remove the deprecatedc APIs for notifications (v1.1.0 and v1.2.0) once the updated versions are available.

With the latest commit, I updated the API backward compatibility part as the version number should be specified without patch version.

@mhellmeier We also need to remove the deprecatedc APIs for notifications (v1.1.0 and v1.2.0) once the updated versions are available.

I will do this in another branch and PR.


Revert "Merge pull request #64 from travis-ci/ag-ce-raise-on-missing-…

…token"
This reverts commit 79bf24bc485420730745aa78af957e80247882f8, reversing
changes made to dbdd8e0403f804420bf61feb14813eb6518357a8.

Is there some autoformatting at play here? Single vs double quotes?

@joe this PR included some change in quotes, so this commit reverts them now


Implement TypeManager for copying, deleting data, comparing and calculating a hash.

The functionality is implemented within a typed memory region.


PythonToolsMockTests fail with MEF composition issues

System.ComponentModel.Composition.ImportCardinalityMismatchException:
No exports were found that match the constraint:
	ContractName	Microsoft.PythonTools.Editor.PythonEditorServices
	RequiredTypeIdentity	Microsoft.PythonTools.Editor.PythonEditorServices

@AlexanderSher is this resolved now? Feel free to close.


set the region of dynamoDB explicitly

as decribed here: https://github.com/awslabs/serverless-cf-analysis/issues/2
It seems we need to set the region for the dynamo db client explicitly when we're using eu-west-1 for example.
I'm no Java expert so if you want to do this differently or you think this should not be needed please let me know how it should work otherwise.
Thanks!

After upgrading the Athena driver to AthenaJDBC41-1.1.0 the following error was fixed:
An error occurred while adding partitions.: java.lang.IllegalStateException
java.lang.IllegalStateException: An error occurred while adding partitions.
at com.amazonaws.services.lambda.model.TableService.addPartitions(TableService.java:58)
at com.amazonaws.services.lambda.CreateAthenaPartitionsBasedOnS3EventWithDDB.handleRequest(CreateAthenaPartitionsBasedOnS3EventWithDDB.java:71)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
Caused by: java.sql.SQLException: Failed to run query
at com.amazonaws.athena.jdbc.AthenaStatement.execute(AthenaStatement.java:215)
at com.amazonaws.services.lambda.model.TableService.addPartitions(TableService.java:54)
... 5 more
Caused by: com.amazonaws.athena.jdbc.shaded.com.amazonaws.services.athena.model.AmazonAthenaException: No Such Method (Service: AmazonAthena; Status Code: 400; Error Code: UnknownOperationException; Request ID: 68b9ebe4-dd70-11e7-9a8f-85e1113934c9)

This is the query that the function is executing:

ALTER TABLE sampledb.cf_logs ADD IF NOT EXISTS PARTITION (Year='2017',Month='12',Day='10',Hour='06') LOCATION 's3://sr-logs-stream/2017/12/10/06/'


Make compatible with GCC

Changes for GCC compatibility:

Added GCC-only hack for winrt::impl::bind_in mentioned in https://github.com/microsoft/cppwinrt/pull/1234 (upstream: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61663)
Fixed the WINRT_IMPL_LINK macro to properly declare the symbol as global (GNUC).
Added GCC-only hack move constructors to the awaitables in resume_after and resume_on_signal because GCC adds useless moves in co_await (suspect to be https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99575)
Added GCC-only hack copy constructor to thread_pool because GCC seems to want it when building the thread_pool.cpp test (suspect to be https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103963)

Note that this also changes the m_pool field to be a std::shared_ptr.

Fixed signed overflow in winrt::clock if system_clock has nanosecond resolution
Miscellaneous test fixes and disabled some unbuildable or unreliable tests
Added CI for GCC using msys2

I also tried adding a cross build test, but Ubuntu has only GCC 10 and even the mingw-w64 on Arch Linux isn't recent enough to have sufficiently working headers (some fixes are not in the latest release).

General changes:

Enabled colour diagnostics and test output for all CI builds
Include directxmath.h only if it exists (for compatibility with older mingw-w64 headers)
Tagged async_propagate_cancel test as mayfail so that it doesn't block CI (please fix with https://github.com/microsoft/cppwinrt/issues/1243)

I am not happy with the move/copy constructor hacks, but they seem unavoidable unless GCC have their bugs fixed...
CC @Biswa96 @mstorsjo

Ah the msys2 workflow uses the msys2/setup-msys2@v2 action. @kennykerr can you allow it too?

Ah the msys2 workflow uses the msys2/setup-msys2@v2 action. @kennykerr can you allow it too?

done

FYI - I don't see any problems with these changes besides what you already addressed.  The details are beyond my expertise so I'm not going to officially sign off.  (I am not a contributor so my signoff wouldn't help much anyway).


YouTube still detects AdSkipper and blocks playback

I am writing to report Adskipper 4.1. Unfortunately, the extension can still be detected by YouTube, leading the playback to be blocked. While Adskipper is designed to resolve the issue by automatically reloading the page, this forces the video to restart from the beginning each time. This behavior is quite frustrating, and it would be great if the video could be resumed at the exact point it was interrupted rather than restarting from the beginning.

I am seeing the same issue with the latest version from the Firefox addon "store"... I do admit that I have Ublock origin installed (which blocks the ads) but i disabled that on Youtube(to test this addon) ...(not uninstalled UO to be clear)


Update checkmarx-ast-cli binaries with 2.0.22

Updates checkmarx-ast-cli to 2.0.22
Auto-generated by [create-pull-request][2]

Checkmarx AST – Scan Summary & Details – 1d304cbd-c443-4071-9944-41f07d2c9d16
No New Or Fixed Issues Found


Support Django 5.0

Django is currently version locked to <5.0.0, preventing usage of this package on Django 5.
Are there any plans to support Django 5 in the future?
Thanks for the great product and library!

Thanks for notifying about this, @collindutter.
I don't think there is anything in Django 5 that's stopping judoscale-python from supporting it. @adamlogic I've created a PR (#81) to expand support Django version range to cover Django 5.x.x as well.

Thanks @karls!! I just released v1.7.0 with support for Django 5.


[Azure Stack] Updates to Subscriptions module

Latest improvements:
MSFT employees can try out our new experience at OpenAPI Hub  - one location for using our validation tools and finding your workflow.

Contribution checklist:

[ ] I have reviewed the documentation for the workflow.
[ ] Validation tools were run on swagger spec(s) and have all been fixed in this PR.
[ ] The OpenAPI Hub was used for checking validation status and next steps.

ARM API Review Checklist

[ ] Service team MUST add the "WaitForARMFeedback" label if the management plane API changes fall into one of the below categories.
adding/removing APIs.
adding/removing properties.
adding/removing API-version.
adding a new service in Azure.

Failure to comply may result in delays for manifest application. Note this does not apply to data plane APIs.

[ ] If you are blocked on ARM review and want to get the PR merged urgently, please get the ARM oncall for reviews (RP Manifest Approvers team under Azure Resource Manager service) from IcM and reach out to them.
Please follow the link to find more details on API review process.

/azp run automation - sdk

Can one of the admins verify this patch?

/azp run automation - sdk

Appears to be breaking change on preview spec.

/azp run automation - sdk

@viananth
It is OK to have breaking change in preview. Please review the list and confirm these are what is intended.
https://dev.azure.com/azure-sdk/public/_build/results?buildId=346241&view=logs&jobId=08b5038d-1e84-5877-88da-859df8312b69&j=08b5038d-1e84-5877-88da-859df8312b69&t=c1978ecd-fc8a-5291-6d7a-7dd459d8b50f
After confirmation, let me know when you intend to merge the PR.

@weidongxu-microsoft Thank you, the breaking changes were intended for this update. Please merge this PR.

@akning-ms Would please help merge this PR? Break change on preview, and author verified that these are intended.


First description of the interface

To be discussed:

if we want to provide a default algebra implementation, then we need an abstract supertype is order to override the Base package operators. We could make inheritance from a LorentzVectorBase abstract type as optional.
Constructor from a LorentzVector. The constructor will need to take an argument of any type. It's probably ok. The Table.jl interface has a materializer() method that returns the "constructor". Maybe there is a reason for doing this way?


⚠ Bofrost.de has degraded performance

In 63a26ed, Bofrost.de (https://www.bofrost.de) experienced degraded performance:

HTTP code: 200
Response time: 2483 ms

Resolved: Bofrost.de performance has improved in 60d06a2 after 28 minutes.


8.0 specification

Can you please upload latest language specification for C# (I guess version 8.0). What I can see here are proposals rather than specification

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: a60b6e17-36cf-bd6c-1b76-d38f1760a816
Version Independent ID: 0fdeaa81-c3c2-c290-224e-792fcee9b297
Content: C# reference
Content Source: docs/csharp/language-reference/index.md
Product: dotnet-csharp
Technology: csharp-language-reference
GitHub Login: @BillWagner
Microsoft Alias: wiwagn

We are working to update them. There's quite a backlog, so it will take some time.


fix: tweak tree-sitter markup highlights

As discussed in #53. We can still tweak this later if necessary, but it's a improvement as you said.

Thank you


Move the Perlang project hosting to self-hosted GitLab instance

At some point, I believe we should move the Perlang hosting to a self-hosted GitLab instance, for a few different reasons:

Better autonomy. As the Debian project describes it:

This account is not intended to serve as the canonical (specified with Vcs-* fields of debian/control) location for corresponding Debian source packages. Most often such repositories should be made available on the Debian project's public forge Salsa to guarantee autonomy.

"Autonomy" in the previous sentence links to this page: https://web.archive.org/web/20081002034726/http://autonomo.us/2008/07/franklin-street-statement/
Using GitLab means we, as a project, will have full control over the repository. GitHub outage, because of problems with their hosting? Forget it. Of course, we can instead have "our own" outages, but still, this give us more control over a critical part of our own infrastructure.

More freedom. We are currently relying upon GitHub (which is a proprietary, SaaS-hosted software). The free (as in freedom) version of GitLab, namely GitLab Community Edition is licensed under the MIT Expat license, a license which qualifies as Free Software by the FSF and Open Source by the OSI.

Be able to use GitLab CI. GitHub Actions work quite well, but it does have certain disadvantages. One of the things I   particularly dislike is the "Status checks that are required" which is configured via "branch protection rules" under https://github.com/perlang-org/perlang/settings/branches. Here, the required status checks are configured. There's just one problem with this: it makes the CI settings configured in the web interface be tightly coupled to the action names defined under .github/workflows. You rename one of these, and the CI settings break. I find this rather fragile and I think the GitLab CI approach - where much more of this is defined in .gitlab-ci.yml is much preferable.

Using GitLab CI with GitHub can be done though, but:

It requires GitLab Premium or Ultimate (i.e. the paid-for tiers)
It still doesn't free you from the obnoxious "Status checks that are required" problem described above.

In general, I think GitLab CI has more features (caveat: I've only used the commercial subscription options for GitLab thus far; the Community Edition is more limited by nature, even though GitLab (the company) does their best by e.g. stating that "[the] majority of new features made by GitLab Inc. will be open source". We should probably set up a "public pilot" for this an try it out (on our own/self-controlled hardware), to ensure that the feature set matches our requirements.

Have control over our own CI log retention times. GitHub only lets us retain logs for 90 days, which is fine for many cases but what about the ones where it isn't? What if we want to view the logs for something that happened 6, 12 or 18 months ago? Relating back to the "autonomy" point above, hosting our own GitLab instance gives us much better control over settings like this.

Why not just host it on gitlab.com?
This would clearly be an option, but:

This won't give us full autonomy.
If we still want to host it ourselves at some point, we will be updating URLs multiple times which will be inconvenient.
Public projects on gitlab.com has a limit of 400 compute minutes per month (https://about.gitlab.com/pricing/#compute-minutes). This can easily become a problem. We can request to be part of the GitLab Open Source program, which increases this limit greatly; it has to be renewed and approved by GitLab yearly.
GitLab.com has CI runners only for Linux at the moment, with Windows and macOS support in Beta (2023-11-27). If we host our own (on e.g. Azure), we can run Linux and Windows with GitLab Runner. macOS will be more challenging (we need to run it on our own hardware or find a cloud-provider which will sponsor us with macOS cloud VMs). Maybe the latter will be doable when we are ready for this.

Having that said, moving to gitlab.com as a first step would mean that we are better prepared for one day hosting it ourselves. We will have a CI configuration which already works out-of-the-box on GitLab CE (unless we use any EE-only features), so in this sense moving to gitlab.com would be a step in the right direction Also, it would be a smaller step than doing a "full" migration to a self-hosted instance.
Other options

Switch to Gitea. This is what Jeff Geerling has done.

Freely available under the MIT (Expat) license, similar to GitLab CE.
Seems to use a CI system similar to GitHub Actions though, so we can't really take advantage of the .gitlab-ci.yml approach if we go this route.
Importing from GitHub doesn't seem to be supported; importing the Git history is obviously easy, but doing a full import including issue and pull request history doesn't seem to be supported out of the box. Compare this to GitLab, where the import seems to cover much more: https://docs.gitlab.com/ee/user/project/import/github.html

Switch to Codeberg

More limited CI, or rather, CI with a manual on-boarding process. Not yet investigated whether the capabilities provided by Woodpecker CI is on par with GitLab CI and/or GitHub Actions.

Hosting options

Host it in a public cloud; pay for it or try to get sponsored hosting somewhere.
Host it ourselves, and pay for colocation or a business Internet connection + hardware.

Both of these options means that we will need to:

Take care of maintaining the OS and perform OS upgrades as necessary.
Upgrade GitLab regularly, to get new features and security updates in place. This is not a very complex process, but it still means a little bit of work every month when a new version is available.
Take care of operations ourselves. For example, the ISC GitLab has had to put measures in place because of a high volume of spam accounts being created. We can of course mitigate this to an extent by limiting/preventing new user accounts from being created, but that risks to unnecessarily raise the bar for contributors.

This an argument in general against migrating away from GitHub, for that record. Many people have a GitHub account and can easily jump in to a discussion. Not many people will have a Perlang GitLab account, from day one. But could this also possibly be a positive thing sometimes? It it always just bad that people have to put in a little bit of effort before jumping in to a random discussion...?

If/when we do this:

We should close all issues here, to make things less confusing. Perhaps even delete them altogether? (but that breaks web history a bit) Or at least lock them from further comments.
We keep the repo here as a push-mirror (or even two-way mirror if we are brave and GitLab supports it?) of the self-hosted GitLab instance.
We should add a new, pinned issue with a link to the new project URL, to make it easy for people to find the new home for the project.

Deciding on the host name
One of these would make most sense:

git.perlang.org
gitlab.perlang.org

Real-world examples
(inspired by https://wiki.p2pfoundation.net/List_of_Community-Hosted_GitLab_Instances)

https://salsa.debian.org
https://gitlab.gnome.org/
https://gitlab.haskell.org/
https://gitlab.freedesktop.org - this one has some interesting CI templates which could potentially be of use to us.
https://gitlab.trisquel.org
https://code.videolan.org

Conclusion

gitlab.domain.tld seems to be the more prevalent option. Will go with that, i.e. gitlab.perlang.org in our case.

Steps remaining

[x] Create virtual machine in an appropriate cloud provider

We have chosen Hetzner for this, since it's a provider that we already use elsewhere and are familiar with. Their pricing is also very reasonable and their web interface is also nice.

[x] Create DNS record for gitlab.perlang.org
[x] Install GitLab CE
[ ] Set up OAuth-based authentication for the following authentication providers. This should lower the bar for people to contribute to the project.

[x] Google
[ ] GitHub
[ ] GitLab (i.e. gitlab.com.

[ ] Create a perlang group
[ ] Import the project from GitHub to perlang/perlang
[ ] Disable new group and project creation (to avoid spam because we are allowing anyone to signup to our GitLab instance)
[ ] Ensure outgoing email/SMTP works, so that e.g. notifications can be sent.
[ ] Enable push mirroring from https://gitlab.perlang.org/gitlab/gitlab to https://github.com/perlang-org. This way, people can still continue using the GitHub repo to follow what's happening in the project to an extent.
[ ] Mass-update all existing issues to:

[ ] Mark them as Locked, to prevent further comments to be posted on GitHub.
[ ] As a courtesy to people reading the issues, add a link at the beginning of each issue (and preferably also PR) referring people to the new URL. (Is there a tool available for things like this? 🤔)

After the initial conversion has taken place

[ ] Add CI configuration, so that we can run (some of the) CI on GitLab CI. GitHub CI jobs will still function, because of the push mirror mentioned above.

There we go, the import is now done so this will be the final comment written here. Let's continue in the new URL: https://gitlab.perlang.org/perlang/perlang/-/issues/423


An error occurred while Rails/UniqueValidationWithoutIndex cop was inspecting

Actual behavior
An error occurred while Rails/UniqueValidationWithoutIndex cop was inspecting ...
Steps to reproduce the problem
Run rubocop.
1964 files inspected, no offenses detected
33 errors occurred:
RuboCop version
$ [bundle exec] rubocop -V
1.31.0 (using Parser <IP_ADDRESS>, rubocop-ast 1.18.0, running on ruby 3.1.2 arm64-darwin21)
  - rubocop-performance 1.14.2
  - rubocop-rails 2.15.1
  - rubocop-rspec 2.11.1

Rails 7.0.3

Can you provide the schema definition of db/schema.rb with the reproduction model?

Sorry, my fault.
I had an issue with the schema!


Adds stats section to index with current SF weather

Wanted to try out https://lil.software/api/ and decided to add the current SF temp. I think a stats section of things I care about cold be cool. Although I might move this to some type of HUD.

📝Changed routes:

/

(view full size)

And 1 other route:

/api/weather

Commit baba6b2a19abc3b007e9c42f51b3b717eefdb22a (https://michaelschultzcom-git-ms-lilapi-weather.michaelschultz.now.sh).


Files deployment

Table of Contents
Description
initial files added
Contributing has more information and tips for a great pull request.

@zeobot set lc to pass

@zeobot set lc to pass


remove resources/_gen #761

Fixes #761
Removed the whole resources/_gen as its auto-generated when the hugo command is run.
This PR has been deployed on https://keptndocs.benro.tech for testing purposes to ensure Netlify is able to deploy the website properly

Sorry for the late response. It seems that something is not working with our netlify deploy preview/step:
10:06:59 AM: Executing user command: hugo
10:07:00 AM: Building sites …
10:07:00 AM: ERROR 2021/04/15 08:07:00 error: failed to transform resource: TOCSS: failed to transform "scss/style.scss" (text/x-scss): this feature is not available in your current Hugo version
10:07:14 AM: Total in 14693 ms
10:07:14 AM: Error: Error building site: logged 1 error(s)

I was running a test locally and it is working on my End with Hugo 0.55
hugo version
Hugo Static Site Generator v0.55.4/extended darwin/amd64 BuildDate: unknown

Which Hugo version did you try with Netlify @DarthBenro008 ?

I've now changed the Ubuntu image to 16.04 to be able to upgrade to Hugo 0.55 on the netlify build.
This is the build: https://app.netlify.com/sites/keptn/deploys/609bc147bd8a741008801a6e
However, the outcome is missing the navigation on the very top: https://609bc147bd8a741008801a6e--keptn.netlify.app/
@DarthBenro008 can you please share your settings so we can have a look

@jetzlstorfer @christian-kreuzberger-dtx I was looking into this issue, turns out I had not specified any environment variable on netlify, hence Netlify build it with the latest version for my builds.
However while developing I ran hugo 0.51 extended locally as instructed in the readme

I set my version HUGO_VERSION to 0.53 manually on Netlify and re-triggered the build (also ensuring to purge any image caching).

running ubuntu 16.04 on Netlify by default:

These are the logs and it builds successfully: https://app.netlify.com/sites/hopeful-jones-ae4868/deploys/609bcc3eab0052fe0d11ee56
The build result can be checked here: https://keptndocs.benro.tech/ or https://609bcc3eab0052fe0d11ee56--hopeful-jones-ae4868.netlify.app/
I suggest overcoming such issues by adding HUGO_VERSION in the netlify.toml file as mentioned in the Netlify docs

Hi @DarthBenro008
I verified with Ubuntu 16.04 and HUGO_VERSION 0.53 and this is now working it seems.

Hey, @jetzlstorfer thanks for pointing that out! It's really weird that a folder/file that was included in .gitignore was tracked and pushed 😅 . Nevertheless, I have added it back. Should I create an issue to add the HUGO_VERSION in netlify.toml file as mentioned in the Netlify docs? I think this would help contributors to have a similar environment when they host it on their netlify account for development/testing purposes

Hi @DarthBenro008 yes please create an issue and if possible even a PR to fix it :)
Thanks!


Contributing guidelines (github.io)

Closes #923 => Adds contributing guidelines for github.io. This branch also updates the information in the github.io webpage, which still stated the GGIR version 2.9-5 (I did this to make sure the contributing guidelines were precise).

Checklist before merging:

[x] Existing tests still work (check by running the test suite, e.g. from RStudio).
[ ] Added tests (if you added functionality) or fixed existing test (if you fixed a bug).
[x] Updated or expanded the documentation.
[x] Updated release notes in inst/NEWS.Rd with a user-readable summary. Please, include references to relevant issues or PR discussions.
[ ] Added your name to the contributors lists in the DESCRIPTION and CITATION.cff files.

Codecov Report

Merging #924 (bb38a45) into master (6eefd87) will not change coverage.
The diff coverage is n/a.

:exclamation: Current head bb38a45 differs from pull request most recent head 856a709. Consider uploading reports for the commit 856a709 to get more accurate results

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
@@           Coverage Diff           @@
##           master     #924   +/-   ##
=======================================
  Coverage   78.17%   78.17%
=======================================
  Files          92       92
  Lines       12289    12289
=======================================
  Hits         9607     9607
  Misses       2682     2682

@jhmigueles
Could you add more clarification on "Create a new html vignette with the new chapter information."
Does pkgdown create these html files or is the developer expected to write those?
What are the steps the developer should do: Copy and edit a random html file from docs/articles?
I imagine there are a lot of things to consider, is there an tutorial by pkgdown on how to write these html files?
I just made one commit to try to improve some of the paragraphs, but this line about html I think is better if you do it.

It can be done as any other vignette, either copying/pasting one of the other files or with usethis::use_vignette(). At least this is how I have done this in the past, there is nothing specific to pkgdown here, and there are no functions in pkgdown to create these vignettes. Do you want me to specify the copy/paste or the usethis option? Or both?

I have expanded the documenation on how to contribute on the vignettes and github.io chapters following your feedback. Let me know if the instructions are clear now.


catalog-backend: disallow non-url location registration

Hey, I just made a Pull Request!
This is the intended behavior and the only thing that is supported by the frontend.
A controversial point here is whether this should be considered a breaking change, or at least whether we should allow for some kind of configuration of this behavior in the backend. It's not impossible that there are scripts or workflows out there that register other location types, but that is not something we intend to support via the location service.
:heavy_check_mark: Checklist

[x] A changeset describing the change and affected packages. (more info)
[ ] Added or updated documentation
[x] Tests for new functionality and regression tests for bug fixes
[ ] Screenshots attached (for UI changes)
[x] All your commits have a Signed-off-by line in the message. (more info)

MEGA APPROVED.


New WebExt version remains impossible to install from AMO in Firefox Nightly 57.0a1 (2017-08-31)

In the AMO page, the addon seems installable: Add to Firefox button is green. But when clicking it, I get a Resurrect Pages could not be installed because it is not compatible with Nightly 57.0a1.
Am I doing anything wrong?

Mozilla is arbitrarily strict about which minimum versions you can put, so expected.

Mozilla is arbitrarily strict about which minimum versions you can put, so expected.

@arantius thanks for the prompt answer and no problem with the closing, but I don't understand what you mean, could you detail? When will it be installable? In which Firefox version?


refactor(copy): update copy for tab engine and explorer

:tada: This PR is included in version 1.3.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


WFLY-12339: upgrade PicketLink to 2.5.5.SP12-redhat-00006 to fix CVE-…

upgrade PicketLink to 2.5.5.SP12-redhat-00006 to fix CVE-2019-3872 and CVE-2019-3873
https://issues.jboss.org/browse/WFLY-12339
Thanks for submitting your Pull Request!
Please make sure your PR meets the following requirements:

[x] Pull Request title is properly formatted: [WFLY-XYZ] Subject or WFLY-XYZ Subject
[x] Pull Request contains link to the JIRA issue(s)
[x] Pull Request contains description of the issue(s)
[x] Pull Request does not include fixes for issues other than the main ticket
[x] Attached commits represent units of work and are properly formatted

For bigger changes, major and minor component upgrades make sure your PR also meets following requirements:

[ ] Pull Request requires a change to the documentation
[ ] Documentation have been updated accordingly
[ ] Tests were added to cover changes

For new features ensure as well:

[ ] Analysis was done
[ ] Test Plan has been done
[ ] Tests were verified in advance

If you are not an active contributor of the WildFly project you can request sponsorship by one of the members to help guide you through the process.

retest this please


chore: clean up console upon firing up the CLI

Summary
Currently there's some irrelevant DEBUG-level type logging happening when using the CLI, here I'm doing the following things:

setting the default logging level to INFO, which is the normal/sane default usually used in software
downgrading unimportant messages in the console from INFO to DEBUG
adding a dash of color on the title (bolded-white) and config loading INFO (cyan)
turning off load limiter RATELIMIT_ENABLED to False when not in a production environment (added a note to UPDATING.md for that)

Screenshots

Hi, I have a similar PR which is a more comprehensive take on defaulting to info logs - we hard-code debug log level outside of the config.py script, so we need to clean that up too.


Optimization: RocksDbHotDao.addVotes consumes ~30% of long sync performance

Description

Every individual vote is stored to DB which seems sub-optimal. Likely it would be more optimal to keep in-memory map and save/load it as a solid

PR #3427 takes a chunk out of the numbers, but its an incremental improvement - doesn't change the overall design just puts in a custom serializer so that none of the decision points in the generic serializer are required.
The improvement is fairly decent for both deserialize and serialize, added a benchmark test and outputs in the PR mentioned above. I won't close this ticket, but it's worth noting that there's been reasonable improvements.
Over long sync, I was previously seeing addVotes as roughly 54% of the 'doUpdate' time, and after the change it's down to about 39%.

I synced the latest master to mainnet for 10 minutes from the genesis block and used the Java Flight Recorder to generate the flame graph below and addVotes function was nowhere visible.
This might not be an issue anymore, but the difference in our results are so stark that it might be a good idea for you to re-run the profiler.

so it's reporting 36% of the update time now during a long sync of pyrmont...

so it's reporting 36% of the update time now during a long sync of pyrmont...

During long sync on Prater storeVotes takes roughly 40% of overall sync process (excluding BLS verification in ForkJoinPool):

Potential idea to optimize this:

keep the full Map in memory
sequentially write updates in a single serialized Map. I bet it should be much faster than writing individual entries
prune old updates
On start incrementally restore the memory map

Do you think this makes sense?

Also do we really need updating votes during long sync until some distance behind head slot?

Actually when syncing finalized blocks we could skip processing the attestations entirely for fork choice (no vote or protoarray updates).  The block processing would still process them to do the justify/finalize updates but we could skip all of fork choice.
The catch is that currently the block import process doesn't know it's importing what should be a finalized block because from it's point of view it isn't yet finalized.  We'd have to pass a hint down from the sync system.

Going to close this one out as we're not using RocksDB anymore and so much has changed in terms of performance profile that while changing the way we store votes may still be a worthwhile optimisation we should ensure we're guided by up to date profiling in deciding what to focus on first.


Support ChannelPosts

While spinning up a new bot somebody sent the bot a command from the channel being used for announcement. The gem did not handle this well:
Users/foo/.rvm/gems/ruby-2.3.0/gems/telegram-bot-ruby-<IP_ADDRESS>/lib/telegram/bot/client.rb:61:in `log_incoming_message': undefined method `from' for nil:NilClass (NoMethodError)
  from /Users/foo/.rvm/gems/ruby-2.3.0/gems/telegram-bot-ruby-<IP_ADDRESS>/lib/telegram/bot/client.rb:39:in `block in fetch_updates'
  from /Users/foo/.rvm/gems/ruby-2.3.0/gems/telegram-bot-ruby-<IP_ADDRESS>/lib/telegram/bot/client.rb:35:in `each'
  from /Users/foo/.rvm/gems/ruby-2.3.0/gems/telegram-bot-ruby-<IP_ADDRESS>/lib/telegram/bot/client.rb:35:in `fetch_updates'
  from /Users/foo/.rvm/gems/ruby-2.3.0/gems/telegram-bot-ruby-<IP_ADDRESS>/lib/telegram/bot/client.rb:27:in `listen'
  from start_league_bot.rb:13:in `block in <main>'
  from /Users/foo/.rvm/gems/ruby-2.3.0/gems/telegram-bot-ruby-<IP_ADDRESS>/lib/telegram/bot/client.rb:20:in `run'
  from /Users/foo/.rvm/gems/ruby-2.3.0/gems/telegram-bot-ruby-<IP_ADDRESS>/lib/telegram/bot/client.rb:8:in `run'
  from start_bot.rb:12:in `<main>'

start_bot looks just like the example and line 12 was bot.listen do |message|
Stepping through with pry I saw that the Update object wasn't being created successfully. Update expects a number of possible message types, such as 'message' (which is what i'm used to seeing) 'inline_query', 'callback_query', 'chosen_inline_result', etc. What's not expected is what we have, which is the key 'channel_post'. I tried some monkey patching to make it behave like a Message but the shape wasn't quite right. In the end I went with this:
require 'telegram/bot/client'
require 'telegram/bot/types/update'
require 'faraday/error'

class Telegram::Bot::Client
  def fetch_updates
    response = api.getUpdates(offset: offset, timeout: timeout)
    return unless response['ok']

    response['result'].each do |data|
      update = Telegram::Bot::Types::Update.new(data)
      @offset = update.update_id.next
      message = extract_message(update)
      return unless message
      log_incoming_message(message)
      yield message
    end
  rescue Faraday::Error::TimeoutError
    retry
  end
end

Which has the effect of ignoring any type of Message that the gem doesn't parse correctly. Hilariously once you have processed the message, you don't actually need the monkeypatch any longer, so long as you don't send any more ChannelPosts through the bot.

Types::Update now can have fields: channel_post, edited_channel_post.

Hi @oscillot
Can you try to update the gem and reproduce the error?


abstract contract's already initialized immutable variable can be re initialized by inheriting it.

Component
Forge
Have you ensured that all of these are up to date?

[X] Foundry
[X] Foundryup

What version of Foundry are you on?
forge 0.2.0 (fe2acca 2024-07-22T00:24:23.688640000Z)
What command(s) is the bug in?
forge test --mt "testName"
Operating System
macOS (Apple Silicon)
Describe the bug
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;

abstract contract Module {
    uint256 public immutable a;

    constructor() {
        a = 100;
    }
}

contract Counter is Module {
    constructor() {
        a = 200;
    }

    function getData() public returns (uint256) {
        return a; // reurns a = 200
    }
}

where as in Remix this issue gives a warning during compile time, same is missing in case of foundry also it re-initialized

Solidity thought it was a good idea to relax restrictions on immutables in the constructor now allowing re-initialization by inherited contracts.
See: https://github.com/ethereum/solidity/blob/develop/Changelog.md#0821-2023-07-19
Unrelated to Foundry