[Core Dev]: Dynamic binding and the External Repository.

The Standard COBOL External Repository
Standard COBOL's External Repository contains all information required for activating (calling/invoking) programs, functions, or methods and for checking conformance (Checking their signature, in case dynamic binding is required).
The information contained in the repository is:

The name of the source unit.
The type of the source unit (Whether it is a program, function, class, or an interface).
A description of its parameters (Their type declarations, whether they are optional or not, and if they are passed by value or by reference. Classes only: generics and inheritance).
A description of the returning data item (and its type declaration).
The exceptions that could be raised in the source unit.
The object properties and methods (Classes only: the previous items also applies to store its methods).
Extra information such as: if DECIMAL-POINT IS COMMA clause is specified, currency symbols, and locale information.
Also, "Any other information that the implementation requires".

The Standard requires us to "provide a mechanism that allows the user to specify whether to update the external repository when a compilation unit is compiled".
From this we can tell that the external repository works like a local manifest which contains all program, function, class, method and interface signatures that belong to a given project. It can also be used during runtime when the signature of a program can't be statically checked during compile time (Raises an exception if it fails to find the signature at runtime).
If updating the external repository is turned off by the user then any kind of runtime signature check will fail if the signature was not added to it before the user turned it off.
*> External repository is global to each project
*> It cannot contain duplicate or conflicting program, function and class names

           ------------- Project dependency signatures
           |
           ˅
External Repository  <------- User project signatures
           ˄
           |
           ------------- Extra library signatures

The requirement to allow the user to update the repository tells us that it either has to be a local manifest file (probably too slow), or a compile time source-generated data structure populated with all signatures from a project (Including dependencies), with a compiler option to not update it.
The problem with dynamic binding and the External Repository
There's a certain problem with storing all of this information in a single place, is that there's no way to store and return different delegate types from a single data structure that allows searching by a string value like a dictionary (I might be wrong about this).
I thought about storing the types themselves with System.Type, but that would require heavy use of reflection to get them back and call the procedure method from it.
// Dictionaries *have* to contain the type of delegate it will store
// But we can't store just a single *kind* of signature
var dict = new Dictionary<string, Func<ICOBOLType, ICOBOLType>>();

// Something like this would not be possible (I think):
var signatures = new Dictionary<string, Signature<type or void, any params...>>();

A source-generated static class with different fields or properties to store those might work, but only if it still allows lookup with an arbitrary user-defined string value without causing a compiler error (I'm not sure how exactly that would look like).
*> This is because COBOL allows getting a program pointer from a string:
set ptr-name to address of program str-var.

*> The value of str-var can't be statically checked during
*> compile time if it is obtained from user input:
accept str-var from standard-input.

*> The name of the program will be checked during runtime
*> and allows calling it afterwards, which will cause another
*> runtime check for its parameters and return types:
call ptr-name using ... returning ... .

Dynamic binding like this can't be done without reflection in C# as far as I know.
// This is exactly what we need, but it requires reflection:
Type.GetType("TypeName").GetMethod("MethodName");

Information about C# types and signatures might be available in the compiled assemblies or during compilation, but I'm not sure how to access those with Otterkit without using reflection (and how to use those during runtime to call methods).
We're trying to avoid the use of reflection in order to support NativeAOT, with both the compiler and the generated C# code. Which probably means that this will have to be source-generated, ideally without causing a C# compiler error or fatal runtime exception when the program or function is not found.
We might be able to do this with the Dynamic type, but we need to benchmark how much slower that would be and if it is compatible with NativeAOT. It might have a big performance impact if every program or function pointer has to use the dynamic type to hold their references.
If all else fails, we might have to look into emitting IL into a sort of custom assembly and try to bypass all C# checks, or use another "intermediate" language to hold these signatures and calls for us.
Community help and suggestions?
We'll leave this issue open for discussion and suggestions until we figure out the best way to implement and handle this functionality. We might need community help on this, from both the COBOL side and the C# side.

Hello!
I have written several years ago something that might tackle the challenge that you describe, when I implemented a multiple-dispatch mechanism for C# (more or less at the same time that dynamic came out and enabled multi-dispatch natively).
This was the basic strategy that I used:

A resolver class was written; its purpose was to return a weakly-typed delegate (all params as type object) that could be used to initiate the multiple-dispatch call with types only known at runtime.
The class receives a method name (provided as a string) as well as an array of types of each concrete parameter that will be passed to the returned delegate).
The class then assembles a strong 64-bit signature, based on the combination of GetHashValue() calls for every parameter's concrete type.
Using this strong signature as key, the class would check an internal cache, implemented as a Dictionary of delegates. If the delegate was found, it was returned immediately to the caller.
If not found, then Reflection was used to perform the method lookup.  Reflection does a perfect job of selecting the most specific method that will accept the parameters we intend to pass; however this is slow.
Once the method was found, an open delegate was created dynamically for it using the Expression API. This involves assembling programmatically an expression that would look as something like this if written in code:

    void M(object instance, params object[] arguments) => {
         // Typecast parameters to perform a static call to the adequate wrapped method
         ((CallingType)instance).Method((TParam0)arguments[0], (TParam1)arguments[1], ...);
     };

Basically, it is dynamically compiling a weakly-typed delegate (receiving all parameters as type object), that casts every parameter to its real type, and then invokes the real, strongly-typed method (the one that was resolved via Reflection).
7. The delegate is cached for future use.  Reflection is only used the very first time a certain combination of parameters is found. Then it is returned to the caller, so it can proceed to invoke the selected method via this delegate.
I've done benchmarking of this method, and it is around 15% faster than using dynamic to perform the multiple-dispatch, with the added flexibility of allowing the method lookup and binding via a string. However, both this method and dynamic are around 600x faster than calling Invoke() on the MethodInfo returned by Reflection!  (This was actually measured by John Skeet of Stack Overflow fame).
I have not published this source code anywhere; would you be interested if I make a gist out of it so you can play with it?   (I would paste it tomorrow as it is already midnight for me, but I found a tweet asking for suggestions to this challenge and it rang all bells inside my head)
;)

Improved formatting

Hello there, coming from this Twitter comment

We're trying to avoid the use of reflection in order to support NativeAOT, with both the compiler and the generated C# code.

Note that NativeAOT does actually support relatively well reflection (including method invoke) with some hints (see below). What it doesn't support is e.g loading dynamic IL executed at runtime or binding a type dynamically without telling NativeAOT that you want to keep this type and code around.
The main requirement you need for NativeAOT with reflection is make sure that types that you are going to access are visible to the compiler and that you are properly adding the attribute DynamicallyAccessedMembers to hint about this access, similar to this sample code:
// Compile with AOT: dotnet publish -c Release -r win-x64 -p:PublishAot=true
using System.Diagnostics.CodeAnalysis;
using System.Reflection;

namespace ConsoleApp1;

internal class Program
{
    private static readonly Dictionary<string, Type> MapNameToType = new();

    static void Main(string[] args)
    {
        // Make sure that Program is accessed explicitly
        RegisterType<Program>("Program");

        // Invoke the type and function by name
        Invoke(MapNameToType["Program"], "Print");
    }

    static void RegisterType<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.NonPublicMethods | DynamicallyAccessedMemberTypes.PublicMethods)] T>(string name)
    {
        RegisterType(name, typeof(T));
    }

    static void RegisterType(string name, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.NonPublicMethods | DynamicallyAccessedMemberTypes.PublicMethods)] Type type)
    {
        MapNameToType[name] = type;
    }

    static void Invoke([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.NonPublicMethods | DynamicallyAccessedMemberTypes.PublicMethods)] Type type, string name, params object[] args)
    {
        type.GetMethod(name, BindingFlags.NonPublic | BindingFlags.Static)!.Invoke(null, args);
    }

    static void Print()
    {
        Console.WriteLine("Hello, World!");
    }
}

I would avoid any other pseudo custom reflection that would require a lot more work for little benefits, maybe except performance, but even performance for reflection has been significantly improved in .NET 7.

It can also be used during runtime when the signature of a program can't be statically checked during compile time

I think this route should not be followed as the external repository is explicit for type checking - so you use it to actually statically check at compile time.
Also note that with the prototype declaration you can include those definitions directly in the source program (it kind of overrides the external repository for the current implementation - and if you would use whatever you specify to update the repository, then those should be used to update it, too).

Hey @GitMensch, in the example below where the program's name is obtained from user input, it can't be statically checked at compile time, right?
Because the value is not known to the compiler, it will have to check it during runtime after it receives the user's input.
The also standard defines an exception which is set exist if it can't find it during runtime: "If the runtime system cannot locate the program, the EC-PROGRAM-NOT-FOUND exception condition is set to exist and the value of the address-identifier is the predefined address NULL."
*> COBOL allows getting a program pointer from a string:
set ptr-name to address of program str-var.

*> The value of str-var can't be statically checked during
*> compile time if it is obtained from user input:
accept str-var from standard-input.

*> The name of the program will be checked during runtime
*> and allows calling it afterwards, which will cause another
*> runtime check for its parameters and return types:
call ptr-name using ... returning ... .

Because the value is not known to the compiler, it will have to check it during runtime after it receives the user's input.

yes, but not via repository

The standard also defines an exception which is set exist if it can't find it during runtime: "If the runtime system cannot locate the program, the EC-PROGRAM-NOT-FOUND exception condition is set to exist and the value of the address-identifier is the predefined address NULL."

