Proposal: Strongly-typed non-remoted Actor clients

Overview
The Dapr .NET SDK offers two means to invoke methods of hosted actor instances, via a strongly-typed "remoted" proxy* or via an untyped "non-remoted" proxy.  There are advantages and disadvantages to both approaches.
Remoted proxy:

Requires actor be hosted via the Dapr .NET SDK
Allows multiple arguments be defined on actor interface methods
Requires actor interfaces be public
Requires (client) actor interfaces be inherited from IActor
Requires (client) actor interfaces exactly match that of the host (e.g. naming, etc.)
Does not (currently) support JSON serialization of all types (e.g. record types)
Tends to enforce .NET naming conventions for hosted actor methods, even when used by non-.NET clients (e.g. GetStateAsync())

Non-remoted proxy:

Supports cross-platform hosted actors
Allows only a single argument be passed during method invocations
Supports broader JSON serialization of types (e.g. record types)
Loose typing introduces risk method mis-matches between actor client and host

Neither approach may be an exact fit for developer's needs.

A developer may want the benefits of a strongly-typed interface but want to use modern types or JSON serialization methods
A developer may want decoupled client/host actor interfaces in order to match differences in name and styling conventions between each
A developer may want strongly-typed ".NET native" client interfaces but allow hosted actors to offer endpoints suitable across  multiple platforms
A developer may want clients to use proper await/async patterns even if the hosted actor interface does not
A developer may want not want to expose or share the strongly-typed actor interface used by clients
A developer may want to define a strongly-typed client interface for a non-.NET-hosted actor

Proposal
I propose the .NET SDK offer strongly-typed non-remoted actor clients, using .NET source generators to generate strongly-typed actor interface implementations built upon the existing non-remoted ActorProxy proxy.
This approach would enable the following

Client interfaces could be decoupled from host interfaces (i.e. need not be shared definitions)
Client interfaces could be internal (as source generators operate "inside" the client assembly)
Client interfaces can differ in naming (by using attributes to indicate the "real" name of its corresponding hosted actor method)
Client interfaces can take advantage of the non-remoted proxy's JSON serialization capabilities but in a strongly-typed manner

Non-goals

Support for multiple arguments per method invocation
While source generators could be used to offer similar multi-argument serialization, given the ease with which values can be bundled together by the client, I believe there is little need for this capability and it is a capability that could be added later upon sufficient demand.

Design
Actors Generators Package
The source generator(s) would be implemented and distributed in a new NuGet package, Dapr.Actors.Generators.  This NuGet package would be added as a reference to client projects but using the OutputItemType=Analyzer.
Actor Client Generation
Suppose the client/host defines the actor interface:
namespace SampleActor;

public record SampleState(string Value);

public interface ISampleActor : IActor
{
  Task<SampleState> GetStateAsync();

  Task SetStateAsync(SampleState state);
}

The current remoted proxy invocation pattern would be:
var client = ActorProxy.Create<ISampleActor>("123", "ActorName");

var state = await client.GetStateAsync();

await client.SetStateAsync(new SampleState("Hello, World!"));

The current non-remoted proxy invocation pattern would be:
var client = ActorProxy.Create("123", "ActorName");

var state = await client.InvokeMethodAsync<SampleState>("GetStateAsync");

await client.InvokeMethodAsync("SetStateAsync", new SampleState("Hello, World!"));

As mentioned above, both of these approaches have a number of caveats.
Instead, the developer could indicate the desire to generate an actor client using a completely independent interface definition from that of the hosted actor:
using Dapr.Actors.Generators;

namespace ClientActor;

internal record ClientState(string Value);

[GenerateActorClient]
internal interface IClientActor
{
  Task<ClientState> GetStateAsync(CancellationToken cancellationToken = default);

  [ActorMethod(Name = "SetStateAsync")]
  Task SetClientStateAsync(ClientState state);
}

Items to note:

The client indicates generation of the actor client implementation using the GenerateActorClientAttribute
The client actor interface can be internal
The client actor interface need not inherit from IActor
The client can rename interface methods, mapping them to the host actor method name using the ActorMethodAttribute
The client can use async/await patterns (e.g. acceptingCancellationToken) even if the host actor interface does not

The generated client would be:
namespace ClientActor
{
  internal sealed class ClientActorClient : ClientActor.IClientActor
  {
    private readonly Dapr.Actors.Client.ActorProxy actorProxy;

    public ClientActorClient(Dapr.Actors.Client.ActorProxy actorProxy)
    {
        this.actorProxy = actorProxy;
    }

    public Task<ClientState> GetStateAsync(CancellationToken cancellationToken = default)
    {
        return this.actorProxy.InvokeMethodAsync<ClientState>("GetStateAsync", cancellationToken);
    }

    public Task SetClientStateAsync(ClientState state)
    {
        return this.actorProxy.InvokeMethodAsync("SetStateAsync", state);
    }
  }
}

Generated Client Use
The new proxy invocation pattern would be:
var proxy = ActorProxy.Create("123", "ActorName");

var client = new ClientActorClient(proxy);

var state = await client.GetStateAsync();

 await client.SetPrivateStateAsync(new ClientState("Hello, World!"));

Notes

Similar arguments could be made for generating actor hosts/implementations, but that is a proposal for another time
Work in progress: philliphoff/dotnet-sdk/philliphoff-generated-actors

@philliphoff - Thanks for writing up this proposal! Sorry it took me a bit to get to it, I saw the PR but somehow missed the proposal associated with it.
Overall, I think this is a good idea. My main concern is as follows:
Does this require that we make a separate interface for the Client? Or is there a way we can still have this based off the actual implementation and the code generation looks back at the interface and sees the annotations that way? My main concern here is that the two interfaces may get out of sync, which would lead to invocation problems.
Though I do see the benefits here in regards to a generated client but for an actor that exists in a different language, so ideally we'd have both.

@halspang

Does this require that we make a separate interface for the Client? Or is there a way we can still have this based off the actual implementation and the code generation looks back at the interface and sees the annotations that way? My main concern here is that the two interfaces may get out of sync, which would lead to invocation problems.

It doesn't require separate interfaces; you could still inherit from IActor and implement the service side using the same interface, but you might lose some of the benefits such as freedom to alter the names or support for record types, at least until what I'd call "phase 2" is implemented.  The next step is to do something very similar for the server side, where a skeleton actor service is generated with routes generated to map from endpoints to the appropriate method.  This would be similar to the mapping currently being done, but hopefully a bit "lighter".  It seemed best to worry about the server side as a separate issue/PR.

@philliphoff - Thanks for the clarifications! I think this is good to continue as is, looking forward to seeing what we can make out of it :)

Would it not make sense to also generate strongly types service invocation clients? Ive saw someone use refit but I think the drawback of this is uses an http client and might not use grpc if thats enabled for app protocol

@theperm If I understand you correctly, you suggest users define an interface that represents all (or some subset) of method invocation supported by an application, then using that interface to generate wrappers around the existing Dapr .NET SDK method invocation method?  That's an interesting idea.  You might even extend that idea to input/output bindings, too.  Those would both be great things to have proposals/contributions for.

Exactly. Here is someone doing it using Refit but with the HTTP client interface. Refit with Dapr
A similar concept would source generate a concrete class that would encapsulate the dapr client  calls for service invocation.  Our devs are hand rolling clients that do this anyway to make service invocation easier.


Corner Points information

Added information about corner points to the BarcodeResult. This should permit better control of selecting the appropriate barcode when multiple are present on screen. Can be used to draw the rectangle on screen.

This is a nice one, but I think the points coordination are needed to convert to Xamarin Form pointing system?

Will double check and get back with an update or feedback.

Done. Managed to map points to Forms coordinates.

cool. I will have a check and publish it asap. Thank you.

Just tried with Android and it looks the coordinate is wrong. Anyway, I will take a look when I have time

I found out that with updated CameraX, there is a function to convert ImageAnalyzer coordination to PreviewView coordination, I guess we could convert it to the correct Android coordination and then convert to Xamarin Forms.
But the problem is the latest Xamarin Forms (<IP_ADDRESS>1) is not supported to that CameraX version, so I just keep it wrong at this moment and hopefully we could start to make it correct later (maybe in MAUI).
For iOS, I didn't start to look at it.
FYI
https://stackoverflow.com/questions/66583438/camerax-qrcode-scanner-detect-wrong
https://developer.android.com/reference/androidx/camera/view/transform/CoordinateTransform


Always loading the doki theme plugin?

Is there any way to always load the plugin?
( I already tried the web-ext method but i accidentally deleted the cache and now it wont work any more )

If you are talking about the FireFox plugin, yeah, I was literally just thinking about how annoying that is today for me.
I'll work on publishing the extension to the store.

Thanks !

I just submitted the add on for review by the Mozilla Admins. Will let you know when it ready.

@Edx09 The add-on is now publicly available to be installed! No more having to re-install after restart 🎉
https://addons.mozilla.org/en-US/firefox/addon/doki-theme-for-firefox/


refactoring validate_mnemonic

I've removed the validate_mnemonic function into the frontend to add it into the rust backend by using the Tauri command...
#378

Just fixed it accordingly to your comments!


Calculator generating inflated ratings for files on Linux

After compilation on Linux and adding a pack with known ratings (from the stable 0.54.1 build) the ratings do not match and are inflated vastly.
As an example I will use the default file included Remembrance - the Single HD 10 chart of this file is given a rating of 22.90 on Linux with the Technical and Jumpstream skillsets. On the stable 0.54.1 Windows build the files is given a rating of 12.01 and only the Technical skillset is shown. When choosing the lower chart Single NM 6 the rating does go down to 17.00.
Using the Single NM 6 with a rating of 17.00 and altering the rate produces further unusual behavior. At 0.9 and 0.8 the rating remains the same (17) where as at 0.7 the rating becomes 11.62. Increasing the rate only alters the rating once 2.0 is reached and subsequently 2.1 - 3.0 all alter the rating.
Also for example on Windows if file 1 has a rating of 12 and file 2 has a rating of 15 file two is deemed to be harder. This relationship does not appear on Linux file 1 could be rated higher than file 2 - there is no correlation between difficulties.
Operating System: Ubuntu 16.04
Compiler Version: g++ 5.4.0
OpenGL Version: 3.0 Mesa 12.0.6
OpenGL Renderer: Gallium 0.4 on SVGA3D; build; RELEASE; LLVM;
Runtime Library: glibc 2.23

I am having the same issue.


LibCore+LibWeb: Use Metal backend for Skia painter on macOS

