Coroutines (async/await/promise) language support

Hi,
Does Zig will have language support  for coroutines or similar construct ?  Rust is going to support async/await, C++20 will get language support for coroutines and other mainstream languages (like C#, JS etc) already have/will have support too. There is already support for coroutines in LLVM  also (https://llvm.org/docs/Coroutines.html).
Any thoughts?

As a first step towards coroutines, I submitted a patch to LLVM: https://reviews.llvm.org/D43368
In the meantime we can create an API that assumes we have this patch, and generates less efficient code (allocating too much memory) until this patch is merged and available.

cc @bnoordhuis
I know you did (do?) a lot of libuv work, so I'd be curious to get your take on this.

Proposal edit: Renaming these builtins to keywords:

@destroy() -> cancel keyword
@suspend() -> suspend keyword
@resume() -> resume keyword

Proposal edit:

suspend is a block, which is given a promise as a variable in scope,
which is the handle of the suspended async function.
The async function goes into the suspended state upon entry to the block,
but it has the duration of the block to do something with the promise.
When the async function is resumed, it will resume after the suspend block.
Remove @promise(). A suspend block is the only way to get access to one's own promise.

suspend |the_promise| {
    // do something with the_promise that will cause it to
    // be resumed appropriately
}

This corresponds to the distinct save and suspend points in the LLVM docs.
So waitFd becomes:
    async fn waitFd(self: &EventLoop, fd: i32) !void {
        // A suspend block should always contain logic that will cause the
        // current async function to get resumed somehow. In this case,
        // the matching `resume` is in the `run` loop, after the `epoll_wait`.
        // We put the promise handle into epoll and this suspend point will get
        // resumed when epoll_wait says that this fd has data ready.
        suspend |the_promise| {
            var ev: epoll_event = undefined;
            ev.events = EPOLLIN|EPOLLET;
            ev.data.ptr = @ptrToInt(the_promise);
            epoll_ctl(self.epollfd, EPOLL_CTL_ADD, fd, &ev);
        }
        epoll_ctl(self.epollfd, EPOLL_CTL_DEL, fd, &ev);
    }

What this allows us to do is multiplex coroutines onto threads:
suspend |prom| {
    // Consider if N threads are waiting on this job queue.
    // They would call resume right away, so we must be already
    // suspended when we add the promise to the queue. This is
    // exactly what the suspend block provides.
    atomic_push_to_job_queue(prom);
}

Proposal edit:

When declaring an async function, if there are no parentheses after async then the function is generic. The allocator passed in via async() is used to instantiate the generic function.
If you use async(AllocatorType) fn() void syntax, then the function is not generic, and the allocator passed in will be casted to AllocatorType.

Thanks for the ping, Andrew.  Yep, I still do a lot of libuv work.
I'm intrigued by the comment on promises being linear types.  Is that a new concept in zig?
Does linearity mean the promise can be used only inside the function that creates it?  Or do you plan to introduce implicit or explicit lifetimes so that it can be returned to the caller?
Will  @sizeOf(amain) return the storage size of the coro?
Is try await try async self.waitFd(fd) equivalent to this?
var promise = try async self.waitFd(fd);
try await promise;

Is try self.waitFd(fd) without async a syntax error?
Will you be able to use await afoo() anywhere where just foo() is allowed?  E.g.:
if (foo()) bar();
if (await afoo()) bar();

Or:
for (foo()) |x| bar(x);
for (await afoo()) |x| bar(x);
for await (foo()) |x| bar(x);  // async iterator - probably a project of itself

I think the answer is yes, but I thought I'd ask anyway.
Does the promise start out suspended or until the first await or suspend statement?  That is relevant for CPU-bound code that you want to offload to a thread.  E.g.:
async fn everyNthPiDigit(nth: int) int { ... }
var promise = async everyNthPiDigit(1e9);  // returns immediately or after computing the billionth digit?
runInNewThread(promise);

I'm still a little unclear on how generators (multiple returns) would work with this proposal.
All in all, I like where this is going!

I'll answer these questions for the proposal as it stands now, but these answers are not necessarily set in stone.

I'm intrigued by the comment on promises being linear types. Is that a new concept in zig?

Yes it is, and promise would be the only type that the concept applies to.

Does linearity mean the promise can be used only inside the function that creates it? Or do you plan to introduce implicit or explicit lifetimes so that it can be returned to the caller?

The linearity is a requirement of the language but would not be entirely enforced at compile-time. You would be able to assign the promise to another variable, return it from a function, pass it as a parameter, any of these things. Each of these things would assign false to the alive property of the old reference. For example:
var promise1 = try async foo();
assert(promise1.alive);
var copy = promise1;
assert(copy.alive);
assert(!promise1.alive);

Under the hood, a promise is a pointer. The alive property is actually implemented by setting it to 0 to make it not alive.
Calling cancel, resume, or await on a promise which is not alive is undefined behavior - that is - in Debug and ReleaseSafe builds it panics, and in ReleaseFast mode the optimizer assumes you never do it to make whatever optimizations it can.
So it's a linear type in the sense of what the responsibility is for the programmer - one must cancel, resume, or await a promise exactly once, otherwise undefined behavior occurs.
In practice, if one fails to do anything with a promise, then the async function's defers, if any, will not run. I haven't thought of a way to provide any runtime safety checks for this situation. It's pretty similar to not calling free, which is difficult to catch in the same way.
It's also possible to cause a promise to have an incorrect value for alive, by using unsafe features such as @memcpy instead of std.mem.copy:

store an alive promise in a struct
@ptrCast to get a &u8
@memcpy to copy the struct to another one
both structs now have a promise that thinks it's alive

Because of this, I would consider actually removing the ability to query the alive state from the proposal. Programmers would have to manage such state themselves if they wanted it, but we would still insert runtime safety checks, which would have the possibility of false negatives, but no false positives. (And then in ReleaseFast we would not even bother setting the pointer to 0 since it can never be queried.)
Either way, the caller can, in fact, return the promise.

Will @sizeOf(amain) return the storage size of the coro?

That's related to the code review I sent to LLVM above. I actually abandoned it, because the proposal I ended up coming up with didn't necessarily need it. However, now that you bring it up again, it would be nice to have the ability to query the coroutine frame size. Unfortunately, without significant reorganization of how zig works, and tightly coupling zig to LLVM instead of loose coupling as it currently stands, the size would not be available to use at comptime.
Also, currently when you reference a function, it's actually a comptime known pointer to a function. So @sizeOf(amain) would be @sizeOf(usize). We'd have to introduce a new builtin such as @frameSize. This is related to #157.

Is try await try async self.waitFd(fd) equivalent to this?

Yes.

Is try self.waitFd(fd) without async a syntax error?

It's a semantic analysis error, and in fact is already implemented in the async branch:
test "aoeu" {
    amain();
}
async fn amain() void {
}

Output:
[nix-shell:~/dev/zig/build]$ ./zig test test2.zig
/home/andy/dev/zig/build/test2.zig:2:5: error: must use async keyword to call async function
    amain();
    ^
/home/andy/dev/zig/build/test2.zig:5:7: note: declared here
async fn amain() void {
      ^

Will you be able to use await afoo() anywhere where just foo() is allowed?  E.g.:

You would get error: expected promise, found 'i32' or similar.

Does the promise start out suspended or until the first await or suspend statement?  That is relevant for CPU-bound code that you want to offload to a thread.  E.g.:

No - with this proposal the async function executes until suspension. You would have to intentionally offload CPU-bound code to a thread like this:
async fn everyNthPiDigit(nth: int) int {
    suspend |my_promise| {
        runInNewThread(my_promise);
    }
    // we are now running in the other thread
    // do computation...
    suspend |my_promise| {
        runInOriginalThread(my_promise);
    }
    // back in the original thread
    return result;
}

Some options here:

You could let the other thread complete the async function, if your application can handle multiple threads. That would be more efficient.

You could have the calling function do the suspend dance and then call everyNthPiDigit which could be thread agnostic. Using comptime features you could also make a function with var args to call another async function in another thread, such as async fn callAsyncFnInNewThread(func: var, args: ...) @typeOf(func).ReturnType

(my favorite) Instead of having async functions have to care about kernel threads, you could have the main event loop use a thread pool to execute waiting promises. For example the function in the proposal that calls epoll_wait could use a thread pool to resume N promises at once.
In a busy web server, for example, let's say 5 requests came in to calculate Pi on a 4 processor core machine. Thread pool size 4. The first request comes in, thread 1 picks it up and it gets stuck in everyNthPiDigit. Then epoll_wait reveals another request comes in, so even though thread 1 is stuck in everyNthPiDigit, thread 2 picks up the waiting fd, and goes for it, then gets stuck in everyNthPiDigit. So on until all 4 threads are stuck in everyNthPiDigit. Now the 5th request comes in, and there are no threads ready to pick up the ready fds. All 4 threads are stuck in the CPU bound everyNthPiDigit. You could change the web server to have something other than this behavior, but this is maximally efficient. To context switch away from this CPU bound work would be to sacrifice performance.

The eager execution of async functions does the following things:

saves 2 context switches per call
gives the async function a chance to start its own promises as soon as possible (what if the calling function has CPU-bound code in between async and await of the async fn?)
avoids the necessity of the async/await language features having to be integrated with a userland event loop code

I'm still a little unclear on how generators (multiple returns) would work with this proposal.

To be determined. As is, this proposal does not support multiple returns.

Here's an example of what amain would look like if we did not give the alive property of a promise:
async fn amain(loop: &EventLoop) !void {
    const config_promise = try async loop.allocReadFile("config.json");
    var config_promise_alive = true;
    defer if (config_promise_alive) cancel config_promise;

    const dict_promise = try async loop.allocReadFile("dictionary.txt");
    var dict_promise_alive = true;
    defer if (dict_promise_alive) cancel dict_promise;

    config_promise_alive = false;
    const config_contents = try await config_promise;
    defer allocator.free(config_contents);

    dict_promise_alive = false;
    const dict_contents = try await dict_promise;
    defer allocator.free(dict_contents);

    if (mem.eql(u8, dict_contents, config_contents)) {
        std.debug.warn("config.json and dictionary.txt are the same");
    }
}

It's a bit verbose, but it does not introduce nesting, it's pretty straightforward, and does not introduce any new language features. My biggest concern would be that it would be easier to not do this than to do it, thus leading to incorrect cleanup code.
I have a more general dont-forget-to-cleanup-resources proposal coming up soon that could be integrated into this.

With #782 the example above would become:
async fn amain(loop: &EventLoop) !void {
    const config_promise = clean try async loop.allocReadFile("config.json");
    const dict_promise = clean try async loop.allocReadFile("dictionary.txt");

    const config_contents = clean try await config_promise;
    const dict_contents = clean try await dict_promise;

    if (mem.eql(u8, dict_contents, config_contents)) {
        std.debug.warn("config.json and dictionary.txt are the same");
    }
}

In case this is helpful to someone: some C++ async/await/resumable proposals

I dont see how async/await fits into zig's philosophy of not hiding function calls, there is now an entire threadpool (right?!) hidden inside a keyword with complex stack rebuilding and what not. I cant tell you how to be threadsafe and write performant code while there are countless threads doing God knows what;

there is now an entire threadpool

There's no thread pool in the zig language. Coroutines work in freestanding mode, with no OS.
Here's the thread pool: https://github.com/ziglang/zig/blob/fd575fe1f3b45806f2cf823a2abe3727d381d4ed/std/event/loop.zig#L16
It's in userland. If you don't import std.event.Loop, then you don't get a thread pool.


context cancelled

version 2.37.0 reported by @jonaswittbrodt
ProcessQueueOnce does not have a span. It should have a span, and it should also set the span error.

And, if it is indeed a timeout issue (context cancelled), then we should probably return 504 Gateway Timeout instead of internal server error.


Zen polishing

I added proper logging, allowed it to raise exceptions when needed, simplified a couple of things. I removed checking if the method is allowed: better ask forgiveness, not permission (and, since getAllowedMethods were called before setting shoot mode, actTakePicture was not available and it refused to instruct the camera to take pictures!).

thanks so much. good job.


Add keysSet

See #172

I split this into two commits because that's the only way I could find to get git to preserve the history properly, so git blame shows the history of Data.HashMap.Strict.Base and Data.HashSet.Base instead of attributing everthing to my one commit.


fixed typo in node section. updated tag from rancher/rancher:master to…

… rancher/rancher:stable

LGTM


Recipe to upgrade backend servers without yenv

Create a spartacus recipe to upgrade backend servers from commerce suite RCs

New hybris installer recipe for Spartacus here
Script to update spartacus here

Is there a reason for the local.properties file in the Spartacus recipe?
The properties all seem to be already set in the .gradle file.  Maybe we can do without the local.properties file and have something leaner?


Unable to communicate

I assume after the frida update on their repo , the tool need to be updated

Same


Update README.md

Could not get github markup to center image and text next to each other (html style attribute gets stripped) 🤷♂

So is the HTML actually needed for anything? We could just reference the image in Markdown, right?

Updated and sized the image to match the DocC text width to align better, but the <br> needs to be added, otherwise the text will be either on the same line as image, or there would be a paragraph space.


L1 fits write

Codecov Report

Merging #106 (0227d85) into master (bea1340) will increase coverage by 0.80%.
The diff coverage is 88.65%.

@@            Coverage Diff             @@
##           master     #106      +/-   ##
==========================================
+ Coverage   84.26%   85.07%   +0.80%
==========================================
  Files          45       46       +1
  Lines        3527     3457      -70
==========================================
- Hits         2972     2941      -31
+ Misses        555      516      -39

Impacted Files
Coverage Δ

stixcore/processing/engineering.py
62.50% <0.00%> (-29.71%)
:arrow_down:

stixcore/products/level1/housekeeping.py
80.00% <80.00%> (ø)

stixcore/products/product.py
86.70% <81.81%> (-1.04%)
:arrow_down:

stixcore/products/level0/quicklook.py
92.30% <95.65%> (+0.06%)
:arrow_up:

stixcore/io/fits/processors.py
65.07% <100.00%> (+19.72%)
:arrow_up:

stixcore/products/level0/housekeeping.py
100.00% <100.00%> (ø)

stixcore/products/level0/science.py
82.88% <100.00%> (+0.04%)
:arrow_up:

stixcore/products/level1/quicklook.py
96.96% <100.00%> (+32.49%)
:arrow_up:

stixcore/products/common.py
74.41% <0.00%> (-12.80%)
:arrow_down:

... and 2 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 bea1340...0227d85. Read the comment docs.


az artifacts universal publish Ubuntu 22.04 libssl error

Description
We upgraded our docker image to ubuntu 22.04 from 20.04. Now az artifacts universal publish fails due to a No usable version of libssl was found error. If we install the libssl version 1.1.* we end up with another error.
On the Ubuntu 20.04 docker image, all worked great.
Versions

Docker image: ubuntu:22.04
libssl: 3.0.* / 1.1.*
Azure-Devops Extension: 0.25.0
Azure-CLI: 2.36.0

Logs
Error with libssl 1.1.*
The SSL connection could not be established, see inner exception.
 ---> System.Security.Authentication.AuthenticationException: Authentication failed, see inner exception.
 ---> System.TypeInitializationException: The type initializer for 'SslMethods' threw an exception.
 ---> System.TypeInitializationException: The type initializer for 'Ssl' threw an exception.
 ---> System.TypeInitializationException: The type initializer for 'SslInitializer' threw an exception.
 ---> Interop+Crypto+OpenSslCryptographicException: error:0E076071:configuration file routines:module_run:unknown module name
   at Interop.SslInitializer..cctor()
   --- End of inner exception stack trace ---
   at Interop.Ssl..cctor()
   --- End of inner exception stack trace ---
   at Interop.Ssl.SslV2_3Method()
   at Interop.Ssl.SslMethods..cctor()
   --- End of inner exception stack trace ---
   at Interop.OpenSsl.AllocateSslContext(SslProtocols protocols, SafeX509Handle certHandle, SafeEvpPKeyHandle certKeyHandle, EncryptionPolicy policy, SslAuthenticationOptions sslAuthenticationOptions)
   at System.Net.Security.SafeDeleteSslContext..ctor(SafeFreeSslCredentials credential, SslAuthenticationOptions sslAuthenticationOptions)
   at System.Net.Security.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteContext& context, ArraySegment`1 inputBuffer, Byte[]& outputBuffer, SslAuthenticationOptions sslAuthenticationOptions)
   --- End of inner exception stack trace ---
   at System.Net.Security.SslStream.StartSendAuthResetSignal(ProtocolToken message, AsyncProtocolRequest asyncRequest, ExceptionDispatchInfo exception)
   at System.Net.Security.SslStream.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)
   at System.Net.Security.SslStream.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)
   at System.Net.Security.SslStream.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest)
   at System.Net.Security.SslStream.ProcessAuthentication(LazyAsyncResult lazyResult, CancellationToken cancellationToken)
   at System.Net.Security.SslStream.BeginAuthenticateAsClient(SslClientAuthenticationOptions sslClientAuthenticationOptions, CancellationToken cancellationToken, AsyncCallback asyncCallback, Object asyncState)
   at System.Net.Security.SslStream.<>c.<AuthenticateAsClientAsync>b__65_0(SslClientAuthenticationOptions arg1, CancellationToken arg2, AsyncCallback callback, Object state)
   at System.Threading.Tasks.TaskFactory`1.FromAsyncImpl[TArg1,TArg2](Func`5 beginMethod, Func`2 endFunction, Action`1 endAction, TArg1 arg1, TArg2 arg2, Object state, TaskCreationOptions creationOptions)
   at System.Threading.Tasks.TaskFactory.FromAsync[TArg1,TArg2](Func`5 beginMethod, Action`1 endMethod, TArg1 arg1, TArg2 arg2, Object state, TaskCreationOptions creationOptions)
   at System.Threading.Tasks.TaskFactory.FromAsync[TArg1,TArg2](Func`5 beginMethod, Action`1 endMethod, TArg1 arg1, TArg2 arg2, Object state)
   at System.Net.Security.SslStream.AuthenticateAsClientAsync(SslClientAuthenticationOptions sslClientAuthenticationOptions, CancellationToken cancellationToken)
   at System.Net.Http.ConnectHelper.EstablishSslConnectionAsyncCore(Stream stream, SslClientAuthenticationOptions sslOptions, CancellationToken cancellationToken)
   --- End of inner exception stack trace ---
   at Microsoft.VisualStudio.Services.Common.VssHttpRetryMessageHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at System.Net.Http.HttpClient.FinishSendAsyncBuffered(Task`1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts)
   at Microsoft.VisualStudio.Services.WebApi.VssHttpClientBase.SendAsync(HttpRequestMessage message, HttpCompletionOption completionOption, Object userState, CancellationToken cancellationToken)
   at Microsoft.VisualStudio.Services.WebApi.VssHttpClientBase.SendAsync[T](HttpRequestMessage message, Object userState, CancellationToken cancellationToken)
   at Microsoft.VisualStudio.Services.Location.Client.LocationHttpClient.GetConnectionDataAsync(ConnectOptions connectOptions, Int64 lastChangeId, CancellationToken cancellationToken, Object userState)
   at Microsoft.VisualStudio.Services.WebApi.Location.VssServerDataProvider.GetConnectionDataAsync(ConnectOptions connectOptions, Int32 lastChangeId, CancellationToken cancellationToken)
   at Microsoft.VisualStudio.Services.WebApi.Location.VssServerDataProvider.ConnectAsync(ConnectOptions connectOptions, CancellationToken cancellationToken)
   at Microsoft.VisualStudio.Services.WebApi.Location.VssServerDataProvider.EnsureConnectedAsync(ConnectOptions optionsNeeded, CancellationToken cancellationToken)
   at Microsoft.VisualStudio.Services.WebApi.Location.VssServerDataProvider.GetInstanceIdAsync(CancellationToken cancellationToken)
   at Microsoft.VisualStudio.Services.WebApi.Location.LocationService.GetLocationDataAsync(Guid locationAreaIdentifier, CancellationToken cancellationToken)
   at Microsoft.VisualStudio.Services.WebApi.VssConnection.GetClientInstanceAsync(Type managedType, Guid serviceIdentifier, CancellationToken cancellationToken, VssHttpRequestSettings settings, DelegatingHandler[] handlers)
   at Microsoft.VisualStudio.Services.WebApi.VssConnection.GetClientServiceImplAsync(Type requestedType, Guid serviceIdentifier, Func`4 getInstanceAsync, CancellationToken cancellationToken)
   at Microsoft.VisualStudio.Services.WebApi.VssConnection.GetClientAsync[T](CancellationToken cancellationToken)
   at Microsoft.VisualStudio.Services.Content.Common.AsyncHttpRetryHelper`1.InvokeAsync(CancellationToken cancellationToken)
   at Microsoft.VisualStudio.Services.Content.Common.ExceptionExtensions.ReThrow(Exception ex)
   at Microsoft.VisualStudio.Services.Content.Common.AsyncHttpRetryHelper`1.InvokeAsync(CancellationToken cancellationToken)
   at ArtifactTool.DedupManifestArtifactClientProvider.GetDedupManifestArtifactClientAsync(String serviceUrl, String patVar, ILogger commandBaseLogger, IAppTraceSource tracer, String cacheDirectory, Boolean cacheWriteAllowed, CancellationToken cancellationToken) in D:\\a\\1\\s\\src\\ArtifactTool\\Providers\\DedupManifestArtifactClient\\DedupManifestArtifactClientProvider.cs:line 57
   at ArtifactTool.Commands.UPackPublishCommand.ExecuteAsync() in D:\\a\\1\\s\\src\\ArtifactTool\\Commands\\UPack\\UPackPublishCommand.cs:line 51
   at ArtifactTool.Commands.CommandBase.OnExecuteAsync() in D:\\a\\1\\s\\src\\ArtifactTool\\Commands\\CommandBase.cs:line 105
   at McMaster.Extensions.CommandLineUtils.Conventions.ExecuteMethodConvention.InvokeAsync(MethodInfo method, Object instance, Object[] arguments) in C:\\projects\\commandlineutils\\src\\CommandLineUtils\\Conventions\\ExecuteMethodConvention.cs:line 77
   at McMaster.Extensions.CommandLineUtils.Conventions.ExecuteMethodConvention.OnExecute(ConventionContext context) in C:\\projects\\commandlineutils\\src\\CommandLineUtils\\Conventions\\ExecuteMethodConvention.cs:line 62
   at McMaster.Extensions.CommandLineUtils.Conventions.ExecuteMethodConvention.<>c__DisplayClass0_0.<<Apply>b__0>d.MoveNext() in C:\\projects\\commandlineutils\\src\\CommandLineUtils\\Conventions\\ExecuteMethodConvention.cs:line 25
--- End of stack trace from previous location where exception was thrown ---
   at McMaster.Extensions.CommandLineUtils.CommandLineApplication.<>c__DisplayClass126_0.<OnExecute>b__0() in C:\\projects\\commandlineutils\\src\\CommandLineUtils\\CommandLineApplication.cs:line 505
   at McMaster.Extensions.CommandLineUtils.CommandLineApplication.Execute(String[] args) in C:\\projects\\commandlineutils\\src\\CommandLineUtils\\CommandLineApplication.cs:line 611
   at McMaster.Extensions.CommandLineUtils.CommandLineApplication.Execute[TApp](CommandLineContext context) in C:\\projects\\commandlineutils\\src\\CommandLineUtils\\CommandLineApplication.Execute.cs:line 57
   at McMaster.Extensions.CommandLineUtils.CommandLineApplication.ExecuteAsync[TApp](CommandLineContext context) in C:\\projects\\commandlineutils\\src\\CommandLineUtils\\CommandLineApplication.Execute.cs:line 145
   at McMaster.Extensions.CommandLineUtils.CommandLineApplication.ExecuteAsync[TApp](IConsole console, String[] args) in C:\\projects\\commandlineutils\\src\\CommandLineUtils\\CommandLineApplication.Execute.cs:line 130
   at McMaster.Extensions.CommandLineUtils.CommandLineApplication.ExecuteAsync[TApp](String[] args) in C:\\projects\\commandlineutils\\src\\CommandLineUtils\\CommandLineApplication.Execute.cs:line 112

Error with libssl 3.0.*
WARNING: Failed to parse structured output from Universal Packages tooling (ArtifactTool)\nWARNING: Exception: Expecting value: line 1 column 1 (char 0)\nWARNING: Log line: No usable version of libssl was found\nWARNING: Failed to parse structured output from Universal Packages tooling (ArtifactTool)\nWARNING: Exception: Expecting value: line 1 column 1 (char 0)\nWARNING: Log line: qemu: uncaught target signal 6 (Aborted) - core dumped

Az extension versions
[
  {
    "experimental": false,
    "extensionType": "whl",
    "name": "azure-devops",
    "path": "/root/.azure/cliextensions/azure-devops",
    "preview": false,
    "version": "0.25.0"
  },
  {
    "experimental": false,
    "extensionType": "whl",
    "name": "azure-iot",
    "path": "/root/.azure/cliextensions/azure-iot",
    "preview": false,
    "version": "0.14.0"
  },
  {
    "experimental": false,
    "extensionType": "whl",
    "name": "ml",
    "path": "/root/.azure/cliextensions/ml",
    "preview": true,
    "version": "2.3.1"
  }
]

Azure cli version
azure-cli                         2.36.0
core                              2.36.0
telemetry                          1.0.6

Extensions:
azure-devops                      0.25.0
azure-iot                         0.14.0
ml                                 2.3.1

Dependencies:
msal                              1.17.0
azure-mgmt-resource               20.0.0

Python location '/opt/miniconda/bin/python'
Extensions directory '/root/.azure/cliextensions'

Python (Linux) 3.8.11 (default, Aug  3 2021, 15:09:35)
[GCC 7.5.0]

Legal docs and information: aka.ms/AzureCliLegal

Your CLI is up-to-date.

OS version
cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04 (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy

Update: Manual reproduction
docker run -it ubuntu:22.04
# inside docker
apt update && apt install curl
curl -sL https://aka.ms/InstallAzureCLIDeb | bash
export DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1
az login
mkdir test && cd test && echo "hello world" >> world.txt
az artifacts universal publish --organization <organization> --project="<project>" --scope project --feed <feed> --name my-first-package --version 0.0.1 --description "Welcome to Universal Packages" --path .

Hello @bweben
We are routing this to Service Teams Attention for further action!

I am having exactly the same issue as well

I am also getting this libssl related error when I try any az command on Ubuntu 22.04. It can't run any az command at all.

Iast 're-routing' of this issue was over 2 weeks ago...
any updates on whether this is being tracked / analyzed? @SatishBoddu-MSFT? @yonzhan

Same Problem for me
---> Interop+Crypto+OpenSslCryptographicException: error:0E076071:configuration file routines:module_run:unknown module name

Is there any possibility to get this working even without a new az version?
This is quite a high priority issue for us. Or are there any other Microsoft support options available for the Azure CLI?
I am sorry if this is the wrong channel to ask but if anyone has any answer to my questions I would be happy to hear them.

Same Problem for my ubuntu 22.04
No usable version of libssl was found
./config.sh：行 86: 1414825 已放弃               （核心已转储） ./bin/Agent.Listener configure "$@"

Come on - I know this is an open source project of Microsoft / Azure.. but no activity whatsoever in over a month?

The workaround for now is the following:

install an older version of libssl:
wget http://security.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1l-1ubuntu1.5_amd64.deb && sudo dpkg -i libssl1.1_1.1.1l-1ubuntu1.5_amd64.deb && rm libssl1.1_1.1.1l-1ubuntu1.5_amd64.deb
Edit etc/ssl/openssl.cnf:
sed -i 's/openssl_conf = openssl_init/#openssl_conf = openssl_init/g' /etc/ssl/openssl.cnf

See https://github.com/microsoft/azure-pipelines-agent/issues/3834#issuecomment-1173182107

Hi @kysucix
Thanks for the workaround... this is maybe a temporary solution, but libssl1 / openssl1 have serious CVEs! (https://security-tracker.debian.org/tracker/CVE-2022-1292 for example)
I really hope libssl3 is soon going to work!

Hi, the vulnerability is fixed in latest version of libssl, see https://ubuntu.com/security/CVE-2022-1292

@yonzhan Do you have an update for a proper fix to this issue?

Hi, the vulnerability is fixed in latest version of libssl, see https://ubuntu.com/security/CVE-2022-1292

Yes, we found a patched version that we can use.  Unfortunately it seems to be the only way right now to get az artifacts working on ubuntu 22.04.

The workaround for now is the following:

Install an older version of libssl:
wget http://security.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1l-1ubuntu1.6_amd64.deb && sudo dpkg -i libssl1.1_1.1.1l-1ubuntu1.6_amd64.deb && rm libssl1.1_1.1.1l-1ubuntu1.6_amd64.deb
Edit etc/ssl/openssl.cnf:
sed -i 's/openssl_conf = openssl_init/#openssl_conf = openssl_init/g' /etc/ssl/openssl.cnf

See microsoft/azure-pipelines-agent#3834 (comment)

same same, az artifacts universal download also fails on ubuntu 22.04. workaround above works...

Issue reproduced on Win11/WSL2/Ubuntu 22.04
Workaround with installing http://security.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1l-1ubuntu1.6_amd64.deb and commenting line in /etc/ssl/openssl.cnf
openssl_conf = openssl_init
Works fine

The link to the mentioned package did not work for me. I could however use
http://security.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1-1ubuntu2.1~18.04.20_amd64.deb
to get it working.
(Remember to edit the package name three (3) times in the command (wget, dpkg and rm))

This issue also seems to exist when running an azure pipeline agent locally

same here, i use ubuntu 22.04 and want to install azure pipeline agent, but get this error

+1. Oddly I have the agent Azure Dev Ops agent working on some of my Ubuntu 22.04 VMs but not others. Is there a fix for this yet?

Any news on this topic? I don't think that downgrading the lib is a good option for me

I have the same issue, still no update yet?

If you’re issue is with the ADO pipeline, they have updated the main bug being tracked here:
https://github.com/microsoft/azure-pipelines-agent/issues/3834#issuecomment-1325638361
Good news, they have an update that will move to dotnet 6, so the issue will be resolved soon!

I am running from an Ubuntu 22.04 docker container and I am getting the ssl error while running az artifacts universal download.

This was opened back in April. How is it still not fixed? I feel like the workaround is unacceptable, because people will end up installing a package that will never ever get updated and will probably forget to readjust their openssl config.
What is the timeline for a real fix?

@SatishBoddu-MSFT @yonzhan
Is any update on this?
Looks like updating az cli .NET core to latest 2.1 version should work: https://dev.to/n3wt0n/no-usable-version-of-the-libssl-was-found-solved-2ffa

@SatishBoddu-MSFT @yonzhan Is any update on this?
Looks like updating az cli .NET core to latest 2.1 version should work: https://dev.to/n3wt0n/no-usable-version-of-the-libssl-was-found-solved-2ffa

The post you linked talks about missing 1.0. In our case, it's complaining about missing 1.1, not 1.0. We need it to support 3.0.

Yes, we need support for OpenSSL 3.0.

I agree, it's a pain to maintain the workaround suggested above.

Is there a timeline when /if the feature is planned?

This is very annoying, Thinking of a possible workaround using a docker container so as to not cripple your workstation

Put this into your .bashrc. It works in some, but not all cases, you will have to try...
function az () {
    docker run -it -u $UID:$GID --entrypoint="" -v "$(pwd)":/build --workdir="/build" -v "${HOME}"/.azure:/.azure:rw -v "${HOME}"/.azure-devops:/.azure-devops:rw mcr.microsoft.com/azure-cli az "$@"
}
export -f az

Nice, I didn't know MS published the tool as a container. Thanks

This is also broken on the latest container 2.46.0.
You must understand that this is a major issue and it is not fixed after almost a year.
We are considering moving to an alternative artifact platform capable of storing the build and universal artifacts so that developers and testers may download them without hitting this problem.
I'd like to ask you MS Devs to please fix it, with as much urgency as possible.

Any chance this will get fixed? Looks a bit weird that such a mainstream distro is not supported, even more than one year after its release.
@yonzhan / @SatishBoddu-MSFT this ticket got moved around a few times but has never actually been worked on, right? can you please reconsider it?

@lorenzo-biava @yonzhan @SatishBoddu-MSFT
Also the related issue on the extension itself is rather stale: https://github.com/Azure/azure-cli-extensions/issues/5979

HI dear Microsoft, can you please fix this issue?

Hey guys,
Did a quick investigation, and this is issues within the ArtifactTool.exe .NET application that is downloaded while running az artifacts universal download or az artifacts universal publish. Tldr this app uses EOL version of .NET (Core 3.1), which is no longer supported. Additionally,
Unfortunately as this is Microsoft closed-source tool, instead of relying on Github team to fix it here, this needs to be raised on Developer Community. There is a slight chance that updating that tool to latest supported LTS version of .NET may resolve this issue - there is ticket open for it already. I think the best approach would be to make some noise there, so perhaps someone from development team of that tool would spend some effort to make it working with current Linux stack.
I already noticed that Microsoft has a pretty nasty tendency there to close tickets related to this tool with "not enough information", so keep in mind that we really need to escalate it properly.

Thanks @Azkel ! Great investigation! Thank you also for the last advice ;)

May 2023, I am glad I found this thread but also sad that this issue is still present. Is there any work being done to fix this problem?

Please fix this m$....

Another workaround:
function az () {
    docker run -it -u $UID:$GID --entrypoint="" -v "$(pwd)":/build --workdir="/build" -v "${HOME}"/.azure:/.azure:rw -v "${HOME}"/.azure-devops:/.azure-devops:rw mcr.microsoft.com/azure-cli az "$@"
}

@jaapcrezee Are you sure this work with this image? For me it seems to have the same issue.

@rodrigovb96 I use version 2.45.0
Maybe you can try that one instead of the latest.

It looks like latest azure-cli doesn't need the workaround anymore.
Can someone else confirm as well?

I can also confirm that the latest version 2.50.0 of Azure CLI doesn't need any workaround (at least I tested on Ubuntu Jammy).

I'm not working anymore with the azure cli.
So you all mean I can close this issue as of version v2.50.0 this is fixed?

Yes let's please close this issue as it's been solved. Thanks.


ImportError: No module named 'apiRequest'

Traceback (most recent call last):
File "syntax.py", line 1, in
from syntaxdb import syntaxdb
File "C:\Python34\lib\site-packages\syntaxdb_init_.py", line 1, in
from syntaxdb import syntaxdb
File "C:\Python34\lib\site-packages\syntaxdb\syntaxdb.py", line 4, in
import apiRequest

This is a python 3 error.

Yes, thank you. I think it should be absolute import to work with Python 3. But I just implement that module with Python 2, not Python 3 yet. I'll update Python 3 support later. Again, thank for your helping.

The code looks simple if enough maybe we could collab on it if you don't mind


Google Play to be replaced by YouTube remix?

https://www.droid-life.com/wp-content/cache/page_enhanced/www.droid-life.com/2018/04/24/youtube-remix-google-play-music/_index.html
This article just came out today and implies that Google Play is going to be retired in favor of YouTube Remix - a forthcoming streaming platform.
What will become of our beloved Desktop Player? I personally don't use it for streaming/radio... I upload my own MP3 library and don't want to go full streaming...
I feel like I just got punched in the gut...

It really depends on what Google decides to do :man_shrugging:. If they keep Google Music the web interface then this project will live on. If they sunset it, we'll have to see if it's worth applying development efforts to the new player.

We don't know what Google will do, neither do these people guessing what will happen when / if remix comes out.  I guess we'll cross that bridge when we get that far

The new YouTube music is rolling out (I have it), and I think we should re-open this issue. It would be really nice to have something like this for YouTube music.

I don't have access to YouTube music yet, if someone can get me access, lend me access or whatever I can look at supporting ytm in this app (it shouldn't actually be too hard to get basic support in)

From what I read, the transition will be gradual, but Google Play Music is indeed on its death bed.
From a Google statement about YouTube Music:

We’ve previously announced the combination of the YouTube Music and Google Play product teams — music is very important to Google so it’s critical we have one offering that meets the needs of consumers and artists. Nothing will change for users today and we’ll provide plenty of notice before any changes are made.

Most things are working in the ytm branch, including a service switcher that lets you toggle between GPM and YTM.
https://github.com/MarshallOfSound/Google-Play-Music-Desktop-Player-UNOFFICIAL-/tree/ytm
Still to do:

[ ] Port gmusic-ui.js
[ ] Port gmusic-theme.js (not super urgent, the default is dark mode on ytm)
[ ] As yet undiscovered bugs

Can some folks experienced with the codebase check it out and let me know if it breaks / works 😄
cc @SolarLiner @jostrander

Wait does that mean I'm supposed to be experienced with the codebase? 😅
I don't have access to YTM for now, since Europeans seem to be a second market for Google. Maybe there's something else I can do?

@SolarLiner 🤔 I'm in Australia and just got it randomly today with no emails.

Hm. You're getting me hyped there, I'll check it out tonight.

I get this error when I run npm install:
npm-error.log. If you post a prebuilt version I will happily test it out for you.

I just got it here and so I'm readying to test the ytm branch.

Tried out your branch, will use it as a daily driver for a bit (as an aside - thanks for making this!).
Couldn't figure out how to actually change the service via the UI, but I hacked it into the .settings file to get it working.
Lots of errors on app start in the console (let me know if you want them) - but the app itself seems to work anyhow.

Most of the error are expected, the ytm API hacks I did aren't complete, you can switch services from the tray menu btw

Okay so it didn't work the first time but that's because I'm an idiot who doesn't RTFM... :man_facepalming:
After installing the system dependencies (btw, Ubuntu 18.04 can't find lib32bz2-1.0, but I could build without it, so is it really needed?), I got it to work. Surprised me to even have MPRIS working, that's very nice!
I'll report once I have spent the whole night using it, but so far so good!

Might be a good idea to reserve youtubemusicdesktopplayer.com or something of the sorts.

Well, I didn't pull an all-nighter but I did use YouTube music for a few hours, here's my observations:

Cover art sent to MPRIS should be cropped because with Music being able to play videos, the aspect ratio isn't correct.
Play status isn't reported to MPRIS - although signal sent by it are correctly interpreted by the player
There's a double "mini player" button on the Google Play Music interface now

I'm really loving this! I'll be making a deb package and installing it over the 4.5.0 version.

4.6.0 will have ytm support in it, should be released some time this week


fix(ci,build): fixes for 0.35.x release branch

What type of PR is this?

Uncomment one (or more) /kind <> lines:

/kind bug
/area build
/area ci

What this PR does / why we need it:
Changes for build issue identified on the Falco 0.35.x release branch
Which issue(s) this PR fixes:

Fixes #
Special notes for your reviewer:
Does this PR introduce a user-facing change?:

NONE

Adding the "do-not-merge/release-note-label-needed" label because no release-note block was detected, please follow our release note process to remove it.

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by: LucaGuerra
Once this PR has been reviewed and has the lgtm label, please assign jasondellaluce for approval. For more information see the Kubernetes Code Review Process.
The full list of commands accepted by this bot can be found here.

Needs approval from an approver in each of these files:

OWNERS

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: FedeDP, jasondellaluce, LucaGuerra
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS [FedeDP,jasondellaluce]

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

/milestone 0.35.0
This is the very same patch as https://github.com/falcosecurity/falco/pull/2621.
To speed up, we are opening the PR against the release branch.

tide — In merge pool.

Please tide.


The LLM recommendation for locally hosted paper-qa

Can someone suggest any LLM recommended for using paper-qa on a locally hosted LLM? What is the minimum size of the locally hosted LLM to acquire a relatively good performance to use paper-qa?

Hey @huiyyu since our newest release launched with litellm, you can now locally host via ollama or llama.cpp to host locally and pass in the URL to your Settings. Check out our readme for more info.


IGAPP-1366: Unify onPress behavior

This pull request belongs to an issue on our bugtracker.
You can find it there by looking for an issue with the key which is mentioned in the title of this pull request.
It starts with the keyword IGAPP.

For poi detail components this is done in #1005

I agree with @SteffiStuffel here. Pressable should be the way to go here.

@SteffiStuffel @sarahsporck fixed, I now use a custom implementation of Pressable. I can adjust the pressed styling if you want.

Please rename the branch

@SteffiStuffel thought about this but then decided not to bc this closes the PR. Why do you think that is the better choice? Bc of the naming of the merge commit? I am totally okay with renaming :)

There are some usages of pressable/touchable Buttons that do not use this new "Pressable" component, is this on purpose, e.g. SlideFooter-Buttons, CityNotCooperatingFooter, ExportEvent-Button....

That are all usages of react-native-elements button component. Also good catch but will be done in #1003 as I refactored those already there (have to change from touchable opacity to pressable as well though).

Please rename the branch

@SteffiStuffel thought about this but then decided not to bc this closes the PR. Why do you think that is the better choice? Bc of the naming of the merge commit? I am totally okay with renaming :)

I thought this can cause confusion when later looking at the git history and the name of the branch is the opposite of what is done, but not that important though,


why do settings do not save during the theme installation?

Example →  Single Page Title → https://www.screencast.com/t/kWfiuJS1
You can see that the two title locations are by default OFF, but still the title is shown in all the three locations. This is not fixed Until I go to single page panel and save.
Maybe because Kirki is installed after theme installation so customizer settings do not get saved. Any Fix sir?

The WordPress Customizer in general doesn't save unmodified values. The defaults are not saved anywhere. That's just the way the customizer works and there's no way around that.
The solution is to properly use the get_theme_mod function in your theme and add the defaults for the setting as the 2nd argument of the function.
In https://codex.wordpress.org/Function_Reference/get_theme_mod you can see that if you don't define a 2nd argument, the default value is set to false.
Example with and without a default value:
// No default value defined - returns false if not set.
$show_title = get_theme_mod( 'show_title' );

// Default value set to true - returns true if not set.
$show_title = get_theme_mod( 'show_title', true );

So If I am into color pallete I will wrte it like this →
border: 1px solid <?php echo get_theme_mod('themename_themecolor_primary', '#DCDCDCD'); ?>;

Exactly 👍
Though it would be better with some sanitization as well...
Themes are required to sanitize everything on output - especially if they are to be submitted on wordpress.org.
So your above code would become
<?php $themename_themecolor_primary = get_theme_mod( themename_themecolor_primary, '#DCDCDC' ); ?>
border: 1px solid <?php echo esc_attr( $themename_themecolor_primary ); ?>;

I think we can also do it like this →
border: 1px solid <?php echo esc_attr( get_theme_mod( themename_themecolor_primary, '#DCDCDC' ); ?>;

Sure, it's the same thing.
I just wrote it in 2 separate lines because it's easier to read and I saw
the theme_mod was the primary colour so I assume it's used multiple times -
in which case it's useful to have it as a variable that you can reuse and
avoid the extra get_theme_mod calls :)
On Tue, 14 Nov 2017, 14:07 fastmarketo<EMAIL_ADDRESS>wrote:

I think we can also do it like this →
border: 1px solid ;
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub
https://github.com/aristath/kirki/issues/1630#issuecomment-344239380,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAj7kIvubg5G-NK2v78BsBfkDm6MTV1dks5s2YKIgaJpZM4Qc3k3
.

Yes, You are right. It is used 13 times. Thanks for the help.

I have one last question from this thread →
<?php if ( true == get_theme_mod( 'newsletter_hp', true ) ) { ?>
I think we do not need to use → esc_attr here, because we are not echoing anything. Right?

correct 👍


thread '' panicked at 'cannot find str.zig. Check the source code in find_zig_str_path()  .. in nix-darwin nixos nix

Hello
-------------- MacOS (Intel nix-darwin) : https://github.com/roc-lang/roc/releases/download/nightly/roc_nightly-macos_x86_64-2023-03-21-ceacc17.tar.gz
zig installed at nix-darwin
The compiled NixOS is the same as well. macOS has been tested on the M2, and Zig was installed in the same way on all of them.
Thanks.

roc run platform-switching/rocLovesZig.roc

🔨 Rebuilding platform...
An internal compiler expectation was broken.
This is definitely a compiler bug.
Please file an issue here: https://github.com/roc-lang/roc/issues/new/choose
thread '' panicked at 'cannot find str.zig. Check the source code in find_zig_str_path() to show all the paths I tried.', crates/compiler/build/src/link.rs:90:5
note: run with RUST_BACKTRACE=1 environment variable to display a backtrace
thread 'main' panicked at 'Failed to (re)build platform.: Any { .. }', crates/compiler/build/src/program.rs:903:46

Where are you running the roc executable from? Is it still within the same folder structure as came from the archive?

I think you may need to copy over the crates folder included in the nightly archive to your project folder and run roc from that folder. If you let me know if that works for you, I will improve the error message.

Thank you for letting me know. I haven't tried it yet because of my poor health, but I will let you know when I do. I hope that this language will be fully developed and become my next primary language.

❯ ./roc examples/platform-switching/rocLovesZig.roc
🔨 Rebuilding platform...
An internal compiler expectation was broken.
This is definitely a compiler bug.
Please file an issue here: https://github.com/roc-lang/roc/issues/new/choose
thread '' panicked at 'Error:
Failed to rebuild host.zig:
The executed command was:
zig build-obj examples/platform-switching/zig-platform/host.zig -femit-bin=examples/platform-switching/zig-platform/macos-x86_64.o --pkg-begin str crates/compiler/builtins/bitcode/src/str.zig --pkg-end --pkg-begin compiler_rt /nix/store/pghlwfnd501069652sgf9sxrbxxvc8kf-zig-0.10.1/lib/zig/std/special/compiler_rt.zig --pkg-end --library c
stderr of that command:
error: Failed to add package at path /nix/store/pghlwfnd501069652sgf9sxrbxxvc8kf-zig-0.10.1/lib/zig/std/special/compiler_rt.zig: FileNotFound
', crates/compiler/build/src/link.rs:1496:21
note: run with RUST_BACKTRACE=1 environment variable to display a backtrace
thread 'main' panicked at 'Failed to (re)build platform.: Any { .. }', crates/compiler/build/src/program.rs:893:46

Oh yeah, we're still on zig 0.9.1. We did make progress on upgrading to zig 10, I'll ask around where we are on that.
I'll see if we can improve the error message for zig version mismatches.

"The Git main version compiles well on nixos. (It also works well with the same Zig version 0.10.1 there) However, on MacOS Intel/m2 with the same version, it doesn't work. But on Mac, when I try to compile the main source, I can't build due to a segment error, so I use binaries on Mac."

I have some trouble following what went wrong, can you make issues for the errors you encountered along with the command and the operating system that was used?
If you are using macos 13 you may encounter problems due to a bug in zig 0.9.1, although as long as you're not building zig or wasm platforms you will likely not encounter this problem.
By the way, once this pull request is done we will be able to complete the upgrade to zig 10 and officially support it.
If you want to try out interop with other languages, these examples will be helpful:

python
java (to connect with clojure)

For some questions it can be easier to talk with us on zulip chat, you're always welcome there :)

I have not set up the flake to install roc yet, but using the default.nix with the command nix-build should work on NixOS and linux in general although it is not thoroughly tested. default.nix has dependencies for macos as well, but nix-build is not tested on macos CI. I'll make a note to add macos tests for default.nix.

I manage computers with an entire mono setup. Since it's all the same configuration, I'm hesitant to share the whole setup, but it's nothing extraordinary, and I am a beginner with nix-shell and coding in general. I haven't finished reading all the roc documentation yet. I tend to work slowly, adjusting everything bit by bit... I was inspired by your flake.nix the day before yesterday and worked on the roc, and today I incorporated tauri and other rust GUIs into nix. (I'm a nix-shell beginner). When I initially tried to incorporate roc into the whole setup, I encountered a file conflict with the previously added poetry2nix. I had to force the loading of the default.nix for all but macOS, and then proceeded with a source build installation, but failed cause collison. I wish there were no conflicts with poetry2nix when force accessing the default.nix from the inputs and building from source on macOS.
Either I should give up on Roc or poetry2nix, or take them out of the mono setup and manage their profiles separately... Since I've been working on the setup for a long time, I'm leaning towards just waiting. Don't worry too much about my issue and focus on what you were doing. I'm a beginner, and I don't participate in English chats because I can't speak English. If I were to elaborate more on this topic... Personally, I think some people like me adjust their entire configuration.nix or mono flake.nix, but it's not right for all individual project developers to match their nix to people like me who set up the entire setup. It seems like a good idea to match the Nix build CI, but I believe it's best done together with the nixpkgs maintainers. (Anyway, my personal goal is a complete nix setup, but it's a headache to change all kinds of buttons because of constant changes. Also, I rely on the mono setup because I can't trust my memory). If you think about Nix setup in an extremely negative way, you can see examples like the popular ChatGPT these days. The model seems to be a rigid file in the Nix style, but it can't be as flexible and fast as other distributions like a program in the opposite style of Nix... It's possible to avoid mono, but I'm thinking of it as nix-shell (development mode) to keep the simple setup and prevent the hard disk from increasing. Anyway, if AI (like ChatGPT and other generative algorithm tools) constantly emits changing data, Nix is the opposite, constantly fixing Nix coding... Haha. In fact, the reason I started working on Roc since last week is that Clojure was a company-approved language, and I often wished Nix was a general-purpose program rather than a DSL while using Nix. I thought it would be great if there was such a language. About a week ago? I was surprised when I saw the Roc code import side, thinking it's a Nix-like language, so I'm still holding onto it (I have to jump from the basics;;; I'm a slow learner because I'm ambitious). Anyway, I'm not sure if it's just my misconception that the first impression of the language is similar to Nix, but I hope Roc language is an architect blueprint-style language similar to Nix (especially since you can develop a GUI). Anyway, it's amazing that you can mix this language and that language, even Rust and Clojure. Coding will be really fun. Fly high~ fly Roc.

I am having a very similar issue, so I might as well mention it here. Whenever I try and run one of the examples using a zig-based platform I get this error on NixOS
roc run tui.roc
🔨 Rebuilding platform...
An internal compiler expectation was broken.
This is definitely a compiler bug.
Please file an issue here: https://github.com/roc-lang/roc/issues/new/choose
thread '<unnamed>' panicked at 'cannot find `glue.zig`. Check the source code in find_zig_glue_path() to show all the paths I tried.', crates/compiler/build/src/link.rs:116:5
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
thread 'main' panicked at 'Failed to (re)build platform.: Any { .. }', crates/compiler/build/src/program.rs:943:46

using nix-shell I tried both zig version 0.9.1 and the latest 0.10.1 with the same result.

Yeah, same issue in a different form due to code updates. Is your roc built from source or from the nightly binary? Also, did you more the roc binary to a different folder, if so, did you move the zig libraries with it?

@bhansconnect could we have a workaround using roc glue where the spec provides a copy of the builtins in the glue directory that zig platform authors can keep and refer to locally? I assume the issue is that these zig platforms are referring to the roc builtins, and in future these will be provided by glue right? So maybe as a workaround we can do that. Downside I guess is that if major changes are made to roc builtins then the ZicSpec.roc glue file will also need to be updated. What do you think?

Or is this something that the roc cli needs to know so that it can build a zig platform from source? I guess the design is that platform authors would build these for different architectures and provides prebuilt libraries. Sorry if this just confuses this issue thread.

We could make a temporary zig glue that essentially copies these files into a zig platform. That would solve the problem. That said, I would much prefer to make a minimal, but proper zig glue to avoid the dependency. It also would make the structures better for platforms. The builtin versions are fine for builtins but honestly not always that good for platforms.
But yeah, simplest solution is zig glue that directly imports the builtin files and then just dumps them all to files. That glue would need to be run from the roc directory, but once glue was generated for a platform, it would be free to be built anywhere.

As a note, another totally reasonable solution is just to stop allowing zig platforms to depend on builtins. Then in each platform just copy the minimal amount of code to get the platform working. In most cases, I bet this is essentially the definition of RocStr with a little bit of extra changes. So manual glue, but extremely minimal. I might push a PR to do that.

Leaving aside the Zig error, I cannot install Roc using 'nix profile install github:roc-lang/roc' on my Mac with an Intel processor. It has only worked on NixOS and Mac M2 since I first wrote this post. (Currently, even my Zig-related tests are not running)
nixos
 ~/roc (main) [1]> roc examples/platform-switching/rocLovesZig.roc
🔨 Rebuilding platform...
An internal compiler expectation was broken.
This is definitely a compiler bug.
Please file an issue here: https://github.com/roc-lang/roc/issues/new/choose
thread '<unnamed>' panicked at 'cannot find `glue.zig`. Check the source code in find_zig_glue_path() to show all the paths I tried.', crates/compiler/build/src/link.rs:116:5
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
thread 'main' panicked at 'Failed to (re)build platform.: Any { .. }', crates/compiler/build/src/program.rs:943:46

Mac m2
 ~/roc   main  roc examples/platform-switching/rocLovesZig.roc
🔨 Rebuilding platform...
An internal compiler expectation was broken.
This is definitely a compiler bug.
Please file an issue here: https://github.com/roc-lang/roc/issues/new/choose
thread '<unnamed>' panicked at 'Error:
    Failed to rebuild host.zig:
        The executed command was:
            zig build-obj examples/platform-switching/zig-platform/host.zig -femit-bin=examples/platform-switching/zig-platform/macos-arm64.o --pkg-begin str crates/compiler/builtins/bitcode/src/str.zig --pkg-end --pkg-begin compiler_rt /nix/store/bchnd795hxv6myjw5ambpnp116n6bi5i-zig-0.9.1/lib/zig/std/special/compiler_rt.zig --pkg-end --library c
        stderr of that command:
            ./examples/platform-switching/zig-platform/host.zig:3:13: error: unable to find 'glue'
const str = @import("glue").str;
            ^
', crates/compiler/build/src/link.rs:1496:21
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
thread 'main' panicked at 'Failed to (re)build platform.: Any { .. }', crates/compiler/build/src/program.rs:893:46

I am also testing it on Synology NAS with both Intel and ARM processors, but since Nix flake is not supported on those two NAS, I cannot install Roc using nix profile on them. I have given up on that option.
What I hope for in the future is for Roc to be integrated into nixpkgs, making it easy to install using configuration.nix (whether using flake.nix or config.nix) without the need for nix profile or nix-shell.

I hope this project succeeds in eliminating the language barrier between corporate developers and open-source developers, bringing about a more unified world.

This issue is becoming a bit chaotic, I'm going to split this up.

For the "cannot find glue.zig" issue: #5357

For the "I cannot install Roc using 'nix profile install github:roc-lang/roc' on my Mac with an Intel processor" issue: #5358

For "Running Roc on original NixOS (not WSL) results in a segment fault error.": issue #5359

To "release roc as a nix package": issue #5360

To "support building with flake so that a nix shell is no longer necessary": issue #5361

Please continue the conversation in these new issues.


BIG-IQ AS3 response always shows "success"

Environment

Application Services Version:
BIG-IP Version: 14.1
BIG-IQ V: 7

Summary
When sending a declaration to BIG-IQ the response always comes back as "success" even if there was no change. Behavior on BIG-IP will show "no change" allowing the user to know if action was taken. This is especially useful in integrations that expect idempotency and report based on changes.
Steps To Reproduce
Steps to reproduce the behavior:

Send any app declaration to BIG-IQ

Send the same declaration again

View response code

Observe the following error response:
Always shows "success" for given tenant

Expected Behavior
Same behavior as direct to BIG-IP with a status of "no change"
Actual Behavior
Always shows "success" for given tenant

Thank you for reporting this issue. It is in our internal product backlog as AUTOTOOL-457.

If you are still looking for a fix, please reach out to us at<EMAIL_ADDRESS>


nix: move perl-bindings inside common function

Motivation for this change
It looks like originally not all Nix packages had perl bindings, but now that they do, it seems pretty redundant to add them seperately for each package.
Things done

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

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

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

Success on aarch64-linux (full log)
Attempted: nix
Partial log (click to expand)
copying path '/nix/store/q5da9r398qf94519wabwnrgchxi2mi5h-busybox-1.29.3' from 'https://cache.nixos.org'...
copying path '/nix/store/fabkavnyvhky88a2slh8fab97099ahdr-nix-2.1.3-man' from 'https://cache.nixos.org'...
copying path '/nix/store/x5m2da3g3x2x7l6c8gsxna1910jjzy7i-brotli-1.0.7-lib' from 'https://cache.nixos.org'...
copying path '/nix/store/wn9jhf5wkx8xnsn5f2pb5qx7hfd2a08g-libatomic_ops-7.6.6' from 'https://cache.nixos.org'...
copying path '/nix/store/95v4dk3xbbnj3amhrblviwl9hahlz7mz-aws-sdk-cpp-1.6.20' from 'https://cache.nixos.org'...
copying path '/nix/store/j4f0vl0dvii119wh50pyrxiv2hbbrng8-curl-7.59.0' from 'https://cache.nixos.org'...
copying path '/nix/store/hlnmgwbnjfvgprbzh0a58vcqzlh7mr8b-libsodium-1.0.16' from 'https://cache.nixos.org'...
copying path '/nix/store/pyqfm4dzkgx3andxqi3y6wl6r34k6b9p-boehm-gc-7.6.8' from 'https://cache.nixos.org'...
copying path '/nix/store/6vyk8s4f90z3crghqq1xd2kpgykcgm4g-nix-2.1.3' from 'https://cache.nixos.org'...
/nix/store/6vyk8s4f90z3crghqq1xd2kpgykcgm4g-nix-2.1.3

Success on x86_64-linux (full log)
Attempted: nix
Partial log (click to expand)
/nix/store/55xkmqns51sw7nrgykp5vnz36w4fr3cw-nix-2.1.3

This seems to break the perl bindings in Nix 1 which I noticed while testing the Hydra bump in #55101 with Nix1.
I'll probably push a fix onto the hydra-update branch for this before updating.


v0.1.3

Add support for behaviours in probability notation
Export active set acceleration for quadratic functions to FrankWolfe.jl (#466 and #474)
Export symmetry management to FrankWolfe.jl (#456 and #477)

@JuliaRegistrator register

Comments on pull requests will not trigger Registrator, as it is disabled. Please try commenting on a commit or issue.

Comments on pull requests will not trigger Registrator, as it is disabled. Please try commenting on a commit or issue.


Missing "_$AppDatabase.connect(DatabaseConnection c) : super.connect(c);" in _$AppDatabase

Hi there,
In my previous app, I was using the following moor dependencies:
  moor: ^3.3.1
  moor_ffi: ^0.5.0

now, in my new app, I decided to move to the most recent config e.g.:
  moor: ^3.3.1
  sqlite3_flutter_libs: ^0.2.0

Then I decided to generate the code with flutter pub run build_runner build - at this point, I had to add analyzer: 0.39.14 to dev_dependencies due to #777
After a successful generation however, I have one error left:
AppDatabase.connect(DatabaseConnection connection) : super.connect(connection);

error: The class '_$AppDatabase' doesn't have a constructor named 'connect'. (undefined_constructor_in_initializer at [pet_diary] lib\local_data_sources\app_database.dart:76)

And indeed, when I had a look at the generated _$AppDatabase class in app_database.g.dart file, the constructor is missing, unlike what I have got in my previous app app_database.g.dart file.

The connect constructor is only generated when enabling the generate_connect_constructor build option. Can you make sure that you enabled that?

Yep, that's right. I missed to transfer this part of the config. Thanks, @simolus3! Closing the issue.


add support for filtered informer in secret reconciler

Changes

to allow for using a filtered informer with the secret reconciler

to be used by  https://github.com/knative-sandbox/control-protocol/pull/225

/retest

/close


Version 3.0.1

Modified the #get(ids) function

The function will now return all available data from the packaged functions including aggregated results.

Handling Timestamp formats and coercing into Unix format

Github returns a published timestamp in the Date Time String format, this is now checked for by a Regex and will be parsed appropriately
Polymart returns a Unix String, this is checked for by a Regex and will be parsed appropriately.

Changed the Testing Suite to be by the marketplace rather than by the method.

Updated package.json to register as version 3.0.1 as well! This is now ready for review.


Multiple bugs from using str.split(sub)[1] to remove substring from strings

Original Issue
zip file from GET /__api__/appzip is corrupted when process.cwd() is a substring of some file's relative filepath
PhoneGap CLI, node & npm versions
phonegap 6.5.2
node 6.11.0
npm 3.10.10
Expected Behaviour
zip file received from GET /__api__/appzip should be in correct format
Actual Behaviour
Files written with wrong name within the zip leading to corrupted appzip file
Steps to Reproduce
Put your project in /app (like Heroku does)
process.cwd() === '/app'
Make a file beginning with app, e.g. app.js or app.css
When zipping file /app/www/js/app.js,
the code at https://github.com/phonegap/connect-phonegap/blob/f7c661e/lib/middleware/zip.js#L72 will generate a relative link of /www/js instead of /www/js/app.js, corrupting the zip file
Code that causes the problem
var output = pathWithSymlinks(filename).split(process.cwd())[1];
Error messages
$ unzip appzip
...
checkdir error:  www/js exists but is not directory
                 unable to process www/js/otherJsFilesInTheSameFolder.js.

Note
This code exists in multiple places within the code base.

Hi @NgoKimPhu
Thanks for these prs! I'm working through some other stuff at the moment but I'll try to merge them next week.

Thanks @timkim. At your own pace

Thanks for the prs!


Plex Nas smb mount failed

Hi,
After the last update my smb mount don’t work anymore !
Here is the LOG:
0 [16:31:54] INFO: ... //<IP_ADDRESS>/FiLMS-4K-1080p successfully mounted to /mnt/FiLMS-4K-1080p with options ,vers=1.0,uid=0,gid=0,iocharset=utf8,domain=WORKGROUP [16:31:54] FATAL: Error, unable to mount //<IP_ADDRESS>/Documentaires to /mnt/Documentaires with username *******, *******. Please check your remote share path, username, password, domain, try putting 0 in UID and GID [16:31:54] FATAL: Here is some debugging info : 	Sharename       Type      Comment 	---------       ----      ------- 	3D - Models     Disk      media-center's 3D - Models in WD My Passport 25E2 	Cameras         Disk      media-center's Cameras in WD My Passport 25E2 	Documentaires   Disk      media-center's Documentaires in WD My Passport 25E2 	FiLMS-4K-1080p  Disk      media-center's FiLMS-4K-1080p in WD My Passport 25E2 	FiLMS-Animations Disk      media-center's FiLMS-Animations in WD My Passport 25E2 	FiLMS-QS        Disk      media-center's FiLMS-QS in WD My Passport 25E2 	FiLMS-SAGA      Disk      media-center's FiLMS-SAGA in WD My Passport 25E2 	IPTV            Disk      media-center's IPTV in WD My Passport 25E2 	Music           Disk      media-center's Music in WD My Passport 25E2 	Photos-Videos   Disk      media-center's Photos-Videos in WD My Passport 25E2 	Series-HD       Disk      media-center's Series-HD in WD My Passport 25E2 	Series-QS       Disk      media-center's Series-QS in WD My Passport 25E2 	Spectacles      Disk      media-center's Spectacles in WD My Passport 25E2 	WD-SOFT         Disk      media-center's WD-SOFT in WD My Passport 25E2 	YICAM           Disk      media-center's YICAM in WD My Passport 25E2 	IPC$            IPC       IPC Service (GT-AX11000)

It’s ok 👍
Thanks 🙏


Request credentials for an os-climate bucket

Requesting credentials for github user: helena-intel
Requesting credentials for the bucket: redhat-osc-physical-landing-647521352890
Request checklist:

[ ] User can establish connection with the bucket
[ ] User can read files from the bucket
[ ] User can write files to the bucket

@helena-intel  I have sent you a download link and password (separately) to get physical landing s3 creds.
Let me know if you can verify the checklist above when you get them.


CC-2923: SSM command for executing 'yum update'.

CC-2923: SSM command for executing 'yum update'.

@mmgovuk Terraform plan evaluation detected changes to resources that require approval from a member of @ministryofjustice/modernisation-platform - please contact #ask-modernisation-platform for assistance
Guidance on approving these PRs is available at https://user-guide.modernisation-platform.service.justice.gov.uk/runbooks/reviewing-mp-environments-prs.html#process-for-approving-prs

@mmgovuk Terraform plan evaluation detected changes to resources that require approval from a member of @ministryofjustice/modernisation-platform - please contact #ask-modernisation-platform for assistance
Guidance on approving these PRs is available at https://user-guide.modernisation-platform.service.justice.gov.uk/runbooks/reviewing-mp-environments-prs.html#process-for-approving-prs

@mmgovuk Terraform plan evaluation detected changes to resources that require approval from a member of @ministryofjustice/modernisation-platform - please contact #ask-modernisation-platform for assistance
Guidance on approving these PRs is available at https://user-guide.modernisation-platform.service.justice.gov.uk/runbooks/reviewing-mp-environments-prs.html#process-for-approving-prs

@mmgovuk Terraform plan evaluation detected changes to resources that require approval from a member of @ministryofjustice/modernisation-platform - please contact #ask-modernisation-platform for assistance
Guidance on approving these PRs is available at https://user-guide.modernisation-platform.service.justice.gov.uk/runbooks/reviewing-mp-environments-prs.html#process-for-approving-prs


Importing and exporting from the same module with shared types

I suspect this won't generally be possible until #292 is resolved, but worth asking anyway: I have a Rust guest and a Rust/wasmtime host. I'd like to import functionality from the host in the guest (functions to interact with the host etc), but I'd like to export a function from the guest using wit-bindgen at the same time.
As a more concrete example:
Shared:
record entity-id {
    namespace: u8,
    id: u64,
    gen: s32,
}

record vec3 {
    x: float32,
    y: float32,
    z: float32,
}

record event-player-spawn-data {
    id: entity-id,
}

variant event {
    player-spawn(event-player-spawn-data),
}

Host export/Guest import:
entity-spawn: func(object-ref: string, position: vec3) -> option<entity-id>

Guest export/Host import:
runtime-exec: func(evt: event)

runtime-exec does some work in the guest with the passed in event.
Right now, I'm using a hack where I assume memory layout and copy a repr-C version of the event that's available to both the host and the guest into the global memory of the guest. I'd much rather prefer passing it in with wit-bindgen's machinery so that I don't have to share the type between the boundary manually and avoid the general dodginess of memory manipulation.
Given that #292 restricts me to a single .wit file presently, is there a way to invert the direction of a binding for a single binding (e.g. all of the above bindings are in the same file, but runtime-exec is in the opposite direction of the rest of the bindings)?

I think that this is a duplicate of https://github.com/bytecodealliance/wit-bindgen/issues/266 (importing/exporting things at the same time) so I'm going to close this in favor of that.


Update Docs with new Intune Endpoint Security > Attack Surface Reduction > Device Control UX

I have noticed that Device Control UI has changed recently in Intune, to include settings described in this article which is great!
An update of this article, keeping this for customers that eventually might use a third-party MDM provider would be beneficial, simplifying their journey on Device Control while using Microsoft Defender for Endpoint.
Associated resources to this change like Reusable Settings refers to this article, which may cause confusion during testing or adoption.

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

ID: 19b5fda8-c875-aac3-385d-43c88feed731
Version Independent ID: 19b5fda8-c875-aac3-385d-43c88feed731
Content: Deploy and manage Removable Storage Access Control using Intune
Content Source: microsoft-365/security/defender-endpoint/deploy-manage-removable-storage-intune.md
Service: microsoft-365-security
Sub-service: mde
GitHub Login: @Dansimp
Microsoft Alias: dansimp

Mene payment Kiya 550 fir bhi app open nahi huaa

@msbemba Thank you very much for the contribution and updating the documentation with PR. @davi-cruz Hope this update is helpful for you. Thanks for taking out some time to open the issue. Appreciate and encourage you to do the same in future also.

Is it possible to update the screenshots reflecting the actual cases ? :)
Would be very helpfull, in my option its a bit confusing...


feat: .no-padding class (and others) needed to remove default padding

Type: feat
Platform: all
Problem: A lot of classes/directives/elements have a default padding in Ionic. Ionic also provides classes to add padding (-left/-top/-bottom/-right) to those that don't have a default padding. (It seems you guys really like your padding!)
Solution: because I wanted an easy way to remove this padding I created the class .no-padding
.no-padding {
  padding: 0px; }

I also created some extra classes to remove and set padding strictly to top, bottom, left or right.
.padding-top-only, .padding-vertical-only {
  padding-top: 10px;
  padding-right: 0px;
  padding-bottom: 0px;
  padding-left: 0px; }

.padding-right-only, .padding-horizontal-only {
  padding-top: 0px;
  padding-right: 10px;
  padding-bottom: 0px;
  padding-left: 0px; }

.padding-bottom-only, .padding-vertical-only {
  padding-top: 0px;
  padding-right: 0px;
  padding-bottom: 10px;
  padding-left: 0px; }

.padding-left-only, .padding-horizontal-only {
  padding-top: 0px;
  padding-right: 0px;
  padding-bottom: 0px;
  padding-left: 10px; }

And I went a bit all out with it and created combinations of these:
.padding-left-and-right-only {
  padding: 0px 10px; }

.padding-top-and-bottom-only {
  padding: 10px 0px; }

I find this very useful and if you do too, perhaps you can add it (or something like it) in a next update?

Greetings @MatthiasDebaere!
My sensors indicate that you need to update your issue through our custom issue form. We are now requiring all issues to be submitted this way, to ensure that we have all of the information necessary to fix them as quickly as possible.
Click Here To Update Your Issue
I will have no choice but to close this issue if it is not resubmitted through the form. Please fill out the rest of the form, so that I may use my friendly robot powers to assist you.
Thank you!

Thanks for sharing :smile:
If you put together a PR for this, we could look over it and see if it is something we would consider.
Going to close this as this is not really an issue with the framework.


Define naming convention for Cairo contracts, and public vs internal functions

Consider this discussion: https://github.com/OpenZeppelin/cairo-contracts/discussions/34
Please define a naming convention for all our Cairo contracts, and public (also consider namespaces) vs internal functions.

Document the convention in /docs/contracts/code-style.md so future contributors are aware
Refactor the codebase to follow the convention

cc: @taco-paco
Last thing we talked about was being consistent with OpenZeppelin...

https://github.com/onlydustxyz/development-guidelines/blob/main/starknet/README.md

new resource:
https://github.com/milancermak/cairopractice/blob/master/2022-08-25-cairo-conventions/CairoConventions.md

More resources on this topic (namespaces): https://github.com/OpenZeppelin/cairo-contracts/discussions/267

More resources (OZ renaming account API): https://github.com/OpenZeppelin/cairo-contracts/pull/446/files

Related GH Issue: https://github.com/smartcontractkit/chainlink-starknet/issues/156


Update recommended-settings-for-eop-and-office365-atp.md

Adding links to ORCA.

@JohanFreelancer9 - kindly do the copy editor review for this PR. Thanks.

@andypunt  - please merge the commit on the copy/edit review done by JohanFreelancer9 or make the necessary changes on the PR following the suggestions made. Thank you.


Remove default value for APP_SECRET

Having a secret generated for you is fun until you use gitleaks. AFAIK the secret should be different for each hosting stage (prod, quality, test, dev, ...) so forcing one to generate a value for each stage would be a better approach. One could also ignore .env in gitleaks but eventually you are ignoring the most vulnerable file for leaked secrets

This breaks new shopware installation as app secret is required

@shyim I understand, that we cannot really merge it like this. Can you follow up on my thoughts though? Maybe I am not on the right track ^^'

I think this should be solved with docs 🤔


[Question] AsyncVectorEnv "set_attr" not working as expected

Question
I am trying to change the "goal" attribute of "FetchPickAndPlace-v2" (from gymnasium-robotics) using AsyncVectorEnv but it is not working as expected.
Code example:
envs = gym.vector.make('FetchPickAndPlace-v2', num_envs=2)
actions = [[0, 0, 0, 0], [0, 0, 0, 0]]
new_goals = [[1, 1, 1], [1, 1, 1]]

obs, _ = envs.reset()
print(obs['desired_goal'])
>>> [[1.28639574 0.69880261 0.42469975], [1.37864519 0.71064809 0.42469975]]

envs.set_attr('goal', new_goals)

if I check:
print(envs.get_attr('goal'))
>>> ([1, 1, 1], [1, 1, 1])

it correctly prints the newly assigned goals, but after a step, the "desired_goals" key of the obs (which is simply self.goal attribute from the env) does not show the updated goals and rewards are also not calculated for the new goals:
obs, rew, _, _, _ = envs.step(actions)
print(obs['desired_goal'])
>>> [[1.28639574 0.69880261 0.42469975], [1.37864519 0.71064809 0.42469975]]

Am I doing something wrong? How can I change instance attributes of vector environments?

OS: Ubuntu 20.04
Python 3.7
gymnasium 0.27.1
gymnasium_robotics 1.2.0

Ok, this is a really interesting problem
I can replicate this issue in the single agent case which is easier to understand
env = gym.make("FetchPickAndPlace-v2")
print(env.unwrapped)
action = np.array([0, 0, 0, 0])
new_goal = np.array([1, 1, 1])

obs, _ = env.reset()
print(f'{obs["desired_goal"]=}')

print(f'pre-set {env.goal=}')
env.goal = new_goal
print(f'post-set {env.goal=}')

obs, _, _, _, _ = env.step(action)
print(f'{obs["desired_goal"]=}')

The problem is that an environment created from make is actually wrapped by several wrappers
print(env)
>>> <TimeLimit<OrderEnforcing<PassiveEnvChecker<MujocoFetchPickAndPlaceEnv<FetchPickAndPlace-v2>>>>>

So when we do env.goal =  we are not actually set the variable on the "base" environment, in this case, fetch pick and place but on the time limit. You can see this with
print(f'{env.goal=}, {env.env.goal=}')
>>> env.goal=array([1, 1, 1]), env.env.goal=array([1.34614611, 0.82321155, 0.42469975])

Why this is happening ... Im not sure. I think this is something unique in fetch pick and place but Im not sure.
@RedTachyon or @rodrigodelazcano Any ideas?

This seems like a fairly major bug, Im not sure how no idea has caught this before.
Using this simple testing example
env = gym.make("CartPole-v1")
print(env)
env.reset()
print(env.gravity)
# 9.8
env.gravity = 1
print(env.gravity, env.env.gravity, env.unwrapped.gravity)
# 1 1 1

@pseudo-rnd-thoughts thanks for the quick response and explanation. I've tried the proposed fix but I get:
File "/home/fabioubu/miniconda3/envs/master/lib/python3.7/site-packages/gymnasium/core.py" line 272, in __getattr__
    raise AttributeError(f"accessing private attribute '{name}' is prohibited")
AttributeError: accessing private attribute '_has_reset' is prohibited

I can bypass it by removing the private attribute check in Wrapper.__getattr__ but I guess that's not the way to do it...

The proposed implementation is wrong. I realised before sleeping that the issue is much more complex to solve than I originally thought.
There are several cases that we need to consider for this

The variable is already defined in the wrapper, updated it
"env" is not defined in the wrapper, assign the variable in the wrapper
the variable is defined in one of the sub-environments env, assigned to the env with the variable defined
otherwise, assign in the wrapper

The problem is that in 3 we need to check the environment (and if that is a wrapper, its sub-environment, etc) before we run 4.

Solved in https://github.com/Farama-Foundation/Gymnasium/pull/681


Fix decorator usage in tests

Jenkins, test this please

Jenkins CI test (for commit 85ae576a964a1e11cb253be2d8f860a3c1e56693, target branch master) failed with status FAILURE.

Fixed test failures.
PTAL

Jenkins, test this please

Jenkins CI test (for commit 42f03f2d5d8103964097a9bb9f2e0901b495474d, target branch master) succeeded!

@emcastillo Backport to v6?

I am trying it, but the backport script breaks when pushing the changes ...
I am looking into it now


The Fremennik Trials - Manni's task

After lighting the strange object and putting it inside the pipe the quest helper doesn't progress to the next step which is to take the keg and put the low alcohol into the keg to trigger the explosion. Instead it prompts you to get another beer and return to the council worker because you no longer have a strange object in your inventory.

A few of the tasks don't seem to automatically resolve and end up putting you into a loop. Sigli's task doesn't wrap up and needs to manually be checked off. Same with Sigmund's task which prompts you to talk to Askeladden again.


Where is the "/res/icc.cmodel"?

I try to compile IC3 with newest version of Soot and FlowDroid. But lots of files are missing, such as the icc.cmodel. In you release file ic3-full.jar these files exits but I can't find these files in github.

Hi,
What commands did you use to perform the compilation? File icc.cmodel should be automatically generated by Maven from the files in src/main/resources/model.
Best,
Damien

Thank you for your instructing. I have solved the problem using Maven Build. Serval days ago, I just import the project to Intelij IDEA and remove the Maven files and replace some of the dependencies, so I failed to generate the model and "edu.psu.cse.siis.coal.lang" package. This time I complied successfully by importing he maven projects and using maven build commands.


Access React component programmatically

Any way to access a React component programmatically?
I've tried to both pass a ref to the Box component and get the HTML element with the 'traditional' document.getElementById('box') but neither of these solutions seems to work.
Any suggestion?
const App = ({ userContext, environment }: ExtensionContextValue) => {
  const ref = React.useRef();

  React.useEffect(() => {
    console.log(ref.current);
  }, [ref]);

  React.useLayoutEffect(() => {
    console.log(document.getElementById("box"));
  }, [ref]);

  return (
    <ContextView title="BrandBird" brandColor="#1DA1F1">
      <Box id="box" ref={ref}>
        Hi
      </Box>
    </ContextView>
  );
};

Hi @dimitrisraptis96, for security purposes, Stripe Apps do not have direct access to the DOM, so refs and document won't work. You can read more about the limitations of our sandbox here: https://stripe.com/docs/stripe-apps/how-ui-extensions-work#sandbox-limitations


doppler: 3.15.0 -> 3.16.0

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://github.com/dopplerhq/cli/releases.
meta.description for doppler is: "The official CLI for interacting with your Doppler Enclave secrets and configuation"
meta.homepage for doppler is: "https://doppler.com"
meta.changelog for doppler is: ""
Updates performed

Golang update

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact

Checks done (click to expand)

built on NixOS

The tests defined in passthru.tests, if any, passed

0 of 0 passed binary check by having a zero exit code.

0 of 0 passed binary check by having the new version present in output.

found 3.16.0 with grep in /nix/store/chhkf9qwjy3dv19f1d6q78sp1kg1nrhs-doppler-3.16.0

directory tree listing: https://gist.github.com/49b40096969d4222d67ee04883d55228

du listing: https://gist.github.com/f9aee53ae3c434894b03ff58175115be

Rebuild report (if merged into master) (click to expand)

4 total rebuild path(s)

1 package rebuild(s)

1 x86_64-linux rebuild(s)
1 i686-linux rebuild(s)
1 x86_64-darwin rebuild(s)
1 aarch64-linux rebuild(s)

First fifty rebuilds by attrpath
doppler

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/chhkf9qwjy3dv19f1d6q78sp1kg1nrhs-doppler-3.16.0 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A doppler https://github.com/r-ryantm/nixpkgs/archive/f3370e061b36483937256d238b38a46feb637bbb.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/chhkf9qwjy3dv19f1d6q78sp1kg1nrhs-doppler-3.16.0
ls -la /nix/store/chhkf9qwjy3dv19f1d6q78sp1kg1nrhs-doppler-3.16.0/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review 1

1 package built:

doppler

Maintainer pings
cc @lucperkins @kalbasit for testing.

Result of nixpkgs-review pr 102332 run on x86_64-darwin 1

1 package built:

doppler


10127 custom baselayer

This closes #10127.

@javitonino , @matallo , could you CR this, please? It's currently deployed at ded06 in case that you want to take a look (specially @matallo , the Lord of the Basemaps :-) ).

👏 I'm not the proper guy to review the code, but tested several scenarios and looks awesome

Oh, forgot to mention. LGTM. Left a couple of comments, but nothing blocking.

@javitonino let's discuss the layer duplication design, as I also had some doubts, before merging.

@javitonino quick CR for latest changes before merging, please.

Last change seems clean. I added another comment just to be a little nitpicky, comply or ignore. Ship when :green_apple:

BOOM, thanks mates


Implement consistent hash-based algorithm

Spec: http://infinispan.org/docs/stable/user_guide/user_guide.html#request_header

hello,
I am applying for RGSOC
If I have any doubts regarding your project, can I clear them on this platform

Hi! Yes, of course, ask away if needed!


Server() returns requests.exceptions.ConnectionError using proxies

According to this https://github.com/oasis-open/cti-taxii-client/issues/51 issue,  proxies are exposed to Server and ApiRoot objects. I'm trying to feed data from limo and I am using a valid proxy server to connect. I also tried using the sample code provided as a solution to connect to limo, but it does not work.
However, when I try it with curl command, it works.

from taxii2client.v20 import Server

def get_collection_threat_intelligence():
    # request to taxii server
    api_user = "guest"
    api_password = "guest"
    taxii_domain = "https://limo.anomali.com/api/v1/taxii2/taxii/"
    proxy = 'http://x.x.x.x:80'
    proxies = {
        'http': proxy
    }

    server_discovery = Server(url=taxii_domain, proxies=proxies, user=api_user, password=api_password, verify=False)

    print(server_discovery.api_roots)
    api_root = server_discovery.api_roots[0]
    # get collections
    print(api_root.collections)
    data = []
    for collection in api_root.collections:
        if collection.can_read:
            temp = {
                'id': collection.id,
                'title': collection.title
            }
            data.append(temp)
    # return collections
    result = {
        'data': data
    }
    return result

if __name__ == "__main__":
    result = get_collection_threat_intelligence()

The following error occurs:
Traceback (most recent call last):
File "/usr/local/lib/python3.7/dist-packages/urllib3/connection.py", line 170, in _new_conn
(self._dns_host, self.port), self.timeout, **extra_kw
File "/usr/local/lib/python3.7/dist-packages/urllib3/util/connection.py", line 73, in create_connection
for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM):
File "/usr/lib/python3.7/socket.py", line 748, in getaddrinfo
for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno -3] Temporary failure in name resolution
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.7/dist-packages/urllib3/connectionpool.py", line 706, in urlopen
chunked=chunked,
File "/usr/local/lib/python3.7/dist-packages/urllib3/connectionpool.py", line 382, in _make_request
self._validate_conn(conn)
File "/usr/local/lib/python3.7/dist-packages/urllib3/connectionpool.py", line 1010, in _validate_conn
conn.connect()
File "/usr/local/lib/python3.7/dist-packages/urllib3/connection.py", line 353, in connect
conn = self._new_conn()
File "/usr/local/lib/python3.7/dist-packages/urllib3/connection.py", line 182, in _new_conn
self, "Failed to establish a new connection: %s" % e
urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPSConnection object at 0x7f41df1c3d50>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.7/dist-packages/requests/adapters.py", line 449, in send
timeout=timeout
File "/usr/local/lib/python3.7/dist-packages/urllib3/connectionpool.py", line 756, in urlopen
method, url, error=e, _pool=self, _stacktrace=sys.exc_info()[2]
File "/usr/local/lib/python3.7/dist-packages/urllib3/util/retry.py", line 573, in increment
raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='limo.anomali.com', port=443): Max retries exceeded with url: /api/v1/taxii2/taxii/ (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7f41df1c3d50>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution'))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "test.py", line 42, in
result = get_collection_threat_intelligence()
File "test.py", line 22, in get_collection_threat_intelligence
print(server_discovery.api_roots)
File "/usr/local/lib/python3.7/dist-packages/taxii2client/v20/init.py", line 709, in api_roots
self._ensure_loaded()
File "/usr/local/lib/python3.7/dist-packages/taxii2client/v20/init.py", line 725, in _ensure_loaded
self.refresh()
File "/usr/local/lib/python3.7/dist-packages/taxii2client/v20/init.py", line 760, in refresh
response = self.__raw = self._conn.get(self.url)
File "/usr/local/lib/python3.7/dist-packages/taxii2client/common.py", line 296, in get
resp = self.session.get(url, headers=merged_headers, params=params)
File "/usr/local/lib/python3.7/dist-packages/requests/sessions.py", line 555, in get
return self.request('GET', url, **kwargs)
File "/usr/local/lib/python3.7/dist-packages/requests/sessions.py", line 542, in request
resp = self.send(prep, **send_kwargs)
File "/usr/local/lib/python3.7/dist-packages/requests/sessions.py", line 655, in send
r = adapter.send(request, **kwargs)
File "/usr/local/lib/python3.7/dist-packages/requests/adapters.py", line 516, in send
raise ConnectionError(e, request=request)
Also, in the previous post the proxies are passed as follows:
proxies = {
'http': proxy,
'https': proxy
}
which throws requests.exceptions.SSLError: HTTPSConnectionPool

Hi @NikitaGautam,
I tried to recreate your issue in my own environment, but I was successfully able to connect to the TAXII server.
I noticed in the errors you posted, there's a connection refused error using HTTPS on port 443. This may be a clue to what's going on, as your proxy may be configured to expect one type of connection, but it is getting a different one.
You can try setting up your own TAXII server on your intranet and try to connect to that with your proxy to figure out where the error is coming from.

Closed for lack of discussion


Adds autocomplete functionality to vineyard-ctl

What do these changes do?
Adds autocomplete functionality to vineyard-ctl using the python library argcomplete.
Part of #291.

Nice job!