That is the exception handling, which is runtime only - and this is just about the program not being there on the SET statement.
For the CALL it would be a different exception if the pointer is NULL and another different exception if the program was called but does not match the call signature.
To check the later the calling program must make the signature used available "somehow" (in the runtime directly, or in an attribute which can be accessed by the caller) and the called program must check it; in this case only if the programs are compiled with the appropriate runtime checks enabled!
To provide better type checking COBOL also allows "typed pointers" - only with these (not sure if there's a COBOL implementation that actually supports them...) a prototype check is done at compile time.

yes, but not via repository

Hmmmm, but that means we'd have to instantiate another data structure to register and hold each of these values, and they would ultimately lead to a signature from the repository anyways to check for the parameters so this could save a bit of memory in the end (probably?).
The Standard usually doesn't define anything related to the compilation process itself (Like lexing, parsing or codegen), so it would be odd for it to define a symbol table structure used only during compilation. Does the standard specify where the external repository can or can't be used?
This is not used if Otterkit can statically check and find the correct program at compile time, only if it can't statically check the value it will then attempt at runtime through the repository (which would already hold these values).

That is the exception handling, which is runtime only - and this is just about the program not being there on the SET statement.
For the CALL it would be a different exception if the pointer is NULL and another different exception if the program was called but does not match the call signature.

@GitMensch I might be a bit confused on how the standard is defining these, please let me know if I'm wrong.
That exception is from the address of program identifier which is not part of the SET statement. The identifier allows getting a program pointer from an alphanumeric data item, and if that data item's value is only obtained during runtime from user input then the compiler won't be able to statically check the program's name, because the data item is "empty" at compile-time.
If the address of program turns out to not be null after getting user input, we'd still have to check during runtime for the parameters and return item if the pointer is used in a CALL statement, which will set the EC-PROGRAM-ARG-MISMATCH to exist if it doesn't match what is defined in the signature for that program pointer. In Otterkit's case, the program pointer could hold a reference to a signature from the external repository (a Signature type to hold the reference, because C# doesn't allow raw method pointers).
This means that in certain cases there would be two runtime checks, one to find the program's name after getting an alphanumeric from standard-input and another to check for conformance with the parameters (if the pointer is used in a CALL). This is not needed if the value passed to the address of program identifier is static and known to the compiler during compile time.
Maybe I'm missing something? Please let me know.

To check the later the calling program must make the signature used available "somehow" (in the runtime directly, or in an attribute which can be accessed by the caller) and the called program must check it; in this case only if the programs are compiled with the appropriate runtime checks enabled!

Wait, do you mean if exception checking is enabled or is there any other kind of checks that the standard allows the user to enable?

To provide better type checking COBOL also allows "typed pointers" - only with these (not sure if there's a COBOL implementation that actually supports them...) a prototype check is done at compile time.

Otterkit will support typed pointers 😉, it's honestly an awesome feature. Makes it so much easier to statically check and maintain type safety even when using pointers.
C# calls those "nullable reference types", where a variable can only contain a reference to a specific type or null.

I've done benchmarking of this method, and it is around 15% faster than using dynamic to perform the multiple-dispatch, with the added flexibility of allowing the method lookup and binding via a string. However, both this method and dynamic are around 600x faster than calling Invoke() on the MethodInfo returned by Reflection! (This was actually measured by John Skeet of Stack Overflow fame).

Hey @sgorozco, would this still be faster in .NET 7 compared to @xoofx's reflection-based approach?

I have not published this source code anywhere; would you be interested if I make a gist out of it so you can play with it?

Sure, that would be great! We could then benchmark both approaches to check which one would perform better for Otterkit's purposes.
Does your source code have any specific licensing notice? Otterkit uses the Apache-2.0 license so we won't be able to include any GPL-license code or any code with a license incompatible with the Apache license.

Does the standard specify where the external repository can or can't be used?

Not that I remember, you are free to check for yourself :-)

This means that in certain cases there would be two runtime checks

yes

This is not needed if the value passed to the address of program identifier is static and known to the compiler during compile time

no, it still is needed:

you may still not be able to find it and then need to set the exception and the variable to NULL - if you don't have the program's address resolved because the program itself is included in the same compile unit (this is not related to the repositroy)
you still need to check for NULL on the call in any case - because the variable may be changed at runtime afterwards - and set an exception and possibly go into the ON EXCEPTION branch because of this
you still need to check for conformance even if you use a typed pointer on the caller's side because only the caller's side knows where it was called from and if the type actually matches

For the last point: remember that the CALLed program may not be what the repository says, either because the repository is outdated (for example was not updated or the caller was compiled before the callee was adjusted). You therefore nearly always have to check on the callee's side (at least if dynamic called = not statically linked in, when this can be indeed optimized out).
The standard has rules for conformance which apply to CALL and INVOKE, where the repository is used to:

potentially error during compile time because of mismatch
potentially setup the call correctly for BY VALUE (if the implementation needs that)

The standard has additional rules for conformance which apply to the callee (so what is happening if the program/function/method could be resolved).

I might be a bit confused on how the standard is defining these

The biggest thing to get confused with is the actual exception handling. There are several places where the standard says that an exception is set, but this doesn't also mean that this has any effect.
It always has an effect when there's an ON EXCEPTION, ON INVALID KEY and similar code, because these code parts have to be taken then.
Otherwise it is only available to the program if checking code is explicit enabled for this specific exception - by default all exception checks are defined to be turned off!
In most cases if there is an exception and you don't have checking for the specific exception enabled then "whatever happens, happens". A COMPUTE may raise an ON SIZE ERROR if a packed decimal value is all x'FF' or interpret that as zero or as all 9 or whatever, an implementation is even free to crash hard without any more information.
For many exceptions with no check enabled implementations will do something "useful" (and/or what other implementations do). For example many implementations just use the second half-byte for PIC 9 USAGE DISPLAY (recent GnuCOBOL does that) so that all of a low value, an EBCDIC SPACE, an ASCII SPACE an ASCII ZERO and an EBCDIC ZERO will be seen as "zero digit".
Back to the CALL example you'd likely reset the complete CALL related exceptions at the start of the actual CALL, then the appropriate exception in the runtime it if the runtime can't resolve the program [can be done inline for CALL ptr-var and ptr-var being NULL], then check in the calling program for "is any call related exception set" to decide which code path to take.
If no explicit check is coded and the runtime checks are not enabled then you'd even be free to just go on (ignore the call), but I don't know of any implementation that doesn't abort here.
So, if the program was resolved (= found, however you do that in your implementation) you can then get into that program and (if the parameter checking is enabled in both the caller and callee!) check for the matching signature, setting (other) call related exceptions to go back to the caller.
By default you would have zero runtime penalty for signature matching, because by default all runtime exceptions are disabled.
You could internally split a CALL to multiple functions on the callee side, for example "resolve" (for CALL literal this would be done likely only once), then the "setup parameters to be passed to the callee", then "check" (if the caller has the check enabled; for CALL literal you likely would also do this only once, for CALL variable possibly only if the value changed, same with the resolve; if the callee hasn't the check enabled this would be called but do nothing), then the actual calling - but of course that's up to you :-)

Thank you, this cleared most of the confusion I had!

By default you would have zero runtime penalty for signature matching, because by default all runtime exceptions are disabled.

By "default" you mean if we choose to ignore the call in case something goes wrong and exceptions are turned off, right?

If no explicit check is coded and the runtime checks are not enabled then you'd even be free to just go on (ignore the call), but I don't know of any implementation that doesn't abort here.

If we choose to abort in case something goes wrong (like the signature not matching) then we'd still need some sort of signature matching in order to check if we should terminate or not, that might still have some runtime penalty (but probably not something to worry about).

For the last point: remember that the CALLed program may not be what the repository says, either because the repository is outdated (for example was not updated or the caller was compiled before the callee was adjusted). You therefore nearly always have to check on the callee's side (at least if dynamic called = not statically linked in, when this can be indeed optimized out).

Maybe we could go with a compile time "hash" of the signature (something like C++'s mangled names?). The compiler would have two "hashes", the caller hash and the callee hash. The callee hash is cached in the program or method code itself as a compiler-generated readonly static property. The caller hash is generated during compile time for the CALL and INVOKE statements only, and contains an "expected hash" based on the statement's USING and RETURNING items.
This way we can do signature matching in just one hash comparison during runtime, checking if the "expected signature" in the CALL statement matches the actual signature of the program being called.
Doing this would be faster than going through a list of parameters, return, and data item types. Could allow us to quickly check before deciding to attempt a call to a C# method with incorrect number of parameters if we use @xoofx's solution (Should throw a C# exception otherwise, and those are expensive to catch).
Or maybe we could completely bypass C#'s way to passing parameters (if that's possible somehow), and end up just calling a void method with no parameters after those are passed to the COBOL program in a "different" way. If that's possible @xoofx's Invoke method could turn into .Invoke(null, null);

Hey @sgorozco, would this still be faster in .NET 7 compared to @xoofx's reflection-based approach?

Can't tell, @xoofx's mentions that reflection Invoke()  performance has been improved in the latest dotNet releases.  The code I'm sharing is quite old. Most probably the current Invoke() beats or matches the performance of my tiny vintage library.

Does your source code have any specific licensing notice? Otterkit uses the Apache-2.0 license so we won't be able to include any GPL-license code or any code with a license incompatible with the Apache license.

It is being released as Public domain.
Here is the .net Fiddle where you can give it a try if you like.  It is compilable under .net Framework 4.7.2 (in Visual Studio) yet for some reason it doesn't run in dotNet Fiddle unless I specify .Net 7 as the target.
The gist of the library is in the WrapMethod() method, where you can see how the dynamic delegate is compiled.  Again, this was how it was done back then, most probably there is an easier way now.  The code provided by @xoofx  is dead-beat simple and elegant!  =)

The hash approach is reasonable for a "quick check", if that fails and the caller has ON OVERFLOW, then you can directly go there, if not then you can do a "full" check to raise a nice error message, but this can also be done (much) later.
The initial check for "resolve worked" should also be quick and fast.

Just made a new commit to add the System.IO.Hashing library, this will allow us to use the fast xxh64 hashing algorithm for the signatures, and when .NET 8 releases we'll be able to use the new xxh3 algorithm.
These two hashing algorithms are amazing in both performance and collision resistance, so it should be pretty safe for us to use them for the signatures.
I'll post an implementation of the External Repository here soon, based on @xoofx's solution. Just need to test a few things and make a commit for it in the runtime library repo.

Would this still work if we use it together with the ModuleInitializer attribute? We could keep the External Repository as a separate assembly that is referenced by every project dependency, and each dependency would then register its types through the ModuleInitializer attribute (also checking for duplicate names and conflicts).

Yes, ModuleInitializer is properly handled by NativeAOT, so anything called transitively from there would be preserved.

Here's the current implementation I have based on @xoofx's solution;
This is the Signature class to hold both the compiled COBOL program to C# class and the hash of the signature. It's still missing some required information like the source unit's type:
using System.Diagnostics.CodeAnalysis;