If Metal context and IOSurface are available, Skia painter will use
Ganesh GPU backend on macOS, which is noticeably faster than the default
CPU backend.
Painting pipeline:

(WebContent) Allocate IOSurface for backing store
(WebContent) Allocate MTLTexture that wraps IOSurface
(WebContent) Paint into MTLTexture using Skia
(Browser) Wrap IOSurface into Gfx::Painter and use
QPainter/CoreGraphics to blit backing store into viewport.

Things we should improve in the future:

Upload textures for images in advance instead of doing that before
every repaint.
Teach AppKit client to read directly from IOSurface instead of
copying.

macOS CI failure doesn't seem to be related to the changes:
VERIFICATION FAILED: m_pointer at /Users/runner/work/ladybird/ladybird/AK/Optional.h:428
VERIFICATION FAILED: m_pointer at /Users/runner/work/ladybird/ladybird/AK/Optional.h:428
VERIFICATION FAILED: m_pointer at /Users/runner/work/ladybird/ladybird/AK/Optional.h:428
0   liblagom-ak.0.0.0.dylib             0x0000000104c1ee40 ak_verification_failed + 560
1   liblagom-core.0.0.0.dylib           0x0000000103a6aa88 Core::(anonymous namespace)::ThreadData::for_thread(_opaque_pthread_t*) + 496
2   liblagom-core.0.0.0.dylib           0x0000000103a6b4c8 Core::EventLoopManagerUnix::unregister_notifier(Core::Notifier&) + 320
3   liblagom-core.0.0.0.dylib           0x0000000103ad1904 Core::PosixSocketHelper::close() + 404
4   liblagom-protocol.0.0.0.dylib       0x0000000103417850 Core::LocalSocket::~LocalSocket() + 144
5   liblagom-protocol.0.0.0.dylib       0x0000000103417714 AK::NonnullOwnPtr<Core::LocalSocket>::clear() + 176
6   liblagom-protocol.0.0.0.dylib       0x000000010340efb8 IPC::ConnectionBase::~ConnectionBase() + 236
7   liblagom-protocol.0.0.0.dylib       0x0000000103405bc8 Protocol::RequestClient::~RequestClient() + 36
8   liblagom-webview.0.0.0.dylib        0x0000000103e00c88 AK::RefCounted<Core::EventReceiver>::unref() const + 384
9   liblagom-webview.0.0.0.dylib        0x0000000103e78e74 WebView::RequestServerAdapter::~RequestServerAdapter() + 132
10  liblagom-webview.0.0.0.dylib        0x0000000103e78fac WebView::RequestServerAdapter::~RequestServerAdapter() + 36
11  liblagom-web.0.0.0.dylib            0x000000011076f1b8 AK::RefCounted<Web::ResourceLoaderConnector>::unref() const + 384
12  liblagom-web.0.0.0.dylib            0x00000001107860b0 Web::ResourceLoader::~ResourceLoader() + 176
13  liblagom-web.0.0.0.dylib            0x000000011076d4b4 Web::ResourceLoader::~ResourceLoader() + 36
14  liblagom-web.0.0.0.dylib            0x000000010f47ed08 AK::RefCounted<Core::EventReceiver>::unref() const + 384
15  liblagom-web.0.0.0.dylib            0x000000011075e9c0 AK::RefPtr<Web::ResourceLoader>::~RefPtr() + 96
16  libsystem_c.dylib                   0x00000001881d02e8 __cxa_finalize_ranges + 476
17  libsystem_c.dylib                   0x00000001881d0070 exit + 44
18  libdyld.dylib                       0x000000018832b8d0 dyld4::LibSystemHelpers::getenv(char const*) const + 0
19  dyld                                0x0000000187f8a12c start + 2436

macOS CI failure doesn't seem to be related to the changes:

FWIW, I'm seeing the same failure on my latest PR: https://github.com/LadybirdBrowser/ladybird/actions/runs/9697507525/job/26761801460?pr=299

@alimpfard this ThreadData crash looks related to your changes that I pulled in? Did I miss some prep commits?

Looks like I put some changes in the wrong commit, you also need the EventLoopManager changes from https://github.com/SerenityOS/serenity/commit/9f4f319277f90e7534de2b39edcc98387fc68b1d


Add JAVA_PATH to our dockerfile environment variables

This allows vscode image and our java image to build java things by default.
Prepares ability to compile unit tests using kotlin/java by default in these images.

Changes are trivial and not really verifiable (vscode image does not build in CI). Fast-tracking this.


[#2524] refatoring profiler

[#2524]

reduce cycle dependency
reduce dependencies on DynamicTransformTrigger

Codecov Report

Merging #2638 into master will decrease coverage by -0.01%.
The diff coverage is 65.21%.

@@            Coverage Diff             @@
##           master    #2638      +/-   ##
==========================================
- Coverage   40.07%   40.06%   -0.01%
==========================================
  Files        1764     1764
  Lines       60895    60920      +25
  Branches     8486     8498      +12
==========================================
+ Hits        24404    24409       +5
- Misses      36491    36511      +20

Impacted Files
Coverage Δ

.../profiler/plugin/DefaultProfilerPluginContext.java
0% <ø> (ø)
:white_check_mark:

...orp/pinpoint/test/classloader/TestClassLoader.java
75% <100%> (ø)
:white_check_mark:

...a/com/navercorp/pinpoint/test/MockPluginSetup.java
100% <100%> (ø)
:white_check_mark:

...int/profiler/context/ApplicationContextModule.java
98.18% <100%> (+0.03%)
:white_check_mark:

...point/profiler/plugin/PluginInstrumentContext.java
50% <50%> (+1.51%)
:white_check_mark:

...p/pinpoint/profiler/plugin/DefaultPluginSetup.java
21.87% <50%> (+4.63%)
:white_check_mark:

...nt/profiler/plugin/ClassFileTransformerLoader.java
52.38% <60%> (+2.38%)
:white_check_mark:

...text/provider/PluginContextLoadResultProvider.java
70.83% <66.66%> (-2.86%)
:x:

...rofiler/DefaultClassFileTransformerDispatcher.java
77.96% <71.42%> (+3.38%)
:white_check_mark:

...oint/test/MockPluginContextLoadResultProvider.java
75% <75%> (-2.78%)
:x:

... and 13 more

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 a4557f1...af0d438. Read the comment docs.


Question on scenes filtering

Hey there! Thanks for your work.
I have a question about the Aria Digital Twin dataset.
From the 200 sequences, is there a quick way to filter them?
For example, I want to get the following:

Sequences without any humans in the view
Sequences without moving objects

Hi Vladimir! Thanks for the question.
We provide a metadata file you can download using the adt_benchmark_dataset_downloader (which comes with projectaria-tools python package) which describes the content of each sequence. You can use this to filter the sequences for certain criteria. We also provide an example script to show how to filter the dataset for specific content. This example shows how to filter for sequences with skeleton, without skeleton, with multiple people, with single person, and filter by scene. See this section of the wiki that describes how to do this.
To filter for the specific content you mention:

If you filter for single user datasets (i.e., is_multi_person == false in metadata json), then there won't be any humans in the view other than the person wearing the Aria device
Unfortunately the metadata file doesn't contain information on which objects are in each sequence. However, I believe almost all datasets have some moving objects. If you want to find out more about the types of objects in each dataset, you will have to download the datasets and for each dataset: create a dataset loader, extract all instance Ids, extract the instance info for each instance, and then you can check the motion_type. Let me know if you need some more help with this!

Thanks for your response.
Are there at least some sequences passing through the exact same unchanged environment?

@VladimirYugay Do you mind closing the issue if you have all the answers you need?
If you still have some questions unanswered, please elaborate to help us provide better guidance. Thank you.


Validation

Check that Resteasy supports more than 1 validation provider
Check how to mix annotation and manual validation
Document it
Figure out how to propagate validation errors to template forms

Also see validation per OpenAPI: http://vertx.io/docs/vertx-web-api-contract/java/


add nil check on RepresentationEditor#add_link

empty string hrefs are bad

can you bump the version number, please

Did I bump it hard enough?

interesting question. probably not. i think this is probably a breaking change so the major version should get bumped.

Is it a breaking change worth making?

I amended the bump commit, so you probably didn't get a notification of file changes. Here's one.

released as 5.0.0


workflow to contribuiting with vuesax

Hi @luisDanielRoviraContreras ,
first, sorry for this issue, i dont have any channel to make this conversation with you, you can close after read.
I try to help vuesax repo, but i can make a workflow to fast and right way to test modifications for this.
Vuesax use the compiled source on node_modules, it makes to no chances get effect when change anything directly on node_modules files.
You have/can make to call with me/us for explain a best way to create app for work and make PR's for vuesax?
Thanks for read.

we can speak for personal discord and that's how we fit better and I help you

thanks for read,
please, when we have a time,  call me on discord,  Brun00#6695.
waiting for you,  ty ty...


CMake, VSCode, mac M1 - Undefined symbols for architecture arm64

I downloaded a version of precompiled library to my mac (M1 chip).
I linked the library in CMakeLists.txt in the root folder.
cmake_minimum_required(VERSION 3.0)
project(GameEngine)

add_executable(Engine src/main.cpp)

set(CMAKE_CXX_STANDARD 11)

set(GLFW_DIR ${CMAKE_SOURCE_DIR}/lib/glfw)

add_subdirectory(${GLFW_DIR})
add_subdirectory(src/Draw)
add_subdirectory(src/Utils)

include_directories(${GLFW_DIR}/include)

target_link_libraries(Engine DrawLib)
target_link_libraries(Engine UtilsLib)
target_link_libraries(Engine GLFW ${GLFW_LIBRARIES})

message(GLFWxxxLIB: ${GLFW_LIBRARIES})

target_include_directories(DrawLib PUBLIC ${GLFW_DIR}/include)
target_include_directories(Engine PUBLIC ${GLFW_DIR}/include)

I call the glfwInit() function in the Window.cpp:
Draw::Window::Window(Utils::Size size) : _size(size)
{
    // Initialize GLFW
    if (!glfwInit())
    {
        // Handle initialization failure
    }
};

I could build the project just fine and later I decided to add a logger library to the project. Since then I started to get an error message on build (even after removing the logger):
[build] [ 50%] Linking CXX shared library libDrawLib.dylib
[build] Undefined symbols for architecture arm64:
[build]   "_glfwInit", referenced from:
[build]       Draw::Window::Window(Utils::Size) in window.cpp.o
[build] ld: symbol(s) not found for architecture arm64

My includes in Window.h:
#include <iostream>
#include <GLFW/glfw3.h>

#include "../Utils/Size.h"

#pragma once

namespace Draw
{
    class Window
    {...}
}

I don't know what is the issue but long time ago I tried to do the same on mac with x86_64 architecture and had the same result: at first everything was OK but later I was getting the Undefined symbols for architecture error.

"Undefined symbols for architecture" simply means that the compiler could not find the symbol. This usually means that your libraries have not been linked properly.
I believe your issue is in CMake file at:
target_link_libraries(Engine GLFW ${GLFW_LIBRARIES})
I believe you should be linking with GLFW by:
target_link_libraries(Engine glfw)
The reason for this is because in the GLFW source, the library is built with:
add_library(glfw ${GLFW_LIBRARY_TYPE} from src/CMakeLists.txt
So when you add the library, you need to simply use glfw as the name for the library
Reference: https://www.glfw.org/docs/latest/build_guide.html#build_link_cmake_source

I believe this issue can be closed.

@AntarticCoder
I tried to leave just target_link_libraries(Engine glfw) but still get the same error.

@steamprodz
I'm not sure, but I do have a few possible changes in mind.

Maybe replace GLFW_DIR with just libs/glfw to see if it works
Remove include_directories(${GLFW_DIR}/include) as it seems to be redundant
Move your C++ standard avove add_executable
Put all of your target_link_libraries together
Lastly push your add_subdirectory commands to before add_executable

Here's the changed version:
cmake_minimum_required(VERSION 3.0)
project(GameEngine)

set(CMAKE_CXX_STANDARD 11)

add_subdirectory(${GLFW_DIR})
add_subdirectory(src/Draw)
add_subdirectory(src/Utils)

add_executable(Engine src/main.cpp)

add_subdirectory(lib/glfw)
add_subdirectory(src/Draw)
add_subdirectory(src/Utils)

target_link_libraries(Engine DrawLib UtilsLib glfw)

message(GLFWxxxLIB: ${GLFW_LIBRARIES})

target_include_directories(DrawLib PUBLIC ${CMAKE_SOURCE_DIR}/lib/glfw/include)
target_include_directories(Engine PUBLIC ${CMAKE_SOURCE_DIR}/lib/glfw/include)

I'm also working on an M1 mac and I'm also working on a similar project using CMake and GLFW. Maybe compare my CMake file with yours to see if anything is wrong.
cmake_minimum_required(VERSION 3.25)

set(CMAKE_C_COMPILER gcc)
set(CMAKE_CXX_COMPILER gcc)

set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin)
set(CMAKE_CXX_FLAGS "-std=c++17 -O3")

add_compile_options(-O0)

find_package(Vulkan REQUIRED)

if (DEFINED VULKAN_SDK_PATH)
    set(Vulkan_INCLUDE_DIRS "${VULKAN_SDK_PATH}/Include")
    set(Vulkan_LIBRARIES "${VULKAN_SDK_PATH}/Lib")
    set(Vulkan_FOUND "True")
else()
    find_package(Vulkan REQUIRED)
    message(STATUS "Found Vulkan: $ENV{VULKAN_SDK}")
endif()

if (NOT Vulkan_FOUND)
	message(FATAL_ERROR "Could not find Vulkan library!")
else()
	message(STATUS "Using Vulkan lib at: ${Vulkan_LIBRARIES}")
endif()

project(VK-Renderer CXX C)

add_executable(VK-Renderer
    ${CMAKE_SOURCE_DIR}/src/main.cpp

    ${CMAKE_SOURCE_DIR}/src/app-context/vk_instance.cpp
    ${CMAKE_SOURCE_DIR}/src/app-context/vk_device.cpp
    ${CMAKE_SOURCE_DIR}/src/app-context/vk_swapchain.cpp
    ${CMAKE_SOURCE_DIR}/src/app-context/vk_window.cpp

    ${CMAKE_SOURCE_DIR}/src/descriptors/vk_descriptor_set.cpp
    ${CMAKE_SOURCE_DIR}/src/descriptors/vk_descriptor_set_layout.cpp

    ${CMAKE_SOURCE_DIR}/src/commands/vk_command_pool.cpp
    ${CMAKE_SOURCE_DIR}/src/commands/vk_command_buffer.cpp

    ${CMAKE_SOURCE_DIR}/src/graphics-pipeline/vk_shader_module.cpp
    ${CMAKE_SOURCE_DIR}/src/graphics-pipeline/vk_renderpass.cpp
    ${CMAKE_SOURCE_DIR}/src/graphics-pipeline/vk_graphics_pipeline.cpp

    ${CMAKE_SOURCE_DIR}/src/memory/vk_buffer.cpp
    ${CMAKE_SOURCE_DIR}/src/memory/vk_vma_allocator.cpp

    ${CMAKE_SOURCE_DIR}/src/renderer/vk_renderer.cpp
)

add_subdirectory(libs/glfw)
add_subdirectory(libs/glm)
add_subdirectory(libs/VulkanMemoryAllocator)

target_include_directories(VK-Renderer PRIVATE
    ${CMAKE_SOURCE_DIR}/libs/glfw/include

    ${CMAKE_SOURCE_DIR}/libs/glm/glm
    ${CMAKE_SOURCE_DIR}/libs/glm/glm/detail
    ${CMAKE_SOURCE_DIR}/libs/glm/glm/ext
    ${CMAKE_SOURCE_DIR}/libs/glm/glm/gtc
    ${CMAKE_SOURCE_DIR}/libs/glm/glm/gtx
    ${CMAKE_SOURCE_DIR}/libs/glm/glm/simd

    ${CMAKE_SOURCE_DIR}/libs/VulkanMemoryAllocator/include

    ${Vulkan_INCLUDE_DIRS}

    ${CMAKE_SOURCE_DIR}/libs
    ${CMAKE_SOURCE_DIR}/src
)

add_compile_options(-Wno-dev)
target_link_libraries(VK-Renderer PUBLIC Vulkan::Vulkan glfw glm VulkanMemoryAllocator stdc++)

set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CMAKE_COMMAND} -E time")
set_property(TARGET VK-Renderer PROPERTY RULE_LAUNCH_COMPILE "${CMAKE_COMMAND} -E time")

Other than that, I'm not sure, though let me know if you need any help.

@AntarticCoder
I updated my CMakeLists.txt
cmake_minimum_required(VERSION 3.0)
project(GameEngine)

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

add_executable(Engine src/main.cpp)

set(GLFW_DIR ${CMAKE_SOURCE_DIR}/lib/glfw)

add_library(UtilsLib SHARED
    src/Utils/Size.h
)

set_target_properties(UtilsLib PROPERTIES LINKER_LANGUAGE CXX)

add_library(DrawLib SHARED
        src/Draw/Window.h
        # src/Draw/Window.cpp
)

set_target_properties(DrawLib PROPERTIES LINKER_LANGUAGE CXX)

# Include and link GLFW library
include_directories(${GLFW_DIR}/include)

# Link the DrawLib and UtilsLib targets to the Engine target
target_link_libraries(Engine UtilsLib)
target_link_libraries(Engine DrawLib)
target_link_libraries(Engine GLFW)

message(GLFW_LIB: ${GLFW_LIBRARIES})

target_include_directories(Engine PUBLIC ${GLFW_DIR}/include)

Now I get this error:
ld: library not found for -lGLFW

target_link_libraries(Engine
    UtilsLib
    DrawLib
    GLFW
)

I believe you should be lowercasing glfw here. However I think you might be having trouble using GLFW as a submodule. You could link to it as a package, do you have homebrew installed?

The case changing doesn't work either.
I can try with Homebrew, however I wanted to create kind of a stadalone package.

Could you try the following GLFW cmake starter (instructions in the readme) and let me know if it works or fails?
https://github.com/juliettef/GLFW-CMake-starter

I'm haing the same issue with 'M3' chip.
were you able to solve it?
Thanks

@SalaheddineSTA have you tried:
https://github.com/juliettef/GLFW-CMake-starter

I did with small changes on it
The changes i made:
set(GLFW_SOURCE_DIR "/Users/ssta/Documents/Programs/glfw-3.4")
include_directories( "${GLFW_SOURCE_DIR}/install/include")
link_directories("${GLFW_SOURCE_DIR}/install/lib")
target_link_libraries( testProject ${OPENGL_LIBRARIES} glfw3 )
CMakeLists.txt
`cmake_minimum_required( VERSION 3.1 )
project( testProject )
find_package( OpenGL REQUIRED )
include_directories( ${OPENGL_INCLUDE_DIRS} )
set( GLFW_BUILD_DOCS OFF CACHE BOOL  "GLFW lib only" )
set( GLFW_INSTALL OFF CACHE BOOL  "GLFW lib only" )
set( GLAD_GL "" )
#add_subdirectory( glfw3.4 )
option( testProject-USE-GLFW-GLAD "Use GLAD from GLFW" ON )
set(GLFW_SOURCE_DIR "/Users/ssta/Documents/Programs/glfw-3.4")
include_directories( "${GLFW_SOURCE_DIR}/install/include")
if( testProject-USE-GLFW-GLAD )
include_directories("${GLFW_SOURCE_DIR}/deps")
set( GLAD_GL "${GLFW_SOURCE_DIR}/deps/glad/gl.h" )
endif()
if( MSVC )
SET( CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /ENTRY:mainCRTStartup" )
endif()
set( testProject-SRC
test.cpp
)
link_directories("${GLFW_SOURCE_DIR}/install/lib")
add_executable( testProject MACOSX_BUNDLE ${testProject-SRC} ${GLAD_GL} )
target_link_libraries( testProject ${OPENGL_LIBRARIES} glfw3 )
if( MSVC )
if(${CMAKE_VERSION} VERSION_LESS "3.6.0")
message( "\n\t[ WARNING ]\n\n\tCMake version lower than 3.6.\n\n\t - Please update CMake and rerun; OR\n\t - Manually set 'testProject' as StartUp Project in Visual Studio.\n" )
else()
set_property( DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT testProject )
endif()
endif()
`

Did the original version, without changes, work for you?

Yes i just tried it and it is working, using https://github.com/juliettef/GLFW-CMake-starter , without changes


Ensure make stops on error from go test

Changed command separator from ; to &&.
In the absence of this (or something like set -e), make will carry on and report the exit status from the next command, which is generally 0 i.e. success.

This does have the disadvantage of stopping on the first failing test set, doesn't it? @dpw

I just checked, and actually it does the opposite - if an earlier test fails but later one succeeds it will return 0 for the whole lot.  Back to the drawing board.

This does have the disadvantage of stopping on the first failing test set, doesn't it? @dpw

Looks like it,
It should probably be restructured so that there is an tests empty target that depends on some per-dir test runner targets.  It can probably be done with a static pattern.

We had two much simpler variants before and after https://github.com/weaveworks/weave/commit/592be90904288c7e6be08e2c27fea3a5c3ff1a96
The multi-line script came in with #505, to generate a consolidated coverage report.

Changed to accumulate the error in a variable fail

Fixed the cosmetic issue. rebased. merged.


fix/hypothesis-rate-limit-error

Previously, requests such as delete annotations or create annotations are done concurrently, which causes AnnoRep to hit a ~40reqs/sec limit and error out.
Now, delete or create annotations are done in sequential order. AnnoRep will send a batch of 30 requests concurrently (with retry logic #80 for each request ), and then wait until those requests finish in order to send the next batch of 30 requests. If a batch of requests finishes before a duration of 1 sec, then the next batch may result in a 429 error and enter the retry logic. The retry logic will lower the user's request rate until the batch finishes (as time passes the user's request rate gets lower). Suppose the first 30 requests finish before a duration of 1 sec, then the next 30 requests will possibly enter the retry logic and wait for 2s until retrying (which is good enough for them to finish without hitting the limit).
cc @adam3smith I'll merge this after doing more tests from a file with more annotations.

One concern about this that I hadn't considered is what happens if we fail in the middle, say after 60 of 80 annotations: That'd generate the 60 annotations but fail with an error and then leave us with duplicates on re-trying, right?

AnnoRep will delete any annotations from "ATI_staging" and then try to submit for review. It will delete the 60 annotations, then retry with the 80 (after admin returned the data project and user submit for review again).

@adam3smith It took about 30 seconds to send ~100 annotations to Hypothesis server. Instead of just notifying users that AnnoRep is exporting annotations, it will also notify users the current progress of sending annotations -- e.g. "finished sending 5th batch of annotations"

Awesome. And to be sure, the same routine is used every time we're writing annotations, right? So also for exporting and submitting for review?

Awesome. And to be sure, the same routine is used every time we're writing annotations, right? So also for exporting and submitting for review?

Yes. Any bundle of requests to Hypothesis follows the same routine.
Submit for review took about 40 seconds (it also needed to delete the previous annotations on ATI_staging).


stopping video encoder with surface crash on emulator

On Bluestacks emulator, stopping the video encoder causes crash due to SIGSEGV on 'glThread'. Cannot reproduce on real phone, only crashes on bluestacks.
Full logcat:
https://gist.github.com/troy-lamerton/c9b937d5c8c9afd29bb861968ed35fbd

Can always reproduce crash in the OpenGl RTMP activity.
Cannot reproduce in the Custom RTMP activity.

Perhaps the key difference is encoder using inputSurface (instead of buffers like in RtmpCamera1).
https://github.com/thesingularitygroup/rtmp-rtsp-stream-client-java/blob/b683775f13b15c17aac310068e23cbfe7f0b7464/rtplibrary/src/main/java/com/pedro/rtplibrary/base/Camera1Base.java#L189
The crash happens almost immediately after removeMediaCodecSurface which releases an egl context: https://github.com/thesingularitygroup/rtmp-rtsp-stream-client-java/blob/53ea378599b8205c19355bf7c27e453572ae8c58/encoder/src/main/java/com/pedro/encoder/input/gl/SurfaceManager.java#L137
Extra notes:
When the SIGSEGV is logged, the activity exits and the menu activity reappears.
Same behaviour when doing start/stop record vs start/stop stream.
Not sure how to proceed? Let me know what I can do to help find the cause.

This seems crash here:
https://github.com/thesingularitygroup/rtmp-rtsp-stream-client-java/blob/53ea378599b8205c19355bf7c27e453572ae8c58/encoder/src/main/java/com/pedro/encoder/input/gl/SurfaceManager.java#L141
This is a OpenGl crash so I don't know how to fix it. I need investigate about it. I will try reproduce with that emulator.

I decided to remove some features of the library in order to support bluestacks. I wasn't able to solve this crash in a good way.


Config schema to support app.routes.bindings

Hey, I just made a Pull Request!
Adds app.routes.bindings to core-app-api package
This is so that the config value can be used when initialising route bindings in AppManager: https://github.com/backstage/backstage/blob/master/packages/core-app-api/src/app/resolveRouteBindings.ts#L102
:heavy_check_mark: Checklist

[x] A changeset describing the change and affected packages. (more info)
[ ] Added or updated documentation
[ ] 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)

@freben interestingly does this cause issues when both frontend-app-api and core-app-api are installed I wonder?

Yeah they should be identical so should be ok! Unless I missed something  😅


Remove leading slash

This was a bit confusing when I first read it.
It shouldn't be referenced as "/security.txt" file, that's not where it is being placed.

Thank you very much, @roman-mueller.


How to Change the elpa Repositories at First Start?

Excuse me . I am here to ask you again. My English is very poor.Please forgive me
I living in China. You Know,Chinese Government has the GFW firewall.Some websites have been blocked among include "http://melpa.org",So I have to Change the elpa repositories in China.But I don't Know Which file should to modify.I have created the "init-preload-local.el" and "init-local.el" with your instructions,But they don't work at first start. It is only after all plug-ins are loaded.
Would you direct me? Thank you very much.

init-elpa.el
(setq package-archives '(("melpa-cn" . "http://elpa.emacs-china.org/melpa/")
                      ("org-cn"   . "http://elpa.emacs-china.org/org/")
                      ("gnu-cn"   . "http://elpa.emacs-china.org/gnu/")))