namespace OtterkitLibrary;

public class Signature
{
    [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods)]
    internal Type Type { get; init; }
    internal ReadOnlyMemory<byte> Hash { get; init; }

    public Signature([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods)] Type type, ReadOnlyMemory<byte> hash)
    {
        this.Type = type;
        this.Hash = hash;
    }
}

And here is the implementation based on @xoofx's solution. There's also a compiled COBOL program here called "hello-world" to test the implementation, and a UsageExample() method to register and invoke the program.
using System.Diagnostics.CodeAnalysis;
using System.Runtime.InteropServices;
using System.Runtime.CompilerServices;
using System.Reflection;

namespace OtterkitLibrary;

// PROGRAM-ID. hello-world.
public class _hello_world
{
    // WORKING-STORAGE SECTION.
    private static Alphanumeric _hello = new("Hello, World!"u8, 0, 20, new byte[20]);

    // LOCAL-STORAGE SECTION.

    // PROCEDURE DIVISION.
    public static void Procedure()
    {
        // PROCEDURE STATEMENTS.
        Statements.DISPLAY(" ", true, _hello.Display, String.Empty);
        Statements.STOP(false, "\nTerminating Now!");
    }
}

public static partial class External
{
    private static readonly Dictionary<string, Signature> ExternalRepository = new();

    public static void UsageExample()
    {
        // var signatureHash = "program:hello-world|params:null|ret:null|ec:null|comma:f|curr:null"u8;
        // var xxhash = XxHash64.Hash(signatureHash, 172575);
        // Result: 9, 232, 166, 24, 201, 31, 204, 132

        var hash = new byte[] { 9, 232, 166, 24, 201, 31, 204, 132 };

        RegisterSignature<_hello_world>("hello-world", hash);

        // Would be equivalent to a COBOL program pointer
        var signature = GetSignature("hello-world");

        // If the program pointer is not null:
        if (signature is not null) Invoke(signature.Type, Array.Empty<ICOBOLType>());

        // If the program pointer is null:
        if (signature is null) ExceptionRegistry.ActivateException("EC-PROGRAM-PTR-NULL");
    }

    public static void RegisterSignature<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods)] T>(string name, ReadOnlyMemory<byte> hash)
    {
        RegisterSignature(name, typeof(T), hash);
    }

    public static void RegisterSignature(string name, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods)] Type type, ReadOnlyMemory<byte> hash)
    {
        ExternalRepository[name] = new Signature(type, hash);
    }

    public static Signature? GetSignature(string name)
    {
        ref var signatureOrNull = ref CollectionsMarshal.GetValueRefOrNullRef(ExternalRepository, name);

        if (Unsafe.IsNullRef(ref signatureOrNull))
        {
            ExceptionRegistry.ActivateException("EC-PROGRAM-NOT-FOUND");
            return null;
        }

        return signatureOrNull;
    }

    public static void Invoke([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods)] Type type, params ICOBOLType[] args)
    {
        var method = type.GetMethod("Procedure", BindingFlags.Public | BindingFlags.Static);

        if (method is not null) method.Invoke(null, args);

        if (method is null) ExceptionRegistry.ActivateException("EC-PROGRAM-ARG-MISMATCH");
    }
}

The program outputs "Hello, World!" as expected, even when compiled with NativeAOT!
I'm unsure if activating the exceptions should be done here or outside of these methods, @GitMensch what do you think?
The PR is open here, we might need feedback before merging to main: https://github.com/otterkit/libotterkit/pull/27

Another thing that I'm not entirely sure about is the ReadOnlyMemory to store the hash, maybe there are more efficient alternatives to store the xxh64 hash bytes.

I don't know enough about C# to comment much on this, but this doesn't look plain wrong, so... :-)
Depending on how ActivateException gets to know where it is called from I'd suggest adding "this.position" or something into that method as it has to store where the last exception was raised (even 10 lines after, the exception will stay "active" until SET LAST EXCEPTION OFF (or similar) is used or another exception happens - and in the meantime the program that raised the exception may also be (physical) canceled..
For exceptions at least if you turned them on with locations - you obviously need to store the location somewhere; I'd suggest a "pos" attribute (or similar) which has the current program/function section/paragraph and source (file+line). If location is not turned on then only the program/function would be set.
Note: you could use the same "pos" attribute to implement READY TRACE/ RESET TRACE.

Depending on how ActivateException gets to know where it is called from I'd suggest adding "this.position" or something into that method as it has to store where the last exception was raised

I'll try to figure out an implementation for it. Currently the ActivateException just sets it to true and sets the LAST EXCEPTION to the activated exception.
Hmmmm, maybe activating the exceptions should be done outside the Repository methods, so that we can pass the position and location to it without having to also pass those to the Invoke and GetSignature methods.
@GitMensch what do you think of the hash format?
program:hello-world|params:null|ret:null|ec:null|comma:f|curr:null

This string "hash" would be converted at compile time into an actual int64 hash value using the xxHash64 algorithm, which in theory means that we could do the "quick check" on the CALL and INVOKE statements with a single int64 comparison against the "expected hash", and then fallback to a longer check if that fails, so that we can display a nicer error message like you suggested yesterday.
If the hash of the callee is the above and the expected hash of the CALL is this one:
                 DECIMAL-POINT IS COMMA is specified 🡫
program:hello-world|params:null|ret:null|ec:null|comma:t|curr:null

Because the expected hash is a program with DECIMAL-POINT IS COMMA clause, and the actual hash is a program without the clause the quick check would fail due to a different int64 value being produced by the xxHash64 for both "hashes".
The string representation might also be useful for debugging purposes.

not sure about the format:

Do you need the program name in there? It definitely would be useful for debugging, but otherwise?
Do you really want to fail for comma+currency sign?
You possibly don't want to fail if exceptions don't match. Consider that "old version" raised EC-BOUNDS-SUBSCRIPTS an a new version raises the group EC-BOUNDS - or vice versa.

For the parameters you likely want to encode only:

amount
BY VALUE / otherwise
size for everything not passed BY VALUE
integer type for BY VALUE
optionality

You could place all this in an array (size is automatically in) and get something like
[] -> no parameters
[5,5156,opt:int64] -> three parameters, first two with size 5 and 5156, the third one an OPTIONAL BY VALUE of maximum size int64

if you don't want to limit on fixed integer sizes but digit sizes use V38 (amount of maximum digits) instead.

Hey @GitMensch, I just checked the standard again and you're right, we shouldn't fail if exceptions don't match and we don't need the program name there (maybe only if a "debug build" is on?).
But in certain situations we should still fail for the comma and currency sign when the parameter is elementary and passed by reference. The standard specifies that it should fail if the element being called is a program with a program-specifier in the repository paragraph of the caller, a program and the NESTED phrase is used on the CALL, a class method or a function.

then the definition of the formal parameter and the definition of the argument shall have the same ALIGN, BLANK WHEN ZERO, DYNAMIC LENGTH, JUSTIFIED, PICTURE, SIGN, and USAGE clauses, with the following exceptions:

Currency symbols match if and only if the corresponding currency strings are the same.
Period picture symbols match if and only if the DECIMAL-POINT IS COMMA clause is in effect for both the activating and the activated runtime elements or for neither of them. Comma picture symbols match if and only if the DECIMAL-POINT IS COMMA clause is in effect for both the activating and the activated runtime elements or for neither of them.

Otherwise if the called element is a program without a program-specifier in the repository paragraph of the caller and without a NESTED in the CALL statement then just the item sizes are checked and the array format would work just fine.
But we still need to figure out how to encode this extra information into it somehow for the other source element types and for when the program is specified in the caller's repository.
I'm not sure how to encode all of that in a way that is still performant when runtime checks are needed, that is a lot of stuff to check. Please let me know if you have any suggestions, maybe we could hash just the "type" information instead of the whole thing.

Maybe some of this information could be statically stored in a field or property inside the items themselves.
So that a picture check becomes just _ws_param.Picture == _ws_arg.Picture.

The PR (https://github.com/otterkit/libotterkit/pull/27) was merged, so I'm closing this issue for now.
If anyone finds an issue with the merged implementation please let me know, and I'll reopen this issue to discuss it a bit more.


Event "NOTIFICATION_TAPPED" triggered automatically.

Description
The event NOTIFICATION_TAPPED happens when a user interact with a notification we sent NOTIFICATION_SENT
But checking the events, the NOTIFICATION_TAPPED is happening in the same second of NOTIFICATION_SENT, so it seems to be automatic.
We need to trigger this NOTIFICATION_TAPPED only when the user clicks on the notification.
Steps to reproduce
Check this user:
https://app.amplitude.com/analytics/gooddollar/project/288710/search/amplitude_id%3D190777824400?collapsed=true&sessionHandle=Y0xEJ0%2F_Y0xELne_CxrPpSQ_BGfG_dc952a0c-a042-4e71-808f-a5133b089cabR&eventId=f2f95056-4f78-4ede-a54b-8b496fef67ff
This behavior is the same in different users, in the same second the NOTIFICATION_SENT happens the NOTIFICATION_TAPPED also happens.

@drptiago you say same behavior for different users. Is it he same behavior for all users tho?

Yes @L03TJ3 all users with NOTIFICATION_TAPPED event have this behavior.
In this dashboard, click in the line and user streams, you will see this is the behavior to all of them.
https://app.amplitude.com/analytics/gooddollar/chart/smeoke9?linkingDashboardId=thkrruw

Has been resolved as it was the NOTIFICATION_EVENT which was triggered when opening the app when someone tapped the notification: https://github.com/GoodDollar/GoodDAPP/commit/e57874a5b95bcb2a17f2fed6df4ecefe8509f531

@drptiago to what extend can this be considered solved?

Fixed.
It's clear now the NOTIFICATION_SENT  cannot be tracked, we can only track NOTIFICATION_TAPPED


Added 'conanfile.py' to allows use the header library from conan.io

To easy the integration of the library with other projects that use the conan package manager, i have added a conan recipe (conanfile.py) to it. Conan docs can be found here.
I could maintain an external repository with the recipe, but i thought that the project members can found useful keep it within the project. But if you do not want integrate it into the repository, that is ok.
*Note * : In the conanfile.py i set the version to "0.0.1-41428b4", because the project does not specify an explicit release version. The version number was generated based on the commit of pull-request #1. I am submitting a separated pull-request because both changes are independent from each other. By the way, the version number can be changed to whatever you think is best (see this tutorial if you want know more).
Hope that you find the PR useful.

Hmm. I don't know much about Conan, so I'll research it a little bit more later tonight.

I just noticed you’re the same user that requested a license for this project.
Is this pull request still valid? If so I’ll go ahead and merge it.


Cannot trim insignificant digits when specifying decimal points

I'm not sure if there's another way to specify this, but when you specify the number of floating point digits you want to display, and to trim insignificant digits, it only applies the trim. This seems inconsistent - if the max floating points are specified, the trim should be applied after limiting the decimal points
Eg.
d3.format('00.4f')(72.210000000000) // Outputs '72.2100'
d3.format('00.~4f')(72.210000000000) // Outputs '72.21'
d3.format('00.4f')(72.210000000001) // Outputs '72.2100'
d3.format('00.~4f')(72.210000000001) // Outputs '72.210000000001', expected '72.21'

Codepen here

Your codepen is using d3 3.x, which doesn’t support this feature. Try upgrading to d3 5.x or d3-format 1.x.
https://observablehq.com/d/28575fe43d74feab


test: display the validation errors in the webhook test

this code is necessary to reduce drift with the CNP repo.
There we have the webhook test failing massively in the nightly builds,
and is not reproducible neither locally nor on the feature branch.
This code will show which validation(s) are failing
Signed-off-by: Jaime Silvela<EMAIL_ADDRESS>

/ok-to-merge

/ok-to-merge


python311Packages.conda-package-streaming: 0.9.0 -> 0.10.0

Automatic update generated by nixpkgs-update tools. This update was made based on information from passthru.updateScript.
meta.description for python311Packages.conda-package-streaming is: An efficient library to read from new and old format .conda and .tar.bz2 conda packages.
meta.homepage for python311Packages.conda-package-streaming is: https://github.com/conda/conda-package-streaming
Updates performed

Ran passthru.UpdateScript

To inspect upstream changes
Impact
Checks done

built on NixOS
The tests defined in passthru.tests, if any, passed
found 0.10.0 with grep in /nix/store/mq64zvdf01b7yba40pli9qfvfng3ny1q-python3.11-conda-package-streaming-0.10.0
found 0.10.0 in filename of file in /nix/store/mq64zvdf01b7yba40pli9qfvfng3ny1q-python3.11-conda-package-streaming-0.10.0

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

7 total rebuild path(s)

7 package rebuild(s)

First fifty rebuilds by attrpath

python311Packages.conda
python311Packages.conda-package-handling
python311Packages.conda-package-streaming
python312Packages.conda
python312Packages.conda-package-handling
python312Packages.conda-package-streaming

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/mq64zvdf01b7yba40pli9qfvfng3ny1q-python3.11-conda-package-streaming-0.10.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 python311Packages.conda-package-streaming https://github.com/r-ryantm/nixpkgs/archive/18c25b05fdfeb6c333dc65a2102124487ebed4bc.tar.gz

Or:
nix build github:r-ryantm/nixpkgs/18c25b05fdfeb6c333dc65a2102124487ebed4bc#python311Packages.conda-package-streaming

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/mq64zvdf01b7yba40pli9qfvfng3ny1q-python3.11-conda-package-streaming-0.10.0
ls -la /nix/store/mq64zvdf01b7yba40pli9qfvfng3ny1q-python3.11-conda-package-streaming-0.10.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 --extra-nixpkgs-config '{ allowInsecurePredicate = x: true; }' run on x86_64-linux 1

12 packages built:

python311Packages.conda
python311Packages.conda-package-handling
python311Packages.conda-package-handling.dist
python311Packages.conda-package-streaming
python311Packages.conda-package-streaming.dist
python311Packages.conda.dist
python312Packages.conda
python312Packages.conda-package-handling
python312Packages.conda-package-handling.dist
python312Packages.conda-package-streaming
python312Packages.conda-package-streaming.dist
python312Packages.conda.dist

Maintainer pings
cc @EricTheMagician for testing.

@nixpkgs-merge-bot merge


xActiveDirectory: CI pipeline failed to release examples

During the latest release the CI pipeline failed to release the examples with the error InvalidGuid.
[Build Info] [UTC 06/26/2019 21:59:17] Found API key to use for publishing to the PowerShell Gallery.
[Build Info] [UTC 06/26/2019 21:59:17] Evaluating examples that end with 'Config' if they need publishing.
InvalidGuid,Test-ScriptFileInfo

https://ci.appveyor.com/project/PowerShell/xActiveDirectory/branch/master?fullLog=true

When the wrong GUID is found we should add an issue to the test framework (DscResource.Tests) to add a common test for this.

Not a very helpful message! Suggest we add some verbose messaging into the Test-PublishMetadata function in DSCResource.Tests\DscResource.GalleryDeploy\DscResource.GalleryDeploy.psm1
The first problem is with example xADComputer\3-AddComputerAccountSpecificPath_Config.ps1 where Test-ScriptFileInfo reports the GUID being invalid. It is missing a character from the first set in the GUID.
Interestingly, Test-PublishMetadata is also reporting issues with two other examples:
WARNING: Skipping publishing example '\xActiveDirectory\Examples\Resources\xADObjectEnabledState\2-CreateClusterComputerAccount_Config.ps1'.
The example could not be read, for example if there is a required module missing when the script should be parsed, or general script parsing errors.
General errors should have been caught with the common example validation test.

WARNING: Skipping publishing example '\xActiveDirectory\Examples\Resources\xADObjectEnabledState\3-EnabledPrestagedClusterComputerAccount_Config.ps1'.
The example could not be read, for example if there is a required module missing when the script should be parsed, or general script parsing errors.
General errors should have been caught with the common example validation test.

These both contains an additional xFailoverCluster resource, which I assume is the problem.

The example script needs to be able to be parsed for the Test-PublishMetadata to work, but I think the publish functionality is making sure the module exist in the build worked, or maybe it is just the common test that make sure the module exist so the common test can compile the examples.

Looking at the current Common Tests - Validate Example Files To Be Published tests, only duplicate GUIDs are checked, not whether they are valid. This would be easy to add. It is also currently ignoring any errors from Test-ScriptFileInfo which could be changed.

I used Test-ScriptFileInfo on xADObjectEnabledState\2-CreateClusterComputerAccount_Config.ps1 and it does produce the parse error if any of the referenced modules are not installed. Should we have examples that reference other modules?

The test framework will install any additional modules on the build worker that are needed to compile the examples.

Looking at the current Common Tests - Validate Example Files To Be Published tests, only duplicate GUIDs are checked, not whether they are valid. This would be easy to add. It is also currently ignoring any errors from Test-ScriptFileInfo which could be changed.

I add a issue for that in DscResource.Tests.

Oh that was already done! Awesome! 😄

I'm closing this as I think @X-Guardian has resolved everything. 😄 Next release should publish the examples correctly. Maybe we eventhe module has been renamed so they are released with the new names without 'x'.


feat/form-errors

Please review before merging.

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


Sign up maintainers of rOpenSci packages to notifications?

Per https://github.com/ropenscilabs/cchecksapi/issues/13#issuecomment-674807907

I wonder whether it'd make more sense to document notifications.
Or instead signing them up, but sending an email with clear instructions on how to tweak/ opt out? :thinking:

I'd like to sign people up automatically but I have a feeling others on our team may not agree.  Probably best to document it and let people know they can sign up.

As a subsection in the curation policy? If so could you edit my PR with some elements about the CRAN checks notifications? https://github.com/ropensci/dev_guide/pull/263

hmm, would it belong better in Maintaining Packages section?

as a new chapter "Dealing with CRAN?" or so?

yeah, prob good idea to have a chapter for cran since its such a PITA. could include various gotchas for cran submission, this api, etc


Cleanup/3441 snippet modeladmin validation error helper

Cleanup tasks for #3441
Added the validation_message funtion to:

Snippets

Modeladmin

contrib.settings

Also updated the tests that run through this code

HI @Nebulosar,
Thank you for helping with this. I think it'll be really valuable to have validation errors handled more consistently throughout Wagtail. I don't think this is far away. However, I think there might perhaps be some misunderstanding around what the existing tests are testing, and the purpose of the validation_error helper added by @gasman in #3440.
Please correct me if I've missed something, but it seems you haven't added any tests that show the validation_error making a difference in the UI. See the tests added in #3440 for an example. What we should be looking to confirm is that:

Field-specific errors now appear in a list at the top of the page as well as next to relevant field.
And non-field errors are also rendered in the same spot.

Do you think you might be able to revise the tests to show this?

Hello @ababic ,
After looking at the tests in #3440 I can understand what you mend.
I will look into testing the specific tests to check for UI elements

Okay, thanks @Nebulosar. Please let me know once you're happy with things, and I'll review things again.

I'm happy to merge this as-is - as I said in #3441, I don't think it's necessary to re-test all the permutations of field/non-field errors as implemented by the validation_error helper, as that's all covered by the tests in #3440. Given that we can see the same helper in use here, and we have tests to confirm that it's hooked up correctly and responding to simple validation errors, we can reasonably take it as read that it will respond appropriately to the more esoteric error cases :-)

Merged in a03c310858569858d70f349e3f6e3f7a4bf159e3 - thanks @Nebulosar!


SQS ChangeMessageVisibilityAsync gets stalled when called with invalid message receipt handle

Description
When ChangeMessageVisibilityAsync() is called with invalid message receipt handle, it doesn't throw any exception but it gets stalled instead.
Reproduction Steps
The issue can be reproduced with this code snippet:
static async Task TestChangeVisibilityTimeout()
{
    using (AmazonSQSClient SQS = new AmazonSQSClient("ignore", "ignore", new AmazonSQSConfig { ServiceURL = "http://localhost:4566" }))
    {
        CreateQueueResponse createQueueResp = await SQS.CreateQueueAsync("testQueue");
        try
        {
            Console.WriteLine($"[{DateTime.Now:T}] Changing visibility");
            await SQS.ChangeMessageVisibilityAsync(createQueueResp.QueueUrl, "InvalidHandle", 30);
            Console.WriteLine($"[{DateTime.Now:T}] Changed visibility");
        }
        catch (Exception ex)
        {
            Console.WriteLine($"[{DateTime.Now:T}] Exception thrown: {ex}");
        }
        finally
        {
            await SQS.DeleteQueueAsync(createQueueResp.QueueUrl);
        }
    }
}

When this code is executed, the output is only like this and the application gets stalled:
[13:46:14] Changing visibility
Throwing AmazonSQSException is rather expected here.
Changing message visibility wit AWS CLI works as expected:
C:\> aws sqs create-queue --queue-name testQueue --endpoint-url http://localhost:4566
{
    "QueueUrl": "http://localhost:4566/000000000000/testQueue"
}

C:\> aws sqs change-message-visibility --queue-url http://localhost:4566/000000000000/testQueue --receipt-handle InvalidHandle --visibility-timeout 30 --endpoint-url http://localhost:4566

An error occurred (ReceiptHandleIsInvalid) when calling the ChangeMessageVisibility operation: The input receipt handle is invalid.

Logs
See above.
Environment

SDK Version:  AWSSDK.SQS <IP_ADDRESS>
LocalStack: 0.14.0, 0.13.3
OS Info: Windows 10
Build Environment VS 2019
Targeted .NET Platform:  Core 3.1

Resolution

[ ] :wave: I can/would-like-to implement a fix for this problem myself

This is a :bug: bug-report

Hi @a-wi,
Good morning.
Unfortunately, I'm unable to reproduce the issue with the actual SQS service. Here's is the code that I used (notice I'm using the credentials configured at default location and default service endpoint):
using System;
using System.Threading.Tasks;
using Amazon.SQS;
using Amazon.SQS.Model;

namespace SQSChangeMessageVisibility_Issue1987
{
    class Program
    {
        static void Main(string[] args)
        {
            Task.WaitAll(TestChangeVisibilityTimeout());
        }

        static async Task TestChangeVisibilityTimeout()
        {
            using (AmazonSQSClient SQS = new AmazonSQSClient())// "ignore", "ignore", new AmazonSQSConfig { ServiceURL = "http://localhost:4566" }))
            {
                CreateQueueResponse createQueueResp = await SQS.CreateQueueAsync("testQueue");
                try
                {
                    Console.WriteLine($"[{DateTime.Now:T}] Changing visibility");
                    await SQS.ChangeMessageVisibilityAsync(createQueueResp.QueueUrl, "InvalidHandle", 30);
                    Console.WriteLine($"[{DateTime.Now:T}] Changed visibility");
                }
                catch (Exception ex)
                {
                    Console.WriteLine($"[{DateTime.Now:T}] Exception thrown: {ex}");
                }
                finally
                {
                    await SQS.DeleteQueueAsync(createQueueResp.QueueUrl);
                }
            }
        }
    }
}

This fails immediately with the below exception:
[9:39:11 AM] Changing visibility
[9:39:17 AM] Exception thrown: Amazon.SQS.Model.ReceiptHandleIsInvalidException: The input receipt handle "InvalidHandle" is not a valid receipt handle.
 ---> Amazon.Runtime.Internal.HttpErrorResponseException: Exception of type 'Amazon.Runtime.Internal.HttpErrorResponseException' was thrown.
   at Amazon.Runtime.HttpWebRequestMessage.GetResponseAsync(CancellationToken cancellationToken)
   at Amazon.Runtime.Internal.HttpHandler`1.InvokeAsync[T](IExecutionContext executionContext)
   at Amazon.Runtime.Internal.Unmarshaller.InvokeAsync[T](IExecutionContext executionContext)
   at Amazon.SQS.Internal.ValidationResponseHandler.InvokeAsync[T](IExecutionContext executionContext)
   at Amazon.Runtime.Internal.ErrorHandler.InvokeAsync[T](IExecutionContext executionContext)
   --- End of inner exception stack trace ---
   at Amazon.Runtime.Internal.HttpErrorResponseExceptionHandler.HandleExceptionStream(IRequestContext requestContext, IWebResponseData httpErrorResponse, HttpErrorResponseException exception, Stream responseStream)
   at Amazon.Runtime.Internal.HttpErrorResponseExceptionHandler.HandleExceptionAsync(IExecutionContext executionContext, HttpErrorResponseException exception)
   at Amazon.Runtime.Internal.ExceptionHandler`1.HandleAsync(IExecutionContext executionContext, Exception exception)
   at Amazon.Runtime.Internal.ErrorHandler.ProcessExceptionAsync(IExecutionContext executionContext, Exception exception)
   at Amazon.Runtime.Internal.ErrorHandler.InvokeAsync[T](IExecutionContext executionContext)
   at Amazon.Runtime.Internal.CallbackHandler.InvokeAsync[T](IExecutionContext executionContext)
   at Amazon.Runtime.Internal.EndpointDiscoveryHandler.InvokeAsync[T](IExecutionContext executionContext)
   at Amazon.Runtime.Internal.EndpointDiscoveryHandler.InvokeAsync[T](IExecutionContext executionContext)
   at Amazon.Runtime.Internal.CredentialsRetriever.InvokeAsync[T](IExecutionContext executionContext)
   at Amazon.Runtime.Internal.RetryHandler.InvokeAsync[T](IExecutionContext executionContext)
   at Amazon.Runtime.Internal.RetryHandler.InvokeAsync[T](IExecutionContext executionContext)
   at Amazon.Runtime.Internal.CallbackHandler.InvokeAsync[T](IExecutionContext executionContext)
   at Amazon.Runtime.Internal.CallbackHandler.InvokeAsync[T](IExecutionContext executionContext)
   at Amazon.Runtime.Internal.ErrorCallbackHandler.InvokeAsync[T](IExecutionContext executionContext)
   at Amazon.Runtime.Internal.MetricsHandler.InvokeAsync[T](IExecutionContext executionContext)
   at SQSChangeMessageVisibility_Issue1987.Program.TestChangeVisibilityTimeout() in /Users/ashdhin/dev/repros/SQSChangeMessageVisibility_Issue1987/SQSChangeMessageVisibility_Issue1987/Program.cs:line 23

I do notice that you might be using LocalStack. While AWS SDK for .NET should work fine with LocalStack, unfortunately, we could not support the differences in behavior here for the 3rd party platform.
Thanks,
Ashish

Right, call to ChangeMessageVisibilityAsync() with invalid handle seems to work with AWS as expected but it fails with LocalStack.
This could suggest that LocalStack should be blamed but the catch is that AWS CLI works as expected (reporting error) with both AWS and LocalStack. If AWS CLI is able to handle error properly in both environments, SDK should be able to do so as well and the problem doesn't seem to lay in LocalStack.

Right, call to ChangeMessageVisibilityAsync() with invalid handle seems to work with AWS as expected but it fails with LocalStack. This could suggest that LocalStack should be blamed but the catch is that AWS CLI works as expected (reporting error) with both AWS and LocalStack. If AWS CLI is able to handle error properly in both environments, SDK should be able to do so as well and the problem doesn't seem to lay in LocalStack.

@a-wi If you refer ChangeMessageVisibilityAsync, this is autogenerated and the result depends on the service returning the response. While AWS CLI might be working with LocalStack, we are unable to support differences in LocalStack emulated environment.


Factor out io::Error from sighash errors

The hadnling of io::Error in sighash had a few problems:

It used io::ErrorKind instead of io::Error losing inforation
Changing io::ErrorKind to io::Error would disable PartialEq&co
The Io error wariants were duplicated

It turns out all of these can be solved by moving the Io variant into a separate error.

Sweet, might as well get rid of all the error enums which now have a single variant, right? (Just return InputIndexError instead).

Yeah, I was thinking about it and it looks like there won't be new variants in the future. The enums could even be exhaustive.

As an aside, I wonder if we should make our own private PrivateFrom trait so that we can write .map_err(PrivateFrom::from) in lieu of ? (which would require public From impls that we might not want to commit to) or .map_err(SpecificError::SpecificVariant) (which is a little annoying to type and maintain).

Ok, concept ACK a4d01d0b6ccea3d6b9b76945333c15fa8181ed8f. Will provide a real ACK but I want to float one more idea past you -- what if we replaced SigningDataError<E> with Result<Result<(), E>, io::Error>. Then unwrap_sighash becomes unwrap and it's clearer to callers that they can unwrap whenever the io::Error variant is impossible.

@apoelstra I think nested result would be confusing to the users which need signing data for some reason. I'd rather make unwrap_sighash public.
PrivateFrom doesn't sound that useful but I could be convinced by seeing a nice diff.

Yeah, I was thinking about it and it looks like there won't be new variants in the future.

sighash module still has LegacyError and SegwitV0Error which should be remove IMO.

The enums could even be exhaustive.

I have no clue how the new push-decode stuff will interact with the TaprootError so am not confident to remove non_exhaustive from it yet.
P2wpkhError looks like it could be non_exhaustive.

I have no clue how the new push-decode stuff will interact with the TaprootError so am not confident to remove non_exhaustive from it yet.

One of the main advantages of push_decode is that encoding never fails and thus there will be no encoding errors. Note that we'll need fn taproot_signing_data_encoder(&self) -> Result<TaprootSigningDataEncoder, TaprootError> which pre-validates the data. This is probably a good thing because it prevents writing partial data.

One of the main advantages of push_decode is that encoding never fails and thus there will be no encoding errors.

Bit sad that I didn't notice that. I'm good with removing non_exhaustive then.


update webspoon with kettle 9.1

https://github.com/pentaho/pentaho-kettle/releases
kettle 9.1 has been released just now, webspoon update required.
regard.

I'd skip this version.

https://sourceforge.net/projects/pentaho/files/Pentaho 9.1/client-tools/ gives you pdi-ce-<IP_ADDRESS>-324.zip, but https://github.com/pentaho/pentaho-kettle/tree/<IP_ADDRESS>-R points to <IP_ADDRESS>-325. This subtle difference might be tricky for webSpoon.
My interest has shifted toward Apache Hop (http://hop.incubator.apache.org/).

I'd welcome contributions from the community, though.
Thank you for your understanding.


Remote Content Library on Azure File Storage supported configuration?

For the HA feature is the Remote Content library supported when hosted on an Azure File Storage? Where the Site Servers and Site Systems are running in an IaaS configuration.
https://docs.microsoft.com/en-us/mem/configmgr/core/plan-design/hierarchy/remote-content-library

i see you already refiled this in the proper location, so closing this issue
https://github.com/MicrosoftDocs/memdocs/issues/3099


Checkbox missized on firefox

In the delayed-checkbox interactive the checkbox can be too small under certain circumstances. The hitbox for the checkbox is correctly sized but the icon is small

It is properly expanded on my (probably) older firefox and (definitely) older linux mint. So it's only a problem under a few particular conditions

Closing for lack of information - I don't have access to the computer I noticed this on and didn't find out the OS and browser versions at the time


Release 2.10.0

Description

I updated the docker images and added commands in the Makefile to make things easier.
I had to fix an issue with virtualenv and an old version of pip too.
This will be the last release before v3 that adds new features.
Closes #730 at the same time.
Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)
[x] Documentation (update in the documentation)

Checklist:

[x] I've read the CONTRIBUTION guide (required)
[x] I have updated the changelog accordingly (required).
[x] My change requires a change to the documentation.
[ ] I have updated the tests accordingly (required for a bug fix or a new feature).
[x] I have updated the documentation accordingly.
[x] I have ensured pytest and pytype both pass (by running  make pytest and make type).

I had to manually set tensorflow==1.8.0 for the docker image so the deterministic tests pass (may be related to #729 )

@AdamGleave I completely agree on that ;)
I would go for a version.txt


Prediction in colab

Hi, i'm a newbie with mmdetection, i had some issues (mentionned in the open issue's github too) trying to run it on cpu, so i decided to try a prediction in colab but i faced the error below and i could not find the solution alone

Was anybody able to solve this issue?

I am unable to reproduce the error you are getting,
Please take a look at demo notebook :
Please tell us if this resolved your issue

Thank you AyanGadpal, maybe it was a version problem since i used the last version of pytorch and mmdetection, your demo work very well thank you :)