Yep, thanks @lukertty.


Include user links in change logs

💥 I code.

@dannify I did notice after pulling in main and running the script that it didn't show the docs change from 76e5fc206def83bc18f527a1db4f9dd621a9d0cc. Think that might be expected since that portion of the code in the script didn't change?

Thanks for looking Daniel, I can do some testing today on it.


make with errors on centos 7.8

$ cmake --version
cmake version 3.18.2
CMake suite maintained and supported by Kitware (kitware.com/cmake).
$ make --version
GNU Make 4.3
Built for x86_64-pc-linux-gnu
Copyright (C) 1988-2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
$ mkdir build && cd build
$ cmake3 ..
-- The CXX compiler identification is GNU 10.2.0
-- Check for working CXX compiler: /opt/gcc/10.2.0/gcc-10.2.0/bin/g++
-- Check for working CXX compiler: /opt/gcc/10.2.0/gcc-10.2.0/bin/g++ - works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: /TRAVAIL/udpreplay/build
$ make
Scanning dependencies of target udpreplay
[ 50%] Building CXX object CMakeFiles/udpreplay.dir/src/udpreplay.cpp.o
/TRAVAIL/udpreplay/src/udpreplay.cpp: In function 'int main(int, char**)':
/TRAVAIL/udpreplay/src/udpreplay.cpp:225:32: error: 'const struct udphdr' has no member named 'uh_ulen'
225 |       ssize_t len = ntohs(udp->uh_ulen) - 8;
|                                ^~~~~~~
/TRAVAIL/udpreplay/src/udpreplay.cpp:232:28: error: 'const struct udphdr' has no member named 'uh_dport'
232 |       addr.sin_port = udp->uh_dport;
|                            ^~~~~~~~
make[2]: *** [CMakeFiles/udpreplay.dir/build.make:83: CMakeFiles/udpreplay.dir/src/udpreplay.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:96: CMakeFiles/udpreplay.dir/all] Error 2
make: *** [Makefile:161: all] Error 2
I have the same issue on a redhat7 system..
Can you help me please

Is this some custom compiler you are using?
-- Check for working CXX compiler: /opt/gcc/10.2.0/gcc-10.2.0/bin/g++
-- Check for working CXX compiler: /opt/gcc/10.2.0/gcc-10.2.0/bin/g++ - works

I have the same problem with GCC 4.8.2.
See here for another project with similar errors:
https://redmine.named-data.net/issues/4852

Try this fix https://github.com/rigtorp/udpreplay/pull/27

Hello Erik,
It’s ok with your fix   and gcc/7.3.0  ou more:
[lerouxje@tdell427 buildfix]$ module list
Currently Loaded Modulefiles:

gcc/7.3.0