I believe it is a version error linked with the mmcv version.
Try using the following line in the first cell of the colab notebook (instead of the default import of mmcv).
!pip install -q mmcv==0.4.3 terminaltables


feat(Context based Restrictions): add support for the X-Correlation-Id header #164

PR summary
Added support for the X-Correlation-Id header

Added support for passing the standard X-Correlation-Id header in each request
Updated some swagger properties summaries and descriptions

PR Checklist
Please make sure that your PR fulfills the following requirements:

[x] The commit message follows the Angular Commit Message Guidelines.
[x] Tests for the changes have been added (for bug fixes / features)
[x] Docs have been added / updated (for bug fixes / features)

Current vs new behavior
This enhancement adds support for passing the standard X-Correlation-Id header in each request. This is an optional header and it does not break backward compatibility.
Does this PR introduce a breaking change?

[ ] Yes
[x] No

@cam-d12 This PR looks like it is based on a really old version of the main branch.   Please re-do the PR on top of the latest main branch.  Your PR should probably show changes only in the generated service and unit test code for the CBR service.
With the way this PR is currently structured, it looks like you are adding the entire service for the first time.


feat: Add checking required fields

Details:

Add checking required fields
Add hint for required fields

Fixes: #1857
Screenshots for the change:

@liveHarshit I think so, which part of it do you find not necessary. For billing information, I only check it when the checkbox is ticked

I only check it when the checkbox is ticked

Okay then. :+1:


fix criterion-papi build failure on macOS

What have you changed?
criterion-papi previously has a mistake in its build script thus it makes TiKV to build on macOS. Now I fix the issue in https://github.com/YangKeao/rust-papi/pull/1. Upgrading to libpapi_sys 0.1.3 fixes it.
What is the type of the changes?

Bugfix (a change which fixes an issue)

How is the PR tested?

Manual test (add detailed scripts or steps below)

It now compiles on my laptop running macOS.
Does this PR affect documentation (docs) or should it be mentioned in the release notes?
No
Does this PR affect tidb-ansible?
No
Refer to a related PR or issue link (optional)
Benchmark result if necessary (optional)
Any examples? (optional)

PTAL @YangKeao @breeswish

/merge


can not pack sequelize with sqlite3

Node version:6.3.1
NPM version:3.10.3
vue-cli version: (if necessary)
Operating System:win10

webpack can not pack sequelize and sqlite3? how to solve this

Sequelize (with sqlite3) is typically meant for back-end server processes and not meant for the front-end. Is there any specific reason why you would need this within the electron renderer scope?

Closing for now. Feel free to comment back.

@SimulatedGREG I can imagine that someone using node-sqlite3 as their client-side datastore (like Nylas/N1) would rather not write their sql queries directly and instead use an ORM. I'm not sure what specifically was @zhangmingze's issue, but in general, this isn't really uncommon when using Electron.

@SimulatedGREG I am also trying to use sequelize+sqlite in the boilerplate and I am facing this dependency error when running the tests:
WARNING in ./~/sequelize/lib/dialects/postgres/connection-manager.js Module not found: Error: Can't resolve 'pg' in '/Users/brunosiqueira/IgarapeDev/paraty-desktop/node_modules/sequelize/lib/dialects/postgres'  @ ./~/sequelize/lib/dialects/postgres/connection-manager.js 22:14-27  @ ./~/sequelize/lib/dialects/postgres/index.js  @ ./~/sequelize/lib/sequelize.js  @ ./~/sequelize/index.js  @ ./src/renderer/app/database/db_util.js  @ ./src/renderer/app/database/person.spec.js  @ ./src/renderer/app \.spec$  @ ./tests/unit/index.js
Have you seen this matter? sqlite is an important option other than the localstorage.
Thanks!

@brunosiqueira Did you use webpack?
if yes, try this
// webpack.config.js
externals: {
   "sequelize": "require('sequelize')"
 }

add this option maybe help you.

@zhangmingze that you for your help. It did help apparently. But now I am getting the sqlite3 error:
Electron 1.7.2 (Node 7.9.0) ERROR   Uncaught Error: Please install sqlite3 package manually   at webpack:///~/sequelize/lib/dialects/sqlite/connection-manager.js:25:0 <- index.js:111285
remind that the app already works, but not while testing. Requiring sqlite3 in the externals do not fix it.

After adding the sqlite3 package try running node_modules/.bin/install-app-deps.

After adding the sqlite3 package try running node_modules/.bin/install-app-deps.

This worked for me. I was getting ERROR Uncaught Error: Please install sqlite3 package manually as well.
My use case is that I launch express+sequelize+sqlite3 to have an API on localhost, so that a single renderer client can either connect to a local API or a remote API with the same code.


Add public/private switch to Gateway

Describe the feature request
We have some APIs are intended to be accessed from only within the datacenter, such as services running on bare-metals. Meanwhile we also need to expose some APIs to the public network. So it's better we can use a flag to distinguish them in Gateway spec, and make istio-ingressgateway capable of watching and applying Gateway objects which has a pre-defined flag value.
Describe alternatives you've considered
Before switching to istio-ingressgateway, we use Ingress with different ingress class to achieve this purpose. The 'public' ingress-controller runs on nodes with public IP addresses, using hostNetwork. 'private' ingress-controller only listens private addresses.

@linsun Can you help take a look at this please?

cc @rshriram

Just like ingress you can run your own gateways. Simply launch additional gateway workloads with different labels. Then you can pin the gateway resources to different gateway workloads.

@rshriram Thanks!
Can you offer more details on how to launch gateway workloads with labels and how to pin gateway resources to them?

gateway:
 workloadSelectors:
    mylabel: myvalue # these are pod labels for your gateway
...

And to launch your own gateway, checkout the values-istio-gateways.yaml helm chart.

@rshriram Thanks, it works!
For those who have the same demand, here is an example.
gateway pod deployment
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: istio-ingressgateway
  namespace: istio-system
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: istio-ingressgateway
        istio: ingressgateway
        visibility: internal # put a custom label here.
      annotations:
        sidecar.istio.io/inject: "false"
        scheduler.alpha.kubernetes.io/critical-pod: ""
    spec:
      ...

create Gateway resource
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: example-gateway
spec:
  selector:
    visibility: internal # here we add a workload selector to match our custom labels.
  servers:
  - port:
      number: 80
      name: http
      protocol: HTTP
    hosts:
    - "*.example.com"

@rshriram Thanks, it works!
For those who have the same demand, here is an example.
gateway pod deployment
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: istio-ingressgateway
  namespace: istio-system
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: istio-ingressgateway
        istio: ingressgateway
        visibility: internal # put a custom label here.
      annotations:
        sidecar.istio.io/inject: "false"
        scheduler.alpha.kubernetes.io/critical-pod: ""
    spec:
      ...

create Gateway resource
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: example-gateway
spec:
  selector:
    visibility: internal # here we add a workload selector to match our custom labels.
  servers:
  - port:
      number: 80
      name: http
      protocol: HTTP
    hosts:
    - "*.example.com"

So, this has to be done with two gateways, can't be done with one, right?


update same data to have Skills Groups

PR: https://github.com/NationalSecurityAgency/skills-client-examples/pull/30


Chore/updating email content

Updated the email content according to Olivia's content feedback. Added new tests if need and updated existing ones wherever needed.
Checklist

[ ] Unit tests
[ ] Code coverage checked
[ ] Coding standards
[ ] Error Handling
[ ] Security/performance considered?
[ ] Deployment changes considered?
[ ] README updated

Can you modify the requestInfoUrl value so that it is wrapped in an  tag?  Currently, the URL isn't a hyperlink, so users can't click on it to bring them to the page.

Removed comment about wrapping URL in an 'a' tag - didn't realise the Notify template automatically creates a link for any address starting in 'https://'


PP: Prototyping - how to

Work out how to prototype ahead of prototyping for public programmes work

Underlying functionality already in Prismic for events
What's On to be prototyped in InVision (Prismic would require events/exhibition info already in Prismic to build What's On, so quicker to mock up in InVision

Keep track of event prototyping on https://github.com/wellcometrust/wellcomecollection.org/pull/1276


Feat/combine uis