[lerouxje@tdell427 udpreplay]$ mkdir buildfix && cd buildfix
[lerouxje@tdell427 buildfix]$ cp ../src/udpreplay.cpp_fix ../src/udpreplay.cpp
cp : voulez-vous écraser « ../src/udpreplay.cpp » ? y
[lerouxje@tdell427 buildfix]$ echo CMAKE_INSTALL_PREFIX:PATH=/TRAVAIL/opt/udpreplay >> CMakeCache.txt
[lerouxje@tdell427 buildfix]$ cmake  ../
-- The CXX compiler identification is GNU 7.3.0
-- Check for working CXX compiler: /opt/gcc/7.3.0/gcc-7.3.0/bin/g++
-- Check for working CXX compiler: /opt/gcc/7.3.0/gcc-7.3.0/bin/g++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: /TRAVAIL/udpreplay/buildfix
[lerouxje@tdell427 buildfix]$ make -j 4
Scanning dependencies of target udpreplay
[ 50%] Building CXX object CMakeFiles/udpreplay.dir/src/udpreplay.cpp.o
[100%] Linking CXX executable udpreplay
[100%] Built target udpreplay
Thank’s a lot
De : Erik Rigtorp<EMAIL_ADDRESS>Envoyé : lundi 16 novembre 2020 13:03
À : rigtorp/udpreplay<EMAIL_ADDRESS>Cc : Jean-Yves LE ROUX<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>Objet : Re: [rigtorp/udpreplay] make with errors on centos 7.8 (#26)
Try this fix #27https://github.com/rigtorp/udpreplay/pull/27
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/rigtorp/udpreplay/issues/26#issuecomment-727936170, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AC6SFF3OBNMU4O2OSDZMAL3SQEIIFANCNFSM4TM6UKXA. https://github.com/notifications/beacon/AC6SFF5LUXEH3IMZVYUHLBLSQEIIFA5CNFSM4TM6UKXKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOFNRWZKQ.gif


Can I add substitute ingredients for a specific cocktail?

I'm looking at the Alexander recipe. It states gin but the IBA recipe uses cognac, so I think we should align this.
However, the IBA history section states that the cocktail was originally made with gin, but now the recipe uses cognac.
Some ingredients can have an alternative set (e.g. an alternative to lime juice is lime). Is it possible to do this for one specific cocktail, so I can have gin as an alternative in the Alexander recipe but it's not suggested for every recipe with cognac?

I agree! We should change it to Cognac
Currently, the app only supports general substitutes like the lime/lime juice example
I just added a section to view the apps predefined list of substitutes. The next step is to allow users to create their own.
After that, I would look into cocktail specific  substitutes


Fix bug in updating organization name

Fixed a bug where a conditional check for organizationName was instead
checking for givenName

🙏


Add a helper to return array of nullable type and change return signature of a UDF

Included a helper method to return nullable array type. Updated return type of jemslookupudf.

Would it not make more sense to update arrayOfType to take a boolean elementsNullable parameter, rather than having an entirely separate method for this?

Would it not make more sense to update arrayOfType to take a boolean elementsNullable parameter, rather than having an entirely separate method for this?

Sounds good to me. Updated the method.


lyxal: Watch cjpath.com

lyxal requests the watch of the watch_keyword cjpath\.com. See the MS search here and the Stack Exchange search in text, in URLs, and in code.

Approved by Jeff Schaller in Charcoal HQ

cjpath\.com has been seen in 1 true positive, 0 false positives, and 0 NAAs.


Make behavior of explicit computable links consistent with shapes

EdgeDB Version: beta2

Steps to Reproduce:
Currently the following schema treats User.tweets as detached in queries:
module default {
  type User {
    property name -> str;
    multi link tweets := User.<author[IS Tweet];
    # treated differently than:
    # multi link tweets := .<author[IS Tweet];
  }
  type Tweet {
    link author -> User;
  }
}

Moreover, switching between the explicit and implicit "User" is treated as a schema change by edgedb create-migration.
These should be treated as equivalent for the sake of consistency with how the dot shortcut works inside query shapes: https://edgedb.slack.com/archives/C09QSK72B/p1621902198005900

For clarity, references to the source type in schema computables should be replaced with __source__, unless the expression is inside DETACHED.  This probably needs an AST visitor akin to compiler/normalization.py.


Postprocess Item Source Failure - Land Mover

Mod source
PyAE Beta
Which mod are you having an issue with?

[ ] pyalienlife
[ ] pyalternativeenergy
[ ] pycoalprocessing
[ ] pyfusionenergy
[ ] pyhightech
[ ] pyindustry
[ ] pypetroleumhandling
[X] pypostprocessing
[ ] pyrawores

Operating system

=Windows 10

What kind of issue is this?

[X] Compatibility
[ ] Locale (names, descriptions, unknown keys)
[ ] Graphical
[ ] Crash
[ ] Progression
[ ] Balance
[X] Pypostprocessing failure
[ ] Other

What is the problem?
https://mods.factorio.com/mod/LandMover
Land Mover (0.2.8) as of now is incompatible with the current Version of PyPostprocessing (0.1.0)
Steps to reproduce

Enable whole PyAE + Land Mover
Reload

Additional context

Log file
No response

I'm getting no error in the current version. Please re-test & re-open if necessary.


Update “grid”

Automatically generated by Netlify CMS

I did the best I could 😩 see #183 for what I think needs to be done later.


Custom LocalBackup path

Hello!
OneDrive Backup is great!
My question is: Local Backups are saved in my HA under/usr/share/hassio/backup/. Is there a way to save Backups in a different place?
Regards!

Solved: it is defined in HA configuration, not OneDrive Backup.
https://www.home-assistant.io/common-tasks/os/#change-default-backup-location

Go to [Settings > System > Backups in the UI.
Select the menu in the top right of the screen and select the Change default backup location option.
In the dialog, there is a single option to set the default backup target.
Choose the one you want from the list.
Select Save.

Voila :-)


Two bugs in the repeat method.

I think I found two bugs in the repeat method.

When adding a condition inside items in repeating items, the condition only checks the first item value for all other items.

For example:
"items": [ "type": "TextBlock", "text": "{if(numericValue >= 0, 'good', 'attention')} ]
If the first item is less than 0, all other items will be treated as this condition is false regardless of their own values.
I changed the first item value and noticed all others are affected by it. It does display the right value for each item (even when printing next to the "if" condition.

When I try to print a numeric value by itself, it does not display it unless I've added some string or space next to it:

"text": "{numericValue}" -> will result in display nothing.
"text": "{numericValue} " -> will result in displaying the value with a space (or any other character).
Both bugs are reproducible in https://adaptivecards.io/designer/ as well in a real code test I did.
Originally posted by @shikshik in https://github.com/MicrosoftDocs/AdaptiveCards/issues/211#issuecomment-579678070

@dclaux thanks for the fast reply!
I did a test for your PR via the link mentioned in the PR itself (https://adaptivecardsci.z5.web.core.windows.net/pr/3508/designer/?preview=1).
It is actually worse than it was :/
The repeat is now repeating the same first object 3 times instead of showing the entire data:

Live designer:

I've created a sample for you to test, it also includes a conditional coloring (which I also removed in my tests to see if it affects the repeat somehow).
I also compared the same data and structure with the live version of the designer.
Data:
[   {     "name": "Object-1",     "lastPrice": 1.10762,     "changePriceRatio": -0.17   },   {     "name": "Object-2",     "lastPrice": 1578.205,     "changePriceRatio": -0.68   },   {     "name": "Object-3",     "lastPrice": 51.475,     "changePriceRatio": -0.23   },   {     "name": "Object-4",     "lastPrice": 28324,     "changePriceRatio": 0.35   },   {     "name": "Object-5",     "lastPrice": 9338.87,     "changePriceRatio": -1.04   } ]
Structure:
{   "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",   "type": "AdaptiveCard",   "version": "1.0",   "body": [     {       "type": "Container",       "items": [         {           "type": "ColumnSet",           "columns": [             {               "type": "Column",               "width": "auto",               "items": [                 {                   "type": "TextBlock",                   "text": "{if(changePriceRatio >= 0, '▲', '▼')}",                   "color": "{if(changePriceRatio >= 0, 'good', 'attention')}"                 }               ]             },             {               "type": "Column",               "width": "stretch",               "items": [                 {                   "type": "TextBlock",                   "text": "{name}"                 }               ]             },             {               "type": "Column",               "width": "stretch",               "items": [                 {                   "type": "TextBlock",                   "text": "{lastPrice} ",                   "horizontalAlignment": "Center"                 }               ],               "horizontalAlignment": "Center"             },             {               "type": "Column",               "width": "auto",               "items": [                 {                   "type": "TextBlock",                   "text": "{changePriceRatio}%",                   "color": "{if(changePriceRatio >= 0, 'good', 'attention')}"                 }               ],               "horizontalAlignment": "Right"             }           ]         }       ],       "$data": "{$root}"     }   ] }
Btw, color with a conditional phrase, return an error in the designer when parsing "Invalid "color" value", but it does work in the preview.
As for the second issue, I tried "text": "{toString(numericValue)}" which does not work on either version of the designer.
Let me know if I've should be tested it locally instead.

Hey @dclaux , any updates regarding the bugs? Did you manage to reproduce?
If those are not going to be fixed soon I will apply some workarounds in the meanwhile, would be nice to know if it is planned to be fixed in the next release.
Thanks!

Hey @shikshik I am sorry for the delay, somehow I missed your reply and only noticed it today a few moments ago.
I am not able to repro the problem with the card and data payloads you included. End result for me is this:

The bug I was saying should be fixed should have been fixed with this commit 19 days ago. For the second issue, I didn't say toString was available, I said it was an option we were considering and I asked for your opinion.
Since then I actually did add toString, so it is now available in js/renderer-refactor. You may want to take another look.
It is expected for the designer to emit a warning about color (or other enumeration properties for that matter) when its value is an expression. This behavior may be enhanced in a later release.

Oh, and indeed you will need to test locally. It doesn't seem that the bits at https://adaptivecardsci.z5.web.core.windows.net/pr/3508/designer/?preview=1 are getting updated anymore (I don't know why that is, @matthidinger do you have an idea?)

Hey, thanks!
I will test this branch locally today.
Regarding toString, I'm sorry, probably misunderstood. This solution is great to have, but I think the solution should be transparent to the end-user, so nothing should be added to print out values such as this. I understand it is hard to solve, so I guess using an additional function to convert types is ok.
Btw, when is this branch planned to be merged?

@dclaux , I couldn't manage to test since I had to build it locally and got an error when tried to build:
src/card-elements.ts:2241:12 - error TS2322: Type 'null' is not assignable to type '(sender: Media) => void'.
2241     static onPlay: (sender: Media) => void = null;
Seems like you recently added it by a request to fix angular build (https://github.com/microsoft/AdaptiveCards/issues/3736).
If there is a way to test a pre-built version of the branch, that will be great.
Thanks.

Hey folks,
Just wanted to chime in to say I'm having the same problems as @shikshik precisely.
When I use the PR link I also get the same extra issue of it not even looping through the data.
@dclaux - are you saying you're unable to repro even in the web designer tool?

@shikshik as you figured the error you are seeing was introduced by this PR, and it happens because in the js/renderer-refactor branch, the library is now compiled with the strictNullCheck and noImplicitAny compiler directives. I've fixed it by changing the declaration of the onPlay event to
static onPlay?: (sender: Media) => void;

Please try compiling locally again. I just tested again on my end, and I am not able to repro.
Interestingly though, the site at https://adaptivecardsci.z5.web.core.windows.net/pr/3508/designer/?preview=1 has been updated but the problem isn't fixed there. I have no idea why, but bottom line please test on a local build for now.

@jarusse I am not able to repro this on a local build of the js/renderer-refactor branch.

@dclaux , I tried again with the latest fix you did, still cannot build properly. I'm getting issues with webpack loaders:
ERROR in ./src/card-object.ts 10:13
Module parse failed: Unexpected token (10:13)
You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders

export class ValidationResults {
      readonly allIds: Dictionary<number> = {}; // In This line
      readonly validationEvents: IValidationEvent[] = [];

@ ./src/adaptivecards.ts 5:0-30 5:0-30

The build fails in other several places for the same reason.
Just to make clear what I did:

Installed node modules in the parent directory (since first try to build returned I'm missing "html-webpack-plugin").
Installed node modules for adaptivecards.
Run build command (or release).

Did I miss anything?

Hi folks, this should be fixed in the adaptivecards-templating npm package version 0.1.1-alpha.1
It's also fixed on https://adaptivecards.io/designer (make sure the clear your cache in case any scripts are stored in the browser)
Please let us know if you have any troubles!

@matthidinger , thanks for the update, I just tested it locally and the repeat issue is now looking good!
Thanks for fixing this bug!

@matthidinger, will there be nuget package update for this repeat issue as well? Having the same problem as shikshik using .NET SDK (AdaptiveCards.Templating --version 0.1.0-alpha1).

Hi @taerimhan, we're working on a major .NET (and JS) templating update in the next few weeks. Stay tuned and thank you for your patienec!

@matthidinger thank you for the update! Looking forward to it :)

These should be fixes in the latest v1..0 releases for .NET and JS :) Please reopen and/or let us know if you have any further issues!


Fix _hideDetailViewController not being reset properly

_hideDetailViewController doesn't get reset properly in LevelCollectionNavigationController.DidActivate and causes a race condition that doesn't dismiss view controllers properly on the level end screen if:

a song is automatically selected by BSL when coming from the main menu
the active tab is a non-level-pack tab (i.e. favorites or all songs)
a view controller is presented on the level end screen's right pane (e.g. by BeatSaviorData)

This causes ClearChildViewControllers to be called too early and eventually HMUI.Screen.SetRootViewController gets called twice in a row for the same screen, which in turn causes TransitionCoroutine to be cancelled so the previous view controller (i.e. the leaderboard) is never dismissed/disabled.
Basically, this is a fix for this issue:

Based off a 1 minute decompiler check, am I assuming correctly that the fix would also work properly if you only set it to false if addedToHierarchy is true?

Maybe, but since the issue is related to ClearChildViewControllers, the else if (_loading) might also come into play at some point. ClearChildViewControllers is eventually called by all code paths so I thought it'd be simpler to just set it to false no matter what.

I see, well its more or less essentially a basegame issue (Since I use basegame logic to set the start state) so please report to devs 👍


[CONTP-369] extract kubernetes resource parsers (pod, deployment and metadata) to a separate package

What does this PR do?

Extracts kubernetes resource parsers (pods, deployments and metadata) to their own package.
Motivation

This PR doesn't change behaviour, but it is a preparatory step to allow other components to parse kubernetes resources and convert them to workloadmeta entities.
The end goal is to be able to refactor some components (such as the orchestrator cluster checks) to compute resource tags on the fly instead of storing all tags for all resources in the tagger.
As a concrete example, the cluster checks are usually interested only in unscheduled pods (pods that are not assigned to a node yet). However, by depending on the tagger, we will necessarily need to populate the tagger with tags for all pods in the cluster because there is no way for the tagger to distinguish between scheduled and unscheduled pods, which consumes a lot of memory, cpu and network.
The plan is to extract parsers to their own package, then expose some public utility methods in the tagger package that can help extract tags from a workloadmeta entity without having to populate tags in the tagger.
Additional Notes

Possible Drawbacks / Trade-offs

None
Describe how to test/QA your changes

No need for qa, E2E tests are enough.

/merge

/merge

/merge


[Opt] Minor README update (triggered by GarageBand/Logic menu path fix)

@walmik Looking forward to your feedback!

Hi @andreaskaemmerle Can you please fix conflicts.

Hi @walmik, resolved finally. Thank you for scribbletune!


[Request] Consider adding dbin to the system

Hi, could you consider the addition of dbin to the system? It is a package manager that uses static binaries, meaning: we have +2610 statically linked binaries in the repos that Just Work™ in both Musl & Glibc, this includes binutils, collections of system utilities, text editors, development tools, web browsers (elinks, elinks_lite and most recently, self-contained appimages), etc.
Thanks! I really hope it contributes to making Glaucus a bit more usable, and hopefully, an OS that we can boot bare-metal and use for real work :)
NOTE: dbin is a zero-pollution solution, no files other than the binaries that the user chooses to install and the "tracker file" are created.
NOTE N. 2: The "tracker file" just saves the version of a program preffered by the user, because, for example, if the user has previously installed vim/vi, and later runs dbin update, we need to ensure that we don't end up replacing vim/vi with busybox/vi, and so on for the suites of system utilities, and programs which share a name.
]@ dbin --help

 Copyright (c) 2024: xplshn and contributors
 For more details refer to https://github.com/xplshn/dbin

  Synopsis
    dbin [-v|-h] [list|install|remove|update|run|info|search|tldr] <-args->
  Description:
    The easy to use, easy to get, software distribution system
  Options:
    -h, --help        Show this help message
    -v, --version     Show the version number
  Commands:
    list              List all available binaries
    install, add      Install a binary
    remove, del       Remove a binary
    update            Update binaries, by checking their SHA against the repo's SHA
    run               Run a specified binary from cache
    info              Show information about a specific binary OR display installed binaries
    search            Search for a binary - (not all binaries have metadata. Use list to see all binaries)
    tldr              Equivalent to "run --transparent --silent tlrc"
  Variables:
    DBIN_CACHEDIR     If present, it must contain a valid directory path
    DBIN_INSTALL_DIR  If present, it must contain a valid directory path
    DBIN_NOTRUNCATION If present, and set to ONE (1), string truncation will be disabled
    DBIN_TRACKERFILE  If present, it must point to a valid file path, in an existing directory
  Examples:
    dbin search editor
    dbin install micro.upx
    dbin install lux kakoune aretext shfmt
    dbin --silent install bed && echo "[bed] was installed to $INSTALL_DIR/bed"
    dbin del bed
    dbin del orbiton tgpt lux
    dbin info
    dbin info jq
    dbin list --described
    dbin tldr gum
    dbin --verbose run curl -qsfSL "https://raw.githubusercontent.com/xplshn/dbin/master/stubdl" | sh -
    dbin --silent run elinks -no-home "https://fatbuffalo.neocities.org/def"
    dbin --silent run --transparent micro ~/.profile
    dbin run btop

]@

I read your issue and decided to keep it open until I properly test your solution to package management.

Ah, well, thanks! A lot of things have changed since I opened the issue. dbin now has a lot (portable) GUI programs in its repos, and it doesn't use a tracker file anymore, it only creates a config (in which you can specify repositories, hooks, etc)

Interesting, keep up the great work!

@xplshn I have to say dbin is impressive, but I have some questions:

It says packages are statically linked, but against what exactly? what C libraries did you target?
Did you try to get dbin working using one of glaucus releases?

@xplshn I have to say dbin is impressive, but I have some questions:

It says packages are statically linked, but against what exactly? what C libraries did you target?
Did you try to get dbin working using one of glaucus releases?

dbin works on all systems since all binaries are self-contained (statically linked).
Statically linked means that the binaries don't depend on any library, the routines that would be called if the binary was dynamically linked are simly "embedded" into the binary.
This is faster than dynamic linking and means that the binaries work everywhere.
And well, to answer you question; yes, dbin works in Glaucus, I've used it before there :)

It says packages are statically linked, but against what exactly? what C libraries did you target?

I do not maintain the repo from which these programs come from, but all programs have a build log, and you can consult the GH actions which do the actual building of the binaries :)