testing reveals this always redirects to login, no request is made to the backend to the state rpc

Please test now that the downstream branch has been merged

got further, found some backend bugs, but there's still issues:

should call init.logs.follow instead of server.logs.follow
progress bar shows at 0% even when receiving something like overall: { done: 34, total: 73 }
db.subscribe is never called


Do not use ceph for default Cloud8 HA jobs.

Cloud8 ceph needs some fine tuning regarding nodes and roles allocations
so let's not use it by default.
An alternative to https://github.com/SUSE-Cloud/automation/pull/2026

This would probably require an additional job with correct setting for ceph and HA so we do not have that scenario untested.

This would probably require an additional job with correct setting for ceph and HA so we do not have that scenario untested.

Agreed

To document this here:
This PR requests the storage_method=ceph for cloud 6 and 7 ha jobs explicitly. But as they are currently defined to run with 5 nodes, they would default to ceph deployment anyway.
So the slight change is that it explicit now, before it was implicit.
But I can live with that :)

@jdsn I actually prefer explicit over implicit here :)


Add collate file and more tests from autogpt into testbed

Why are these changes needed?
Add more tests from autogpt and reorganize file structure.

Related issue number

Checks

[ ] I've included any doc changes needed for https://microsoft.github.io/autogen/. See https://microsoft.github.io/autogen/docs/Contribute#documentation to build and test documentation locally.
[ ] I've added tests (if relevant) corresponding to the changes introduced in this PR.
[ ] I've made sure all auto checks have passed.

@afourney PTAL. I've added 13 tests, covering coding, scraping, file io.

reviewing now

@afourney PTAL. I've added 13 tests, covering coding, scraping, file io. The pipeline is similar to that of HumanEval. I add some packages to requirements.txt because they are foundamental to task solving. I don't think it is neccesary to waste conversation turns for agents to install necessary packages.

I think the question about installing packages is an interesting one. If they are common packages, then yes, we should expect them to already be installed. If, however, they are pretty esoteric and specific to the problem (e.g., yfinance) then identifying and installing the library is arguably part of the problem the agents need to work through to succeed. This is actually why I designed the Testbed the way that I did... so that each run would face identical obstacles.
Probably we want to identify some common packages and actually have them pre-installed on a Docker image. Identifying a core set of packages before looking at the problem set is likely ideal and free of bias. Perhaps something like https://learnpython.com/blog/most-popular-python-packages/


fix(frontend): update online link

:tada: This PR is included in version 3.2.1-online.2 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:

:tada: This PR is included in version 3.2.1-alpha.4 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:

:tada: This PR is included in version 1.2.2-alpha.2 :tada:
The release is available on npm package (@alpha dist-tag)
Your semantic-release bot :package::rocket:

:tada: This PR is included in version 1.2.2-alpha.2 :tada:
The release is available on npm package (@alpha dist-tag)
Your semantic-release bot :package::rocket:

:tada: This PR is included in version 1.2.2-alpha.2 :tada:
The release is available on npm package (@alpha dist-tag)
Your semantic-release bot :package::rocket:

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


possible to use this for sentiment controlled generation?

Hi, thanks for sharing the code! I was playing with the code and was wondering if I may be able to use it for sentiment controlled generation, in addition to topic controlled generation? Please correct me if I'm wrong, but I think this may be possible because the original GeDi paper demonstrated GeDi can be use for sentiment control, and some of GeDi components are used in this repo.
In this repo, I have tried Review Rating: 5.0 for positive sentiment and Review Rating: 1.0 for negative sentiment as suggested in appendix C.3 in the original GeDi paper (more specifically, I set topic={"Review Rating: 5.0": 1} and topic={"Review Rating: 1.0": 1} for positive sentiment and negative sentiment, respectively), but I got the same generation output for both these cases (command: text = gedi_skill_obj.generate_one_sentence(sentence=sentence, topic=topic)). Did I do something wrong? Advice appreciated! Thanks in advance!

Thank you for your thoughts! So sorry that I just realized you opened an issue here.
Yes, you are right! The framework should work on sentiment control "codes" too, given an appropriate control model, as the underlying process is not changed.
The reason why you see the generator giving the same sentence is a combination of two reasons: (1) The model does not know good enough how to extrapolate these "topics" (We also did experiments on zero-shot blending generation in-house, and observed similar problems as you described), and (2) You may need stronger control strength (pass extra_args = {"disc_weight":60} for 2x strength) before you can see a difference in generated sentences, as the control signal strength is not strong enough to override signals (logits) from the base model.
I'm currently looking into how these can be improved. Feel free to let me know if you have any more thoughts! :)


update LOGOS submodule to fix crash