Statically linked means that the binaries don't depend on any library, the routines that would be called if the binary was dynamically linked are simly "embedded" into the binary.

My question was what were the libraries that the applications were statically linked against? what standard C library was used? I suppose musl?

This is faster than dynamic linking and means that the binaries work everywhere.

Faster is a relative word? How come is a statically linked application faster than a dynamically linked one given they were compiled using the same flags?

And well, to answer you question; yes, dbin works in Glaucus, I've used it before there :)

Interesting.. Did you experience any issues or inconveniences when you tested dbin under glaucus?

Statically linked means that the binaries don't depend on any library, the routines that would be called if the binary was dynamically linked are simly "embedded" into the binary.

My question was what were the libraries that the applications were statically linked against at build time? what standard C library was used? I suppose musl?

Ah, yeah, Musl is used whenever possible, glibc is used only for binaries which refuse to build otherwise

This is faster than dynamic linking and means that the binaries work everywhere.

Faster is a relative word? How come is a statically linked application faster than a dynamically linked one given they were compiled using the same flags?

Because the linker (/lib/ld*.so*) is not being invoked, since there are no dependencies that need to be figured out. And also, if you allow me to quote:

There isn't a copy of the entire C library in every binary.  There is
a copy of each library routine called, directly or indirectly, by the
program in question.
Sharing of instructions is done at the granularity of process text
segments, as in V6 or V7 Unix.  The text segment of a process that
forks is shared between parent and child by page mapping.  Also,
running (via exec) a program multiple times concurrently causes the
(pure) text segment to be shared by page mapping across those
processes.  So all copies of rc and on a machine should share a text
segment.

And well, to answer you question; yes, dbin works in Glaucus, I've used it before there :)

Interesting.. Did you experience any issues or inconveniences when you tested dbin under glaucus?

No, I did not, but if I were to have had any issues, it wouldn't be Glaucus' fault, dbin aims to be POSIX & portable, I'd have fixed them if there were. So, feel free to report any issues/bugs or open an issue for a feature request in dbin's repo :)

You can find a lot more arguments in favor of producing static programs (reproducible, because as opposed to dynamically linked programs, its the same code running everywhere, errors due to mismatch of library versions simply cannot occur.) here: https://harmful.cat-v.org/software/dynamic-linking & here: https://harmful.cat-v.org/software/dynamic-linking/versioned-symbols

You can also check this resource on how ldd can be exploited for arbitrary code execution, further justifiying that static linking is both simpler & superior: https://catonmat.net/ldd-arbitrary-code-execution

No, I did not, but if I were to have had any issues, it wouldn't be Glaucus' fault, dbin aims to be POSIX & portable, I'd have fixed them if there were. So, feel free to report any issues/bugs or open an issue for a feature request in dbin's repo :)

I see, I'll be giving dbin a try myself and report the issues I face (if any).

You can find a lot more arguments in favor of producing static programs ...

I agree this might be more suitable for a binary package repository like the ones dbin is using.

I see, I'll be giving dbin a try myself and report the issues I face (if any).

I have to say I am impressed, I have been debating what additional package management solutions can be added to extend glaucus, and this appears to be in line with the distribution's goals.
Thanks for your time and work on dbin!


CookieJar toString() method

It would be nice to have a toString() method for the CookieJar class to use it when setting cookie header like Cookie: name=value; name2=value2; name3=value3

Hi
you sure CookieJar.getCookieString does not do what you already want to do ?

It's what I currently use inside fetchWrapper

Oh, my bad. Yes this is exactly what I was looking for. Thank you so much! Great module btw.

#10 Added this PR so the method is easier to find 🔥

released this in v4.1.5
thanks for the PR


Cast values as strings for default value comparison

#15

Closing as this is too simplistic a solution.


making a box for a directory above this one doesn't work

making a box of a directory that is not a subdirectory of this directory doesn't work:
e.g.
box := packr.NewBox("../public")

See https://github.com/natefinch/markbates/blob/master/test/test.go#L13
And by doesn't work, I mean that if you remove the folder after generating the packr.go file for it, the built executable fails to find those files.  You can test it by running packr install for github.com/natefinch/markbates ... if you run markbates then, it'll open up a webpage saying "hi mark!"  if you then rename the public directory to something else, running markbates will open up a 404 page

actually, this seems to happen for sub directories as well, which means I'm misunderstanding something.
	box := packr.NewBox("./public")

	http.Handle("/", http.FileServer(box))
	fmt.Println("serving docs at http://localhost:8080")
	fmt.Println("hit ctrl-C to cancel")
	go browser.OpenURL("http://localhost:8080")
	log.Fatal(http.ListenAndServe(":8080", nil))

^^ This will serve up what's in ./public if the folder exists, but if I remove the folder, it gives me 404s.

note that this is after running packr, while having a packer file that looks like this:
func init() {
	packr.PackJSONBytes("./public", "index.html", "\"SGkgTWFyayE=\"")
	}

Looks like the problem actually has to do with how http.FileServer handles index.html files:
http.Handle("/", http.FileServer(http.Dir("/tmp")))
As a special case, the returned file server redirects any request ending in "/index.html" to the same path, without the final "index.html".

oh man, that is crazy town.  Thanks for figuring this out :)

lol. Tell me about it! I had to dig deep to figure how to make it work. They’re doing some really strange things in the http package.

If you want an http.FileServer-like construct with without special handling of index.html files, it's quite easy to make your own. You can see an example of one I've created at https://godoc.org/github.com/shurcooL/httpgzip#FileServer.


Farscape can't send empty bodies.

It seems sensible to send an empty request body when you have no data in your request.  However mauth seems to require that the body /exist/ even when it's empty.  This fix forces farscape to always have a request body even when it's empty.
(This might be considered a bug in mauth)

Hm, there's nothing technically wrong with sending an empty response body, but it seems unfortunate. My WAG was that you could fix this by moving https://github.com/mdsol/farscape/blob/brave_new_develop/lib/farscape/client/http_client.rb#L27 to the beginning of the configuration block, so that the URL encoding happens before the signing. It's possible that adding a body prevents the :url_encoding middleware from munging the request.
mauth is supposed to allow the absence of a body ( proof) so if it is indeed not that's a bug in mauth-client.

I'm going to test @HonoreDB's suggestion to see the result.

@HonoreDB Any comments on this PR?

Oh, hey, it's updated. Merging.


DE progress bar breaks print statements if running inside loops in notebooks

If I put a call for the DE function model.differential_expression inside a for loop with other print statements, they don't show up on the notebook output, as in the example screenshot below. The progress bar always shows 0% because there is only one comparison done per function call.
In this case I decided to try paiwise DE between all of 20 clusters, and I wanted to have the print statement to know the progress, since the DE progress bar only works if you call the function only once and gets reset between calls.
This is not a big deal, but is there a workaround?

@Munfred, hey if you update to the newest version of scvi-tools, it should fix this. It was because we updated the progress bar library. The newest version defaults back to tqdm as our progress bar.


Restore original authorship

Authorship should not have been changed for this gem.
This change reverts authorship to sethvargo.
Signed-off-by: Marc A. Paradise<EMAIL_ADDRESS>

Ack, while using the four freedoms of Free Software (which include the right to use it for whatever one wants) is accoring to the rules and hence absolutely O.K. (no matter what other people think), stealing / denying authorship is not!
Thanks for rectifying this.


Akash client defaults to testnet

@gosuri what host:port should it connect to?  Thinking of adding a -X package.var=host:port for it in the release config

@boz use akashtest.net:80, will add the DNS shortly


Fix the name of package to install

Thanks tons for your contribution !
I can’t believe I let that much time pass.
Please, forgive me.


Update docker_remote_api_v1.22.md

Related Issue #16849
update the The ‘Example response’ at the ‘Get container stats based on resource usage’ section.Update the response with the new one which contains the precpu_stats field and give some explains.if it is right,i will update the other api docs 1.19...1.23!
@thaJeztah
thanks!:)
Signed-off-by: ZJUshuaizhou<EMAIL_ADDRESS>

@ZJUshuaizhou thanks; there's a lot of lines changed in this PR due to reformatting; can you update your PR to only add the precpu_stats to the output, without changing the other lines? Also make sure to use spaces, not tabs (or at least, not mix them when indenting)

@thaJeztah thanks.The precpu_stats is the cpu statistic of last read, if i only add the precpu_stats,the information will be not matched with the field cpu_stats;I think ,i update the cpu_stats and add the precpu_stats.What do you think?
:)

@ZJUshuaizhou yes, if you can edit the values to match the other part, that sounds good. Point is we should avoid to change all lines, only due to formatting, and only change what's actually "changed" :wink:


Allow 0 as minimum collection size?

https://github.com/benas/random-beans/pull/200 make the collection size configurable. I think it would be nice to allow 0 as a minimum collection size.
What do you think?

Yes indeed, a truly random collection may be empty


SystemVM template changes - updated debian version & other changes

Description
This PR updates SystemVM template debian version to 12.7.0 and other changes below.

Update the module dependencies explicitly (depmod -a) for VMware - resolves the iptables and nfs mount issues observed in SSVM & CCPVM.

root@v-1-VM:~# iptables-save
iptables-save/1.8.9 (nf_tables) Failed to initialize nft: Protocol not supported
root@v-1-VM:~#

root@s-2-VM:~# tail -f /var/log/cloud.log
...
2024-09-02T14:19:44,456 WARN  [storage.resource.NfsSecondaryStorageResource] (agentRequest-Handler-4:[]) Execution of process [4162] for command [mount -t nfs -o soft,timeo=133,retrans=2147483647,tcp,acdirmax=0,acdirmin=0 10.0.x.x:/acs/secondary/ref-trl-7233-v-Mol8-suresh-anaparti/ref-trl-7233-v-Mol8-suresh-anaparti-sec1 /mnt/SecStorage/b9cbaeeb-495b-388b-b49d-4c122d9310d8 ] failed.
2024-09-02T14:19:44,457 WARN  [storage.resource.NfsSecondaryStorageResource] (agentRequest-Handler-4:[]) Process [4162] for command [mount -t nfs -o soft,timeo=133,retrans=2147483647,tcp,acdirmax=0,acdirmin=0 10.0.x.x:/acs/secondary/ref-trl-7233-v-Mol8-suresh-anaparti/ref-trl-7233-v-Mol8-suresh-anaparti-sec1 /mnt/SecStorage/b9cbaeeb-495b-388b-b49d-4c122d9310d8 ] encountered the error: [mount.nfs: No such device].
2024-09-02T14:19:44,457 ERROR [storage.resource.NfsSecondaryStorageResource] (agentRequest-Handler-4:[]) Unable to mount 10.0.x.x:/acs/secondary/ref-trl-7233-v-Mol8-suresh-anaparti/ref-trl-7233-v-Mol8-suresh-anaparti-sec1 at /mnt/SecStorage/b9cbaeeb-495b-388b-b49d-4c122d9310d8 due to mount.nfs: No such device
2024-09-02T14:19:44,459 WARN  [cloud.agent.Agent] (agentRequest-Handler-4:[]) Caught: com.cloud.utils.exception.CloudRuntimeException: Failed to get root directory from secondary storage URL [nfs://10.0.x.x/acs/secondary/ref-trl-7233-v-Mol8-suresh-anaparti/ref-trl-7233-v-Mol8-suresh-anaparti-sec1], using NFS version [null], due to [Unable to mount 10.0.x.x:/acs/secondary/ref-trl-7233-v-Mol8-suresh-anaparti/ref-trl-7233-v-Mol8-suresh-anaparti-sec1 at /mnt/SecStorage/b9cbaeeb-495b-388b-b49d-4c122d9310d8 due to mount.nfs: No such device].
	at org.apache.cloudstack.storage.resource.NfsSecondaryStorageResource.getRootDir(NfsSecondaryStorageResource.java:2674)
	at org.apache.cloudstack.storage.resource.NfsSecondaryStorageResource.execute(NfsSecondaryStorageResource.java:2406)
	at org.apache.cloudstack.storage.resource.NfsSecondaryStorageResource.executeRequest(NfsSecondaryStorageResource.java:297)
	at com.cloud.storage.resource.PremiumSecondaryStorageResource.defaultAction(PremiumSecondaryStorageResource.java:62)
	at com.cloud.storage.resource.PremiumSecondaryStorageResource.executeRequest(PremiumSecondaryStorageResource.java:58)
	at com.cloud.agent.Agent.processRequest(Agent.java:679)
	at com.cloud.agent.Agent$AgentRequestHandler.doTask(Agent.java:1092)
	at com.cloud.utils.nio.Task.call(Task.java:83)
	at com.cloud.utils.nio.Task.call(Task.java:29)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
	at java.base/java.lang.Thread.run(Thread.java:840)
Caused by: com.cloud.utils.exception.CloudRuntimeException: Unable to mount 10.0.x.x:/acs/secondary/ref-trl-7233-v-Mol8-suresh-anaparti/ref-trl-7233-v-Mol8-suresh-anaparti-sec1 at /mnt/SecStorage/b9cbaeeb-495b-388b-b49d-4c122d9310d8 due to mount.nfs: No such device
	at org.apache.cloudstack.storage.resource.NfsSecondaryStorageResource.attemptMount(NfsSecondaryStorageResource.java:3080)
	at org.apache.cloudstack.storage.resource.NfsSecondaryStorageResource.mount(NfsSecondaryStorageResource.java:3031)
	at org.apache.cloudstack.storage.resource.NfsSecondaryStorageResource.mountUri(NfsSecondaryStorageResource.java:3019)
	at org.apache.cloudstack.storage.resource.NfsSecondaryStorageResource.getRootDir(NfsSecondaryStorageResource.java:2670)
	... 12 more

VMware hardware version updated to 13 - compatible with latest VMware version supported (https://docs.vmware.com/en/VMware-vSphere/8.0/vsphere-vm-administration/GUID-64D4B1C9-CD5D-4C68-8B50-585F6A87EBA0.html)

Updated grub config with fsck.mode=force fsck.repair=yes - resolves the file system read-only issue observed in VRs.

Types of changes

[ ] Breaking change (fix or feature that would cause existing functionality to change)
[ ] New feature (non-breaking change which adds functionality)
[ ] Bug fix (non-breaking change which fixes an issue)
[x] Enhancement (improves an existing feature and functionality)
[ ] Cleanup (Code refactoring and cleanup, that may add test cases)
[ ] build/CI
[ ] test (unit or integration test code)

Feature/Enhancement Scale or Bug Severity
Feature/Enhancement Scale

[x] Major
[ ] Minor

Bug Severity

[ ] BLOCKER
[ ] Critical
[ ] Major
[ ] Minor
[ ] Trivial

Screenshots (if appropriate):
How Has This Been Tested?

How did you try to break this feature and the system with this change?

@blueorangutan package

Packaging isn't required as changes are only in systemvmtemplate codebase. I've kicked Jenkins builds, which should be available shortly at https://build.yadav.cloud/systemvm/

build OK

Merged based on 2lgtms and manual build/tests.


[occm] LB: Stop recreating monitors if no-HTTP is forced

What this PR does / why we need it:
PR #2000 had added falling back to regular nodePort healthchecks when Octavia wouldn't support HTTP monitor, but ommitted healthmonitor update code, resulting in constant delete-and-recreate cycles. This commit fixes this by making sure update code correctly checks if HTTP monitor is expected.
Which issue this PR fixes(if applicable):
fixes #2039
Release note:
NONE

/ok-to-test

/lgtm

/approve
give folks another look chance..


security: How to add Authorization header with Bearer authentication scheme using Online Editor

can someone let me know how to add authorize header with Bearer authentication scheme using Swagger online editor

There's no simple way to do it at the moment, there will be with the next version of the spec. For questions about specific tools, please open the tickets on their respective repos.


add sepropagator solver

follow up to https://github.com/dynamiqs/dynamiqs/pull/629 after the api restructuring
Note that I slightly deviated from the suggested implementation. I did not feel it was necessary to implement the classes SEPropagatorEulerIntegrator, SEPropagatorDopri5Integrator,... because it is sesolve that is actually doing the integration. From a class inheritance perspective, there is no reason why SEPropagatorDiffraxIntegrator (which maybe we do want to rename to SEPropagatorDynamiqsIntegrator?) should inherit from DiffraxIntegrator, since SEPropagatorDiffraxIntegrator will not be implementing a terms method. Very happy to reconsider this decision if people feel strongly :).

Thanks for those commits @gautierronan ! Just looked over your changes and everything LGTM :)