Pull Request Description
What issue does this change request address? (Use "#" before the issue to link it, i.e., #42.)
Due to the upgrade of PYOMO, several tests of LOGOS failed. This PR will fix this problem. #1114
What are the significant changes in functionality due to this change request?

For Change Control Board: Change Request Review
The following review must be completed by an authorized member of the Change Control Board.

[ ] 1. Review all computer code.
[ ] 2. If any changes occur to the input syntax, there must be an accompanying change to the user manual and xsd schema. If the input syntax change deprecates existing input files, a conversion script needs to be added (see Conversion Scripts).
[ ] 3. Make sure the Python code and commenting standards are respected (camelBack, etc.) - See on the wiki for details.
[ ] 4. Automated Tests should pass, including run_tests, pylint, manual building and xsd tests. If there are changes to Simulation.py or JobHandler.py the qsub tests must pass.
[ ] 5. If significant functionality is added, there must  be tests added to check this. Tests should cover all possible options.  Multiple short tests are preferred over one large test. If new development on the internal JobHandler parallel system is performed, a cluster test must be added setting, in  XML block, the node <internalParallel> to True.
[ ] 6. If the change modifies or adds a requirement or a requirement based test case, the Change Control Board's Chair or designee also needs to approve the change.  The requirements and the requirements test shall be in sync.
[ ] 7. The merge request must reference an issue.  If the issue is closed, the issue close checklist shall be done.
[ ] 8. If an analytic test is changed/added is the the analytic documentation updated/added?
[ ] 9. If any test used as a basis for documentation examples (currently found in raven/tests/framework/user_guide and raven/docs/workshop) have been changed, the associated documentation must be reviewed and assured the text matches the example.

Job Mingw Test on 6e62318 : invalidated by @wangcj05
[Errno 13] Permission denied: 'C:\ProgramData\Miniconda3\envs\raven_libraries\vcruntime140.dll'

Job Mingw Test on 6e62318 : invalidated by @wangcj05
[Errno 13] Permission denied: 'C:\ProgramData\Miniconda3\envs\raven_libraries\vcruntime140.dll'

Job Mingw Test on 6e62318 : invalidated by @alfoa

Job Mingw Test on 6e62318 : invalidated by @alfoa

Job Mingw Test on 6e62318 : invalidated by @alfoa

Job Mingw Test on 6e62318 : invalidated by @alfoa

Job Mingw Test on 752843c : invalidated by @wangcj05
Catastrophic error while removing repository. Exiting...

@mandd This PR is ready for you to review.


upgrade to v12

Im not doing this myself aI say in the README. I am however happy to look at pull requests


Log message: No endpoints ruleset found for service s3, falling back to legacy endpoint routing.

import logging
logging.getLogger().setLevel(logging.INFO)
import ibm_boto3
from ibm_botocore.client import Config

cos_instance = ibm_boto3.resource(
    service_name="s3",
    ibm_api_key_id="*********",
    ibm_service_instance_id="***********",
    ibm_auth_endpoint="*********",
    config=Config(signature_version="oauth"),
    endpoint_url="********"
)

This code renders this log message with ibm-cos-sdk==2.13.1:
INFO:ibm_botocore.client:No endpoints ruleset found for service s3, falling back to legacy endpoint routing.
I didn't find any functional impact other than the message itself. If I switch back to 2.13.0, the message disappears. Should I update my code somehow or is it a bug?

Hello,
Thanks for pointing out the issue. We have seen this additional log message being printed after updating to the latest version of the python core package (2.13.1).
We are working on this issue internally and will come up with more updates.
However additionally our observation is, this log is only printed when using ibm_boto3.resources. With ibm_boto3.client the log will not be printed.(This is just a quick observation).
We will update with further details at the earliest.

Hello,
We have identified the root cause of the issue and we have fixed the same. However owing to the nature of the issue and its current impact, we will have this fix go in our next release cycle.
We will update you once this the new release is out.
Thanks

@zichd
We fixed the issue in version 2.13.2. Please verify once and close the ticket. Thanks

Closing as the issue has been fixed.


Display cached wallet info and balance upon open

When opening the extension, it takes a second or two until the current balance of the "active" wallet is fetched and displayed.
It would create a snappier UX if the wallet info was cached from the last fetch and immediatelly displayed and only when the new info is fetched again, the cached wallet info is overwritten and the display is updated.

done.


Scala docs

Hi,
I created Scala API examples pages - Model API, Symbolic API, IO Data Loading API, NDArray API, KVStore API. (exactly similar to Python, Didn't change lot of description). These small examples of how to use Scala API for MXNet will be helpful for lots of Scala and Spark developers.
Also fixed some of the not working urls in Python API pages.
Please let me know if I need to provide any more information.
Thanks,
Roshani

Oops. Merged too fast.
@javelinjs @Ldpe2G Please have a look

Good to me. Thanks Roshani.


 How would I go about using require to drop in d3-force-3d into the following code:
require.config({ paths:
    { d3: "https://d3js.org/d3.v5.min" } });

require(["d3"], function (d3) {

...

    var simulation = d3.forceSimulation(graph.nodes)
        .force("link", d3.forceLink(graph.links).distance(20).strength(.6))
        .force("charge", d3.forceManyBody().strength(-400))
        .force('centerX', d3.forceX(width / 2))
        .force('centerY', d3.forceY(height / 2))
        .on("tick", ticked);
...
});

@jorgens thanks for reaching out. I haven't specifically tested d3-force-3d with requireJS, but if it can work with d3-force as a stand-alone module, than it should work seamlessly with d3-force-3d.
I can imagine just replacing the d3 bundle (if you are using it solely for d3-force), with d3-force-3d, something like:
require(['//unpkg.com/d3-force-3d'], function(d3) { ... })

If you're using the 3D mode of it, you may need to import the d3-octree module as well.
Let me know if you can get it working!

@vasturiano sorry for the late reply and thanks for the pointers.
I ended up using ES6 and babel.js to get it working cleanly and handle the needed Micromodules. So now I just have something like:
import { forceSimulation, forceLink, forceManyBody, forceX, forceY, forceZ } from "../node_modules/d3-force-3d";
import { select, event } from "../node_modules/d3-selection"
import { drag } from "../node_modules/d3-drag"
import { zoom } from "../node_modules/d3-zoom"

...

let simulation = forceSimulation(graph.nodes)
    .force("link", forceLink(graph.links).distance(20).strength(.7))
    .force("charge", forceManyBody().strength(-400))
    .force('centerX', forceX(width / 2))
    .force('centerY', forceY(height / 2))
    .force('centerZ', forceZ(height / 2))
    .on("tick", ticked);

Thanks a lot for all your work!

Nice! Btw, quick tip, you don't need to specify node_modules in your imports. Just do import { ... } from 'd3-selection' should work. :)

Thx, indeed it does! :)


Use native R support of Travis CI

http://docs.travis-ci.com/user/languages/r/
https://github.com/craigcitro/r-travis/wiki/Porting-to-native-R-support-in-Travis

This will close #22.


Fix NSDate.endOf

NSDate.endOf method calls DateInRegion.startOf

:+1:

Please create a version to comply this because it is a critical bug!

3.0.2 release is now also available via CocoaPods


Add a feature save work/load work

Add a feature so that a login user cam save their work in provided database.
Furthermore this can also be linked to g-drive or github and stored there and when needed fetched from there.

fixed #32


Implement catalog scan

Fixes https://github.com/uwescience/myria/issues/747

@mbalazin @jingjingwang @senderista Who want's to review this PR?

Coverage increased (+0.25%) to 59.64% when pulling 6780c98e931686ad729ba0d7135f0a33010667c7 on catalog-scan into 3e9a40e1154d54a7a1c4db216b41be3312f67743 on master.

I could probably take a look tomorrow.
On Wed, Jun 3, 2015 at 10:40 PM, Dominik Moritz<EMAIL_ADDRESS>wrote:

@mbalazin https://github.com/mbalazin @jingjingwang
https://github.com/jingjingwang @senderista
https://github.com/senderista Who want's to review this PR?
—
Reply to this email directly or view it on GitHub
https://github.com/uwescience/myria/pull/751#issuecomment-108734091.

Coverage increased (+0.16%) to 59.54% when pulling 7d837b43222b1ceacc14f124d4ace17c15ee93c0 on catalog-scan into 3e9a40e1154d54a7a1c4db216b41be3312f67743 on master.

@senderista All done.


Swift 3 Conversion

Hey!
Wanted to tinker around with you Mandelbrot set - thanks for making it! This is an attempt to bring it up to Swift 3. It doesn't... "work", meaning the playground runs but the output looks nothing like a Mandelbrot set :).
Nonetheless, I've exhausted my (lack of) knowledge in Metal and pointer-based Swift.
Hopefully this is of some help.

¯\_(ツ)_/¯

Thanks, I'm really glad you've enjoyed the playground!
I'm not really sure about the UnsafePointer stuff either — I haven't used the new APIs yet. I'll tinker with it and see what I can do. It looks like Xcode's "Convert to latest Swift syntax" is working pretty well so far...

Hmmm, I actually can't reproduce that issue on my machine... it seems to work fine.

Ah yes I should have followed up. My issue reproduces on master/Xcode 7.3 so it's not related to the conversion. I use a 2013 Mac Pro, FWIW.
I have a recent iMac in the office - I'll see if it reproduces there.

Last update: I "quit a bunch of apps" and it started rendering properly.
Meh? ¯\_(ツ)_/¯

😳

I've just pushed an update, 6bae408fcfa08dee4440abed2b4d09bb5f3460a2, for Swift 3. Thanks for your help!


SSH.exe and ssh-keygen.exe seem to be missing in required directory

I went to settings -> commands, there're 4 fields, I specified paths for P2P command and others. When pressing OK button, it shows that there're 2 incorrect paths. When i check directories, it seems that ssh.exe and ssh-keygen.exe files are missing in required directories.

Fixed in Prod.


Help Needed

Hello Sir,
I am trying to implement SQRL on Ubuntu Server, but when I try to open your example webpage nothing loads. Can you please let me know under which directory each file and directory should be located?
Thank you in advance!

/var/www/html/
File needs to be owned by www-data to execute.
I assume you're using apache... and PHP?
Michael Munger, dCAP, MCPS, MCNPS, MBSS
High Powered Help, Inc.
Microsoft Certified Professional
Microsoft Certified Small Business Specialist
Digium Certified Asterisk Professional
<EMAIL_ADDRESS><EMAIL_ADDRESS>On 10/19/2017 12:47 PM, the-greeks wrote:

Hello Sir,
I am trying to implement SQRL on Ubuntu Server, but when I try to open
your example webpage nothing loads. Can you please let me know under
which directory each file and directory should be located?
Thank you in advance!
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/trianglman/sqrl/issues/18, or mute the thread
https://github.com/notifications/unsubscribe-auth/AGE1_mZBDf_hmXBmOa9I0D1Vl3t20PlFks5st30EgaJpZM4P_iD_.

That's correct Sir. I am using apache and PHP, all the projectbase folder is located in /var/www/html  and owned by www-data but when I am trying to load the page a blank page appears.

Post your apache conf files.
Michael Munger, dCAP, MCPS, MCNPS, MBSS
High Powered Help, Inc.
Microsoft Certified Professional
Microsoft Certified Small Business Specialist
Digium Certified Asterisk Professional
<EMAIL_ADDRESS><EMAIL_ADDRESS>On 10/19/2017 01:09 PM, the-greeks wrote:

That's correct Sir. I am using apache and PHP, all the projectbase
folder is located in /var/www/html and owned by www-data but when I am
trying to load the page a blank page appears.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/trianglman/sqrl/issues/18#issuecomment-337974279,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AGE1_l3hMexsrkaL2Pc9itXflYUeNLulks5st4I_gaJpZM4P_iD_.

More sites (drupal & joomla) are hosted on this web server in /var/www/html but they load correctly. So there shouldn't be a problem with apache. The whole projectbase should be under /var/www/html or some of the projectbase folders should be located in a different folder? I downloaded directly the source code in /var/www/html/projectbase.

Without code and confs, I can't help you.
Michael Munger, dCAP, MCPS, MCNPS, MBSS
High Powered Help, Inc.
Microsoft Certified Professional
Microsoft Certified Small Business Specialist
Digium Certified Asterisk Professional
<EMAIL_ADDRESS><EMAIL_ADDRESS>On 10/19/2017 01:16 PM, the-greeks wrote:

More sites (drupal & joomla) are hosted on this web server in
/var/www/html but they load correctly. So there shouldn't be a problem
with apache. The whole projectbase should be under /var/www/html or
some of the projectbase folders should be located in a different
folder? I downloaded directly the source code in
/var/www/html/projectbase.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/trianglman/sqrl/issues/18#issuecomment-337976101,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AGE1_tbmRNanTyll48LiPGpvDusaVcwJks5st4PYgaJpZM4P_iD_.

could this be closed @the-greeks, it is a local issue as said before, I hope you managed to get it setup.
please close this issue.


Fixup return statement asset inlining

This fixes up the asset emission case for return '/path/to/asset' inlining the whole return statement and dropping the return keyword.
This was also the root bug for the TypeScript build actually, we just avoided it by workaround the __dirname emission as in this test case, but this fixes the root cause too in case it comes up elsewhere.

Codecov Report

Merging #59 into master will decrease coverage by 0.02%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master      #59      +/-   ##
==========================================
- Coverage   76.25%   76.23%   -0.03%
==========================================
  Files          10       10
  Lines        1112     1111       -1
==========================================
- Hits          848      847       -1
  Misses        264      264

Impacted Files
Coverage Δ

src/utils/static-eval.js
72.04% <ø> (-0.11%)
:arrow_down:

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 fae8baa...198dc31. Read the comment docs.


ja: Make /docs/tasks/tools/install-kubectl/ follow v1.17 of the original text

Issue https://github.com/kubernetes/website/issues/21401
Appreciate your review!

Would be great if someone can review this at one's convenience🙏

/assign @ryokotmng

@ryokotmng You don't need to assign PR to yourself. Please assign only Issue.
For PR, you should assign one of reviewers following k8s-ci-robot suggestion.
https://github.com/kubernetes/website/pull/21405#issuecomment-636893709

Understood! Thank you for the advise🙇♂

/assign

@nasa9084 Thanks for your review! I fixed the wording as you kindly advise. Would be great if you could go through at your convenience:)

/approve

レビューありがとうございました！もうちょい注意しないとですね💦


Fixing github call for bot.

DO NOT MERGE (yet)

Is OK to review and merge now.

Are you sure that this Heroku thingy is reliable? What happens when it is down?

It won't report the gem status if is down. (e.g. no @hawkular-bot message).
If needed, I could change from heroku to somewhere else.

As for if its reliable. I can't guarantee that it won't be down, as I'm using a free account.


Not able to generate project using Tuist

I am new to Tuist and while following your tutorial, I am not able to generate Tuist project using tuist generate command. I am getting error as:

Resolved cache profile 'Development' from Tuist's defaults
No files found at: .../ios/twitter-clone/TwitterClone/Targets/Auth/Resources/**
No files found at: .../ios/twitter-clone/TwitterClone/Targets/Keychain/Resources/**
StreamChatSwiftUI is not a valid configured external dependency for platform ios

Is there any pre-configuration required in order to generate the project? I doubt that manifest file might need a fix. Thanks

Hi... Most likely you forgot to run tuist fetch could you try that before running tuist generate?

Thanks, it's working now!


[Minor] Update CONTRIBUTING.md

Description
a -> an
Checklist:

[ ] My PR title strictly follows the format: [Your Priority] Your Title
[ ] I have attached the testing log above
[ ] I provide enough comments to my code
[ ] I have changed documentations
[ ] I have added tests for my changes

Thanks!