Documentation looks like:

@abocquet if you have time to quickly skim through the code that would be great, just in case you have other ideas. 😊

Also, I think it would be much better to just copy-paste the sesolve/diffrax_integrator.py as a new sepropagator/diffrax_integrator.py, and so replacing the SEPropagatorDynamiqsIntegrator by a bunch of SEPropagatorDiffraxIntegrator. The advantages are:

decoupling the solver > nice bc it simplifies the architecture and dependencies (for example if we introduce a bug in sesolve it doesn't break the other solvers)
avoid the hacky call to _sesolve
avoid refactoring the internal _sesolve to support matrices as initial states

I'll do this change if you agree @gautierronan and @dkweiss31.

I broke the tests but they pass locally, I'm not sure what's going wrong on the ci. 🤔
tests/sepropagator/test_sepropagator.py:18: in <module>
    from ..solver_tester import SolverTester
E   ModuleNotFoundError: No module named 'tests.solver_tester'

Thank you @pierreguilmin !! All of your fixes look great. I think the tests should pass with this latest commit, just needed solver -> integrator :)

Also, I think it would be much better to just copy-paste the sesolve/diffrax_integrator.py as a new sepropagator/diffrax_integrator.py, and so replacing the SEPropagatorDynamiqsIntegrator by a bunch of SEPropagatorDiffraxIntegrator. The advantages are:

decoupling the solver > nice bc it simplifies the architecture and dependencies (for example if we introduce a bug in sesolve it doesn't break the other solvers)
avoid the hacky call to _sesolve
avoid refactoring the internal _sesolve to support matrices as initial states

I'll do this change if you agree @gautierronan and @dkweiss31.

I think I like this idea! I agree that the call to _sesolve is suboptimal, and this proposed implementation of sepropagator treats e.g. sesolve and sepropagator on equal footing as solvers (sorry, integrators!), whereas in my implementation sesolve was the true solver and sepropagator was just a wrapper (I guess I'm just restating your first point lol). I liked that prior implementation just because it was simple and took advantage of existing functionality, but the matrix-matrix vs. matrix-vector issue made that untenable. Happy for this change to be made!

I've started on consolidating all of the expm methods, related to https://linear.app/dynamiqs/issue/DYN-202/batch-compute-the-propagator . I've started it on a new branch since I wasn't positive if we wanted to do this here, if you're interested please see https://github.com/dkweiss31/dynamiqs/tree/propagator_expm_consolidation. The ExpmSolver class now is used for all of sesolve, sepropagator, mesolve if the user specifies their solver as Expm.

I've started on consolidating all of the expm methods, related to https://linear.app/dynamiqs/issue/DYN-202/batch-compute-the-propagator . I've started it on a new branch since I wasn't positive if we wanted to do this here, if you're interested please see https://github.com/dkweiss31/dynamiqs/tree/propagator_expm_consolidation. The ExpmSolver class now is used for all of sesolve, sepropagator, mesolve if the user specifies their solver as Expm.

That's great! I guess you're also solving DYN-47 as well with this branch then?  I agree with renaming the Propagator solver for sesolve/mesolve to Expm which is more explicit.
To keep in mind for this next PR or another: we also need the option to choose between batch-computing the propagator (when memory is not an issue) versus iteratively computing it (when memory is an issue).

Also, I think it would be much better to just copy-paste the sesolve/diffrax_integrator.py as a new sepropagator/diffrax_integrator.py, and so replacing the SEPropagatorDynamiqsIntegrator by a bunch of SEPropagatorDiffraxIntegrator. The advantages are:

decoupling the solver > nice bc it simplifies the architecture and dependencies (for example if we introduce a bug in sesolve it doesn't break the other solvers)

avoid the hacky call to _sesolve

avoid refactoring the internal _sesolve to support matrices as initial states

I'll do this change if you agree @gautierronan and @dkweiss31.

Do you want to do this here or in another PR?

Amazing work @dkweiss31 thanks a lot!! 🥳 I've added a bunch of minor fixes on top, mostly documentation/style related. Don't hesitate to discuss if you're not happy with one of the proposeed changes. I'm not done yet, I'll finish the review / minor edits tomorrow or this weekend. Left to review:

[ ]   dynamiqs/integrators/core/expm_integrator.py

[ ]   tests/propagator/test_propagator.py

Same, is this ok or you still want to review these two files?
If not for both of these questions, then I guess we can merge and take care of other topics in separate PRs.


[test] add more flags to execute unit test by go test

Ⅰ. Issue Description
I think we should add more flags to pouch's unit test. Here is the test code
function unit-test()
{
    cd $BUILDPATH/src/github.com/alibaba/pouch
    go test -i
    for d in `go list ./... | grep -v 'github.com/alibaba/pouch/test' | grep -v 'github.com/alibaba/pouch/extra' | grep -v 'github.com/alibaba/pouch/vendor' `
    do
        go test -coverprofile=profile.out -covermode=atomic $d
        if [ -f profile.out ] ; then
            cat profile.out >> coverage.txt
            rm profile.out >/dev/null 2>&1
        fi
    done
}

In the code, we have found that we use go test -coverprofile=profile.out -covermode=atomic $d to make it.
While I am afraid more flags should be added into the go test, for example --race to detect code which may be potential race.
I think this will guarantee more about the quality of Pouch.
Ⅱ. Describe what happened
NO more test flag in unit test.
Ⅲ. Describe what you expected to happen
more test flag in unit test.

Do we need to support more test flags here, and I think we already added --race. But I still think we need more input from Golang experts and test experts, like @fuweid @shaloulcy @Letty5411 @chuanchang @sunyuan3 😄


new content

added lots of new items to the equipment compendium
added icons to items
added a feats compendium
added license file for the images

The feat pack and the additions to the equipment pack are fine, but I'm going to have to ask that you resubmit the PR without the icons. The attached license doesn't give us permission to use them. It explicitly gives hooking the authority to use them specifically for the PF2e system only.

Sorry, should have edited the license first. I am the owner of the icons, and I am the one that published the icons for him to use in the pf2e module in the first place.

Ah, ok. If you'll go ahead and update the license, I'll reopen the PR.


fix: prefer events v1 over v1beta1

What this PR does / why we need it:
This PR gives preference to events v1 over v1beta1 and falls back to v1beta1 if v1 didn't work.
Fixes #373

Also fixes #414


Baseline Algorithm Code

three other algorithms: Bi-AC, MACPO, and MAPPO-LI’ve been exploring the CSQ and CS-MADDPG algorithms in your repository, and I’m impressed by their performance. However, I noticed that the baseline algorithms (Bi-AC, MACPO, and MAPPO-L) are not open-sourced.
As a fellow researcher interested in multi-agent reinforcement learning (MARL), I believe having access to the baseline code would greatly enhance our understanding and facilitate further comparisons. Would it be possible to release the code for these baselines?
Thank you for your valuable work, and I appreciate your consideration.

Hi, thank you for your valuable comment. The baseline algorithm Bi-AC is already included in this repository. You can switch to Bi-AC algorithm by changing the argument 'arg.version' in main_bilevel.py. But the Bi-AC algorithm in my rep is modified from its original version, which can be found in https://github.com/laonahongchen/Bilevel-Optimization-in-Coordination-Game. The other two algorithms(MACPO and MAPPO-L) can be found from https://github.com/chauncygu/Multi-Agent-Constrained-Policy-Optimisation. I think all of them are open-sourced.

Thanks for your reply. Is the args.version == "bilevel" parameter, as referenced in the unconstrained Stackelberg MADDPG, related to your modified Bi-AC algorithm? I noticed that this parameter is activated when args.action_type == "continuous". In the merging scenario where the action type is set to discrete, how can I obtain the output of the Bi-AC algorithm similar to the file ./merge_env_result/exp1_bilevel? Thanks a lot for your kind assistance!

My mistake. That parameter is used for continuous action type. Since the basic discrete action framework for Bi-AC and CSQ are similar, you can run Bi-AC simply by changing the parameter "cost_threshold" in "config.json" from experiment folder to "inf" or a really large number. Because Bi-AC is the unconstrained version of CSQ.

Got it, thanks! All the best to you.