Voting, Dissent, Delay interactions

A key aspect of the dandelion (and moloch) design is that we can guarantee that if someone votes yes on a proposal they are locked into the org (cannot exit) until that proposal is executed.
Our initial assumption was to use time to provide this guarantee. We would keep track of when a user votes yes on a proposal and restrict exit for some duration such that we have a reasonable expectation that the vote will be processed before they are able to exit again.
This works for the most part but there are a few edge cases that can come up that makes it both a bit more complex to explain and a bit fuzzy in terms of actual guarantees.
In the current design, we set the following related parameters in the Voting, Delay, and Dissent Oracle:

Vote buffer (determines how much time in blocks must pass between the start of each vote)
Vote duration (determines how long from the start of a vote till it ends, and can then be executed if its passed)
Delay duration (determines how long in block time from when an intent is passed to the delay app before it can be executed)
Dissent duration (determines number of blocks must have passed between when a user most recently voted yes on a proposal before they can perform an action such as redeem)

Their are two issues with this approach which we have discovered and need to determine how to resolve:

We cannot account for the time it takes for a transaction which executes a vote, or executes a delayed action to occur. This requires user action and could vary significantly.
We are mixing blocks and block time when using between the voting app, delay app, and dissent oracle. Meaning the setting and properties must be estimated since there is not necessarily a permanent or fully accurate translation between block time and block number.

We have a few potential proposed solutions that could address one or both of these issues...
Convert Delay app to block number
We could convert the delay app to use block number instead of block time, this poses a ux challenge because the radspec description would show the delay in terms of block number which is not really intuitive for users.
It would also not address the first issue, only the second.
Convert dissent oracle and voting to use block time
We could convert the voting app and dissent oracle to use block time instead of block number. The main challenge and reason we didn't do this originally is that since proposals are queued we do not necessarily know which block number to use for the vote snapshot (since we are not necessarily processing the transaction right when the vote starts).
It might be reasonable to take the snapshot at the time the first vote is cast, but this may be a bit confusing.
This also would only address the first issue
Remove the Delay app and add Delay period to the voting app, ensure proposals are executed in sequence.
This would solve both the first and the second issue and is probably the cleanest solution. The Delay app may still be useful outside of the dandelion org template, so we should still publish it, but it wouldn't be used in the dandelion org template.
By combining the delay and voting app into a single app we can also simplify and improve how we handle dissent. Rather than keeping track of dissent based on time, we can use proposal number like in moloch, so when a user votes yes we on a proposal we keep track of the "highest" proposal index they have voted yes in.
We then ensure that proposals must be processed/executed in sequence, lowest to highest. The dissent oracle can evaluate if the current proposal index (yet to be processed) > the users highest index value they voted yes on.

My preference is to go with the approach of removing the delay app, adding a delay period to the voting app, and adjusting the dissent oracle logic such that it is based on proposal indexes rather than blocks/time.

I lean towards the same approach. Seems the least cumbersome and simplest
Contract side we would have to add

canPerform oracle function

additional delay period (should it be able to be changed?)

index that tracks the last executed vote

additional delay period (should it be able to be changed?)

I think its reasonable for this to be changeable

index that tracks the last executed vote

We can probably replace the current time snapshot and data structure since it wount be used any longer.

Change logic for when a vote can be executed

is this related to this issue specifically or #20 ?
A few other changes this would impact, on the frontend we wouldn't need the last time yes voted, this would simply be implicit based on vote cards.
We would need to update the onboarding and template a bit (to remove delay, and add the delay param to the voting screen, and remove the dissent oracle from the template if we include that check in the voting app itself, update the permissions appropriately).

is this related to this issue specifically or #20 ?

Related to this issue specifically, we would also have to add the logic for canVote function to reflect #20 (will update the list)

The third solution seems a good idea to me. TBH I overlooked that the purpose of the delay app was to delay executing votes (eg I didn't put a permission on the executeVote() function in the Dandelion Voting app function, oops...).

The dissent oracle can evaluate if the current proposal index (yet to be processed) > the users highest index value they voted yes on.

 And if so, how long after it has been executed could they then call redeem()? Presumably this would be configurable.

We then ensure that proposals must be processed/executed in sequence, lowest to highest.

This can be added as it is.

The third solution seems a good idea to me. TBH I overlooked that the purpose of the delay app was to delay executing votes (eg I didn't put a permission on the executeVote() function in the Dandelion Voting app function, oops...).

I think that's actually okay (though if we go with the suggested approach and remove delay its not actually so relevant anymore 😅), its fine if that is open because the votes would only ever be passing to the delay app. (since all permissions for doing anything are granted to the delay app and not the voting app directly).

 And if so, should they be able to call redeem() as soon as the proposal has been executed? And does it matter if the voteBuffer is very small, eg a user could vote yes on many votes, but then create a vote on which they don't vote so they can call redeem()?

Correct, the dissent oracle would not consider time at all and instead operate under the assumption that proposals are "processed" in order and that we keep track of the highest index number an individual has voted yes on.
When a user votes yes we check if the proposal they are voting on has a higher index number than what is currently stored for them. (Bob votes yes on proposal # 2, we update the value for bob to 2, he then votes yes on proposal # 1, we leave the value as 2, he then votes yes on proposal # 3, we update the value to 3).
In the dissent oracle, we simply check the value for the user and validate that that proposal has either been executed or failed to pass. (Bob tries to redeem, the dissent oracle see the the index value of the vote Bob last voted yes in is 3, it checks the status of vote # 3 and if it has already be executed, or if it failed then the dissent oracle returns true for canPerform).
This process is much closer to how Moloch DAO proposals/ragequit work which will make comparisons much simpler. It may be useful to cross reference the castvote and ragequit flows here: https://github.com/MolochVentures/moloch

This can be added as it is.

Cool, how exactly?

This can be added as it is.

Cool, how exactly?

Because we already store the vote ID's, which are created in the sequence of vote creation, so we can easily ensure proposals are executed in order.
To clarify the Dandelion Voting app should now:

Implement the ACLOracle contract, using the latest voteId instead of time to determine if the user can perform a function.
Include a modifiable delay period which specifies the delay between when a vote finishes and when it can be executed.
Ensure votes are executed in order of creation.
Use the lowest of 'snapshot vote token balance' and 'current vote token balance' as a voters vote weight.

I'll start working on the above but tell me if there's anything else.

@willjgriff This sounds accurate to me.
One possible nuance, if a vote is rejected, it should be possible for someone who voted yes on that to exit after the vote has been rejected but before the delay period has elapsed. I think this would only impact the logic in the ACLOracle canPerform function.


[improve][build] Bump version to 3.3.0-SNAPSHOT

Motivation
branch-3.2 has been split from master branch and now master branch development is for 3.3.0-SNAPSHOT.
Modifications

set project version to 3.3.0-SNAPSHOT

Documentation

[ ] doc
[ ] doc-required
[x] doc-not-needed
[ ] doc-complete

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Comparison is base (8ff32db) 73.63% compared to head (214c0b8) 73.56%.

Additional details and impacted files

@@             Coverage Diff              @@
##             master   #21818      +/-   ##
============================================
- Coverage     73.63%   73.56%   -0.08%
+ Complexity    32288    32272      -16
============================================
  Files          1858     1858
  Lines        138098   138098
  Branches      15135    15135
============================================
- Hits         101688   101591      -97
- Misses        28552    28642      +90
- Partials       7858     7865       +7

Flag
Coverage Δ

inttests
24.17% <ø> (-0.09%)
:arrow_down:

systests
23.68% <ø> (-0.05%)
:arrow_down:

unittests
72.86% <ø> (-0.04%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.
see 62 files with indirect coverage changes


Internationalization

I tried, but got this:

how to change language to English?
Thanks in advance.

fixed it:
import enUS from 'antd/locale/en_US';

still need more work:

still need more work: "Add a row of data" clicked more than once. non English characters appears.

thanks a lot! its useful ,  push in my TODO list
there is lot of english and chinese word in my code. its time to tidy up


Fix typo compitability-> compatibility

Fix typo compitability -> compatibility
Context
Changes proposed in this pull request
Fix typo.
Guidance to review

Thanks @drndos 👍


Slider in initially hidden tabs

Hi. When using vue-slider-component in initially hidden bootstrap tab when switching tabs, sliders are being drawn incorrect. I could manually refresh sliders on click event but I have a lot of them.
What could be done in such situation the best?

Have you fixed it? Can you please tell me how you did it?

                    Text

                    Text

        <template v-if="tabs['first']">
            ......her goes you tab content with sliders
        </template>

        <template v-if="tabs['second']">
            ......her goes you tab content with sliders
        </template>

export default{
        data() {
            return {
                tabs: {
                    first: false,
                    second: false
                }
            }
        },
        mounted(){
              let vm = this;
              $(document).on('shown.bs.tab', '#tab-id a[data-toggle="tab"]', function(){
                  vm.tabs[$(this).attr('href').slice(1)] = true;
              })
        }
 }

This is only example. You can implement it however you want. The idea is to render content of tab when the tab is shown


ChangeNotifierProvider clarification

I was reading the ChangeNotifierProvider documentation and I found out the following note:

Note: By using Riverpod, ChangeNotifier will no-longer be O(N^2) for dispatching notifications and O(N) for adding/removing listeners.

Could you maybe specify something more about that statement? Is it better by using Riverpod, worse, or?

Fair.
It's becoming O(N) for dispatching and O(1) for adding/removing listeners — which is better

That makes me wonder if you are still using Flutter's ChangeNotifier when extending a model class or if Riverpod provides its own one that you should import instead.

I'm promoting the usage of StateNotifier instead.

Yeah, I was in fact reading the following [article] (https://medium.com/flutter-community/upgrading-from-changenotifier-effd16fed1a6).
As I see it, Freezed is a perfect helper for StateNotifier, as you can now create proper events for the UI using unions. However, I haven't find myself more articles / tutorials about StateNotifier and its uses / advantages.
The problem I see for the migration is that StateNotifier logic differs from ChangeNotifier, as instead of declaring "complex" classes and handling the state there, you are now splitting the information into several pieces, as it based on the ValueNotifier idea.
Just as an example, I was taking a look at the StateProvider doxumentation code. If using a ChangeNotifier class, I would have declared both "selectedProductIdP" and "Products" directly there. However, as it now uses StateNotifier, it is split in two different providers now. I guess you could still create a class having these two elements and then override the equals method or use the equatable library, but I don't think that would be a good solution. What I mean is that it was not trivial for me how to handle these situations at first.
Furthermore, if you also include Freezed to the mix, using inmutable data is also a game-changer in how you think about the data and how you organize your code. I would really love to have more examples showing how to change your way of thinking when developing applications with these new solutions.

The examples in the example folder all uses StateNotifier.
Is there anything missing that you would like to be added?

I will take a deep look to them and open a new issue if I miss anything. Thanks!

I'm not clear how to use StateNotifier is supposed to work with the common use case of having a composite model and the filtering on specific properties. Is there an example that shows that?

@esDotDev The to-do example uses StateNotifer

Yes but it still seems to only support dispatching one type of payload. My models look more like this:
class CounterModel extends ChangeNotifier {

  int get count1 => _count1;
  int _count1;
  set count1(int count1) {
    _count1 = count1;
   notifyListeners();
  }

  int get count2 => _count2;
  int _count2;
  set count2(int count2) {
    _count2 = count2;
   notifyListeners();
  }
}

I know I could do it with ChangeNotifierProvider, trying to understand the State equivalent.

Oh my... that is pretty :D

For some reason StateNotifier class does not exist, so I don't know how to implement the code snippet shown here:

Just a comment on the docs in general is I find they just skip over the basics of how to use it, it presents an extremely simple use case (basic change notifier), and then jumps right into advanced use cases that start mixing hooks.
Would be nice to slow down a bit and just explain, here's how you watch, here's how you select, here's how you read. Here's a few flavors of each. Then go onto more complex stuff?

You need to import package:state_notifier
I may re-export it in Riverpod at some point. I'm not sure
Do you mind making a separate issue about the issues you found with the documentation?
I wrote both the package and the doc, so it's hard for me to know what people do not understand

Sure thing, will do, thanks for the quick response as always :)

https://github.com/rrousselGit/river_pod/issues/130


Define basic interfaces for the store

We will need to have a store implementation to keep track of the signatures for the orchestrators and relayers.
Thus, we can start first by defining the following interfaces:

Store: which will define the low level interactions
Store loader: which will define more high level queries and results

The store interface can be the same as the QGB ingestion store.
The loader can be similar to QGB querier but without the rpc related methods, as those are not related to the store.

As a second thought, I guess that the store can wait until we have a working P2P network.
The reason being is it would be easier to implement a simple query service that queries the P2P network for confirms. Instead of having to fill the store with the signatures when the orchestrator/relayer start + all the implementation details that come with it.

We can investigate using badger v2 as a storage backend when defining our P2P block store. Badger2 is simple, easy to use and would allow us to have a ready to use store that would (hopefuly) serve all our needs.

Closed in favor of https://github.com/celestiaorg/orchestrator-relayer/issues/91


'createUnityInstance' is not defined

so I made a reactproject and started it with npm. This is my app.js file:
import React, { Component }  from 'react';
import logo from './logo.svg';
import './App.css';
import Unity, { UnityContext } from "./package";
import global from './package';

const unityContext = new UnityContext({
  loaderUrl: "build/myunityapp.loader.js",
  dataUrl: "build/myunityapp.data",
  frameworkUrl: "build/myunityapp.framework.js",
  codeUrl: "build/myunityapp.wasm",
});

function App() {
  return (

test

  );
}

export default App;

(the 'package' is the folder of react-unity-webgl)
it catches an error from line 152 of unity.js which is:
return [4 /*yield*/, createUnityInstance(this.htmlCanvasElementReference, _unityInstanceParameters, this.onProgress.bind(this))];
it says that 'createUnityInstance' is not a defined function.
this function is declared in 'typings/global.d.ts'. this file contains:

import { IUnityInstanceParameters } from "../source/interfaces/unity-instance-parameters";

declare global {
  var ReactUnityWebGL: {
    [eventName: string]: Function;
  };

  function createUnityInstance(
    canvasHtmlElement: HTMLCanvasElement,
    parameters: IUnityInstanceParameters,
    onProgress?: (progression: number) => void
  ): Promise < UnityInstance > ;
}

any idea on what should I do?

Hi, sorry for my late response. I've haven't been able to check or here recently.
Thanks for opening an issue. In the case you haven't solved your problem yet, there are two possible causes for this problem. There might be a version mis-match between the installed version of the React Unity WebGL module and your Unity version. Or there is a problem where the Loader JS file could not be found.
Can you confirm both of these problems are not present? Thanks!


Fixes Sign out from Simulator

Fixes #1124
Describe the changes you have made in this PR -
The sign out from simulator is now working.
Screenshots of the changes (If any) -

Coverage remained the same at 84.266% when pulling f4a2c3acfef19297fce60260951d06fe25d272e8 on Shivansh2407:patch-32 into c570b47d12ca5e8aae56bd74e670ebf6c9e34eb0 on CircuitVerse:master.

@satu0king , @tachyons , @nitin10s Please review 👍

Furthermore some things that need to be fixed along with this are :

The Dropdown must be more towards the left .
Currently it looks like it is going out of the screen. See Screenshot below.

When the User is on Simulator Page and then clicks on sign in then after signing in , the user remains on the main page and is not redirected back to the Simulator .

I would like to know your views on this @satu0king , @tachyons , @nitin10s .

@satu0king Please review and Merge this PR 👍

@tachyons I have removed jquery_ujs and tree . . It is working fine . Please review 👍


perf: avoid rebuilding already scrutinised values

Contributes to #3951, covering simple special cases.
To keep this limited in scope, I have refrained from re-using scrutinees in sub-contexts. To make that happen one would need the environment to carry the substitution actions and correctly handle shadowing of variables (e.g. by killing the affected substitutions from the environment before descending into the tainted scopes).

TODO:

[x] can we get rid of the cast under certain conditions? We can, sometimes, see f09bac6766d0dbb0538a92928e18d04d79d44026.
[x] (SwitchE (VarE foo) ... case (TagP t (VarP o)) (TagE t (VarE o))) --> (SwitchE (VarE foo) ... case (TagP t WildP) (VarE foo))
[x] (SwitchE (VarE foo) ... case (VarP o) (VarE o)) --> (SwitchE (VarE foo) ... case WildP (VarE foo))
[x] FileCheck
[ ] case (#none) #none and case () ()

So far the results are promising!
Compared as
$ ./compare-wat.sh -f origin/master -t HEAD run/recombine.mo
Building old moc (rev ae7dd1da1af2999ed4fbf8cbda8c4c7ca53a7991)..
Building new moc (rev 2c010175b69fb6efcf8fa0bc7394fb690b5233d8)..
Binary files compare-out/recombine.old/recombine.wasm and compare-out/recombine.new/recombine.wasm differ
diff -r -N -u10 compare-out/recombine.old/recombine.wat compare-out/recombine.new/recombine.wat
--- compare-out/recombine.old/recombine.wat	2023-04-28 22:05:27.097985602 +0200
+++ compare-out/recombine.new/recombine.wat	2023-04-28 22:05:27.248967448 +0200

we have eliminated locals and a bunch of instructions, as well as removed all consing:
   (func $matchX (type 14) (param $clos i32) (param $foo i32) (result i32)
-    (local $switch_in i32) (local $n i32) (local $tag_scrut i32) (local $heap_object i32) (local $o i32)
+    (local $switch_in i32) (local $tag_scrut i32)
     local.get $foo
     local.set $switch_in
     block (result i32)  ;; label = @1
       block (result i32)  ;; label = @2
         local.get $switch_in
         local.tee $tag_scrut
         i32.load offset=5
         i32.const 5097222
         i32.eq
         if  ;; label = @3
-          local.get $tag_scrut
-          i32.load offset=9
-          local.set $n
         else
           i32.const 0
           br 1 (;@2;)
         end
-        i32.const 3
-        call $alloc_words
-        local.tee $heap_object
-        i32.const 15
-        i32.store offset=1
-        local.get $heap_object
-        i32.const 5097222
-        i32.store offset=5
-        local.get $heap_object
-        local.get $n
-        i32.store offset=9
-        local.get $heap_object
+        local.get $foo
         br 1 (;@1;)
       end
       if  ;; label = @2
       else
-        local.get $switch_in
-        local.tee $o
+        local.get $foo
         br 1 (;@1;)
       end
       unreachable
     end)

@nomeata local.tee $tag_scrut appears totally redundant as it never gets read again :-)
Hopefully wasm-opt removes it just like $switch_in, which is basically just $foo. @kentosugama can you confirm? (I am happy to send you the wasm.)

In Trie.mo there is code like this:
    switch (left, right) {
      case (#empty, #empty) {
        #empty
      };
      case (#leaf(leftLeaf), #empty) {
        #leaf(leftLeaf)
      };
      case (#empty, #leaf(rightLeaf)) {
        #leaf(rightLeaf)
      };

I have manually rewritten it in https://github.com/dfinity/motoko-base/pull/563/commits/c65868b5ecdfd7ec534de6235bd9f47534a220b7, but obviously the compiler could do the same thing. The complication is that the variant match is not at toplevel.

Random thought... The Wasm backend (compile.ml) introduces a lot of local variables while doing the pattern match. These could be reused, but it is probably an order of magnitude more complicated, so probably not worth it.

The backend is written under the assumption that locals are very cheap. If that doesn't hold anymore the pattern match code wouldn't be my first worry… :-)

Oh, by "reused" I meant returning (instead of reconstructing values) one of those Wasm locals that arise while pattern matching (as opposed to user-written Motoko locals).

The backend is written under the assumption that locals are very cheap. If that doesn't hold anymore the pattern match code wouldn't be my first worry… :-)

I fear that's actually not true, because the replica disables all optimizations. ic-wasm's wasm-opt step mitigates this, at the cost of a large untrusted optimizer....

Too bad. We need to support more targets then to be able to justify out design post-hoc.
The other reasoning is that we optimize for cycle consumption (and size), not speed, and at least so far locals are cheap in that way.

Now that we have a dao performance check, it turns out that this transform has teeth!

Just doing some repo cleanup for better focussing on active work:
Closing PR as it seems inactive for a longer time. Please re-open if it is still relevant and after it has been updated with latest master changes.


[Jenkins] Request to set the number of executors on the build-in node to 0

Building on the built-in node can be a security issue. You should set the number of executors on the built-in node to 0. See the documentation.
/good-first-issue

Hey, can I work on this?

 I don't see a Jenkinsfile in this repo either.

I guess you probably need to install it by yourself.

I do have Jenkins and Helm installed. How can I build/view this project on Jenkins?

You can use the following helm repo:
helm repo add ks-devops https://kubesphere-sigs.github.io/ks-devops-helm-chart/

I think this issue might be resolved by #52, please help to see if it is correct. @kubesphere-sigs/sig-devops

hi @JohnNiang , thanks for your reminder.
/close


Add MET/METplus Variables to modulefiles

Is your feature request related to a problem? Please describe.
Recently, the SRW App changed the way it runs the verification tests by loading the MET/METplus modules versus declaring MET/METplus paths in the experiment. Because of this change, a few MET/METplus variables need to be added to their lua files in order for these tests to run.
Describe the solution you'd like
To resolve this issue, we would need to add these missing variables to their lua files. Please see the code block below for the requested changes needed in https://github.com/JCSDA/spack-stack/blob/release/1.4.1/configs/common/modules.yaml
met:
  environment:
     set:
       'MET_INSTALL_DIR': '{prefix}'
       'MET_BASE': '{prefix}/share/met'
metplus:
  environment:
     set:
       'METPLUS_PATH': '{prefix}'

Additional context
The upcoming SRW App release will be using the spack-stack-1.4.1 and will support the MET/METplus tests. Meaning we would like to add these changes to the spack-stack-1.4.1, if possible. If not, we can manually add these variables. But regardless we would like to have these changes in the develop branch before the next spack-stack release.

We had an extensive discussion on which variables are needed and should be set by spack-stack just a few weeks ago. It was decided that what is in spack-stack now is sufficient.  But maybe that's no longer the case?
See https://github.com/JCSDA/spack-stack/issues/757
Adding @AlexanderRichert-NOAA and @ulmononian .

Thank you for bringing this previous discussion to my attention. I'll use the suggestion mentioned in it (exporting the *_ROOT variables) as a solution since we need this change in for the upcoming SRW App release.
The best I can tell is that these variables are used in running the METplus wrapper scripts. It is used by all of the MET packages. So if users aren't using the wrapper scripts there is no need for these variables. Therefore, I'd leave these variables out of their respective lua files for now.

Thanks @EdwardSnyder-NOAA ! The less customization we put into the spack-stack code the better. I'll close this issue.


Add Github Repositories with useful React resources and tools

Is your feature request related to a problem? Please describe.
There is no React JS section and resources
Describe the solution you'd like

Add a Rect JS section, you can check the format in the readme file.
Then add a few Github repositories with awesome and useful React JS resources and tools
Format [title] (URL) - Description of what the Github repository entails.

Describe alternatives you've considered
There are no alternatives
Additional context
N/A

I will love to add some useful React Resources 😀

Sure 👍🏽

The readme already has awesome-react repo linked in react js section right, what more are we looking to add in there? more repos?

@AdityaPrasad275, there are a lot of react repos to be added that aren't included yet. There is other sections that also have few resources.

@muchirijane I would like to add more resources here

@TaylorDJones11, sure go ahead minimum 3 resources. 😊


Add support for OSX build.

Checklist

[X] Used a personal fork of the feedstock to propose changes
[X] Bumped the build number (if the version is unchanged)
[X] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[X] Ensured the license file is being packaged.

Hi! This is the friendly automated conda-forge-linting service.
I wanted to let you know that I linted all conda-recipes in your PR (recipe) and found some lint.
Here's what I've got...
For recipe:

Selectors are suggested to take a <two spaces>#<one space>[<expression>] form. See lines [13, 19, 23, 28, 32, 37]

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.


Introduce C# driver without deployment

Usage and product changes
We introduce the C# driver for TypeDB. It is built using the cross-platform .NET 6 framework.
Usage: Deployment and usage examples will be provided in a separate pull request. Current state of the code lets you compiling the driver + writing and running behaviour and integration tests for it.
The driver is expected to be a Nuget package, which could be added as a dependency to a project and referenced via "using" statements inside the users' code for all platforms.
Architecture: The C# driver is a thin wrapper around the TypeDB Rust driver, introducing classes for a more intuitive interface. Mostly each C# object holds a reference to the corresponding native Rust object, using an FFI (SWIG for C#) for the native object wrappers generation and resource management.
Any error encountered will throw a TypeDBDriverException. Note that methods which return an IEnumerable or a Promise and encounter a server-side error will only throw when the return objects are evaluated (e.g. iterate over or call a Linq method for an IEnumerable and call Resolve() for a Promise).
A simple usage example (more to come after the integration tests are finished in another PR):
ITypeDBDriver driver = TypeDB.CoreDriver(TypeDB.DEFAULT_ADDRESS);

string dbName = "mydb";
driver.Databases().Create(dbName);
IDatabase mydb = driver.Databases().Get(dbName);
System.Console.WriteLine(mydb.Name);

using (ITypeDBSession schemaSession = driver.Session(dbName, SessionType.SCHEMA))
{
    using (ITypeDBTransaction writeTransaction = schemaSession.Transaction(TransactionType.WRITE))
    {
        string defineQuery = "...some define query...";
        writeTransaction.Query.Define(defineQuery).Resolve(); // Can throw exceptions, so could be wrapped in try-catch!
        writeTransaction.Commit();
    }
}

mydb.Delete();

Implementation
Driver:
Introduces the C# driver, wrapping the C-native classes produced by Rust driver using SWIG. The driver aims to provide a familiar interface for C# developers, hiding data transformations and native calls under the hood.
The code's architecture and build flow follow the one from Java with small C#-specific alterations.
The corresponding dependencies PR is here.
Tests:
Integration tests use NUnit framework as a built-in framework for C# bazel test rules (more to come in another PR, right now these tests are messy).
Behaviour tests use Xunit.Gherkin.Quick framework and are implemented using partial classes for flexible construction of tests based on different sets of step declaration files.

Self review incoming in several hours.

A quick comment about Naming
A typical class's signature is:
class ClassName
{
    private int _privateField;
    public int PublicField;

    void MethodName(int argumentName)
    {
        ...
    }
}

C# identifier names coding conventions
C# common code conventions
Exception:  we decided to mark public constants LIKE_THIS, because the rules from the Microsoft docs were not clear... Maybe we'll come up with something within this review.
Namespaces and directories:
I try to follow what Microsoft says, considering Haikal's recent comment: "Please don't ever spell it Typedb":
C# Names of Namespaces
After viewing some of the open-source C# projects, we came up with naming everything starting with an Uppercase char and declaring one namespace per library (Api, Common, Concept, Connection, ...). The last rule is broken in Behaviour/Utils, but I'll additionally comment it inside the code.

Going to add the build steps for C# to automation.yml and fix the build tomorrow.


perf: directly pass an async iterable to the fetch body

Deno supports sending async iterables. We should investigate which runtimes support this and then save the useless conversion step to web streams.

This isn't following the fetch spec, though. Should we still go ahead?

There isn't really a bug enough advantage for this in order for us to break the spec.


resolve #452 (do not prompt on relabel)

Found a related buried bug that had been here for awhile...thinking.


Persist ipv4 and ipv6 iptables rules

Fix for iptables rules not persisting as Identified and reported by @estenrye in #9
Addition of a task to run with ipv6 drop rules when ipv6 is not required ( ubuntu_2004_cis_require_ipv6: false ) and firewall is set to be iptables ( ubuntu_2004_cis_firewall: iptables ).

lgtm


OSX fix custom service 128 bit UUID to 16 bit

So  currently OSX when it doesn't understand service UUID, such as FIDO custom uuid is fffd, it returns full 128 bit UUID(0000fffd00001000800000805f9b34fb). However on windows it always returns 16bit UUID i.e fffd
This change fixes OSX bindings to ensure that for any service, 16bit UUID is always returned.

P.S. I think you guys need to remove tests for node 0.8 as TLS directory for it long expired


When using join() all columns should be in master method [get()]

As of commit 419675e25e9e82c0f2def77cd87f315f819b6b97, which fixs issue #3, you can not do the following without throwing an error:
$users = $db->get('posts', ['posts.id', 'posts.title', 'users.username'])
            ->join('users')
            ->on('posts.author', '=', 'users.id')
            ->exec();

Instead you must do:
$users = $db->get('posts', ['posts.id', 'posts.title'])
            ->join('users', ['users.username'])
            ->on('posts.author', '=', 'users.id')
            ->exec();

This is because the method _stringWrapper() checks for currently valid tables, if you search for the column users.username before including the table users with join() it fails.
Two options:

Don't fix, call it a "feature"
Create an outer class around \Trestle\blueprints\MySQL that collects all the information then passes it into \Trestle\blueprints\MySQL.

Option 2 proposal:
\Trestle\Wireframe --> \Trestle\blueprints\MySQL --> \Trestle\Engineer
 ^ Collects data        ^ Formats data                ^ Executes data
   & validates

This needs more thought put into it so total code amount stays low. Trying to keep this as small as possible. This might also reduce total code when other database schemas are introduced.

What I personally like to do is create an array with all the fields.
$fields = [
    'users.id',
    'users.username',
    'articles.title',
    'article.body'
];
```

That would mean that I would have to split it in multiple arrays, which is not preferable.

If you want to do that anyway, can't you drop "`TABLE_NAME.`" and let Trestle handle it?

This would be awesome and what I would also prefer:
$users = $db->get(['users.id', 'users.username', 'articles.title', 'article.body'])
            ....
            ->exec();

But what if the column name is users.id, even as dumb as it is to have a dot in the column name....
As much as I don't want to do it, it might be better to just forget compensating for it and say if you use a dot in the column name just use the raw query() method.
If we did the above it would also slim down join() code to:
$users = $db->get(['users.id', 'users.username', 'articles.title', 'article.body'])
            ->join('articles.author', '=', 'users.id')
            ->exec();

Since we could parse it by splinting the dot and load the users and articles just by the column name. If we don't do joins you could also do the following since it does not detect a dot.
$users = $db->get('users', ['id', 'username'])
            ->exec();

What are your opinions on taking this stance @pedzed, talking about parsing tables using the dot and forcing users to user query() if it has it?

If we did the above it would also slim down join() code to:

$users = $db->get(['users.id', 'users.username', 'articles.title', 'article.body'])
->join('articles.author', '=', 'users.id')
->exec();
> Since we could parse it by splinting the dot and load the users and articles just by the column name. If we don't do joins you could also do the following since it does not detect a dot.
>
> ```php
// Can still do this:
$users = $db->get('users', ['id', 'username'])
            ->exec();
// This still works:
$users = $db->get(['users.id', 'users.username'])
            ->exec();

Yes, they both look good to me. Remember that it can't be perfect. If it is clearly understandable, easy to type and easy to remember it's good to me. Your examples just accomplish that.
I'm more worried about other type of joins. It would be great if INNER JOIN, LEFT JOIN and RIGHT JOIN worked. I don't expect to see other joins as it could get really complex, but thinking about a possibility in the future would prevent backward compatibility issues.


Facebook

At the moment you can search for feeds only in specific account, it is possible (as the FB site) always try via hashtag but all over facebook, a global search?

searching by #hasthtags i think is not possible by API.
https://developers.facebook.com/docs/graph-api/using-graph-api/v1.0#searchtypes
i've seen people find a workaround time ago using %23 instead of # but i'm not sure is working today
you can try yourself using this syntax:
https://graph.facebook.com/search?q=%23YOU-HASH-VALUE&limit=10000&access_token=YOUR-ACCESS-TOKEN
I think is deprecated and not works anymore.

Perfect! Thanks a lot for the answer.


Comparing password fields

I am using class-validator to validate my incoming requests in an express application and I am very happy with it.
Currently I am implementing a registration service, my request has two password fields, password and password2. I would like to compare them to each other but it seems that this functionality is lacking in class-validator.
Is class-validator able to handle this scenario already or is this a feature request?

Using Custom validation classes and Custom validation decorators you can create a complex validations like in your case

I had the opinion that this solutions are only suited for validation single fields, not for comparing two fields.

no its totally possible to implement. Take a look on this example it does exactly what you want - make comparasion on a different property of the same object.

IsLongerThan looks promising, I will try that.
Thanks for your work!
Regards, Christian

Unfortunately this code doesn't compile.
error TS2345: Argument of type '{ constraints: string[]; options: ValidationOptions | undefined; propertyName: string; target: Fu...' is not assignable to parameter of type 'ValidationDecoratorOptions'.
  Types of property 'options' are incompatible.
    Type 'ValidationOptions | undefined' is not assignable to type 'ValidatorOptions'.
      Type 'undefined' is not assignable to type 'ValidatorOptions'.

The version of typescript is
"typescript": "2.1.4",


Replace synchronization primitives with those from parking_lot

Rendered

Just as a first comment, I'm not sure how the parking_lot primitives can be adopted in favor of the current standard library primitives without violation of Rust's stability guarantees.

If this can be done in a way that is compatible, I would absolutely love to do this.

Just as a first comment, I'm not sure how the parking_lot primitives can be adopted in favor of the current standard library primitives without violation of Rust's stability guarantees.

As mentioned in the RFC, the parking_lot primitives have the same API as the standard ones, so there is no compatibility issue if we replace one with the other.

I expected to see benchmarks on all tier 1 and at least some tier 2 platforms included into the RFC text as the reason to/not to accept the RFC.

@nagisa I added some benchmark results for Linux and Windows. Unfortunately I don't have any other platforms to test on.

I seem to recall from the Webkit article that the parking-lot-style locks are not entirely fair. While I also recall good reasons why this isn't so bad, I would expect that it (as well as any other downsides that may exist — for example does the crate leak memory as Webkit does?) are honestly discussed in the RFC text.

I personally haven’t came across a single case where entirely-fair locks were necessary or even desirable. Is there one? I don’t recall us ever guaranteeing this for any locking mechanism in the standard library so far.
Either way, from the same webkit blog post it seems like making locks fair is also an option.

I'm not particularly keen on fair locks either (then again, I'm not really qualified to judge anyway). I just want all the differences, including the ones that may be irrelevant or drawbacks, documented in the RFC to make it easier to form an opinion without scavenging N articles across the internet. In particular if there are so many minor design decisions where parking_lot may differ from Webkit's implementation.

Neither pthread mutexes or Windows SRWLOCK make any fairness guarantees, so there is no difference here.

👍 needing an allocation for each mutex is awful.

The rfc does not mention, that Mutex doesn't get poisoned anymore when the thread panics. This can probably be abused to exhibit UB and definitely changes UX

I have poisoning support for parking_lot in a branch, and this is the version that would be integrated into the standard library.
I don't plan on adding poisoning support to the parking_lot crate itself because poisoning has a significant performance cost and I feel that it makes the API uglier. By the way, lack of poisoning doesn't make anything unsafe, it just means that user code needs to be aware that locked data may be left in an inconsistent (but safe) state after a panic. This is why AssertUnwindSafe does not require unsafe.

As an example, on AArch64, adding support for poisoning makes Mutex 70% slower. Most of this overhead comes from the need to call std::thread::panicking which in turn accesses TLS.

Is it possible to turn off poisoning when we are linking to the abort panic runtime?

Abort still runs various handlers before actually quitting process, therefore all data behind mutex that may be accessed there should also be poisoned.

@nagisa It only runs the panic hook, nothing else.

So, it should be possible (abort doesn't call destructors anyways).

You may have mutexes in statics and the panic hook may run arbitrary code.

@nagisa With panic = abort a mutex can never become poisoned because that is done in the destructor of MutexGuard, which will poison the mutex if the current thread is unwinding due to a panic.

@nagisa The point is that the inner value cannot become poisoned because the destructor won't be called.

One thing I feel is worth noting - this lock is a traditional test-and-compare-and-swap lock, which a type which degrades badly as cores increase due to cache-coherency traffic[1]. This can be somewhat ameliorated by adding exponential backoff, but the worst case is actually unaffected by that. In the worst-case, where lock hold time is short and core count is above a (realistically reachable) threshold, TACAS locks suffer catastrophic throughput failure[2] compared to MCS, CLH, or other "scalable" locks.
[1] http://citeseerx.ist.psu.edu/viewdoc/download?doi=<IP_ADDRESS>.8168&rep=rep1&type=pdf
[2] https://pdos.csail.mit.edu/papers/linux:lock.pdf

@eternaleye WordLock uses the same basic algorithm as Mutex, which is to spin a few times trying to acquire the lock (with exponential backoff) but then fall back to adding the thread to a queue so that it is woken up later.

@Amanieu: Ah, had missed the backoff. However, I do strongly suggest reading my second link - it shows catastrophic throughput loss for the ticket spinlocks in the Linux kernel of the time, and compares against their MCS lock implementations patched into Linux.

@eternaleye
One big assumption that this paper makes is that all "threads" are always running and never scheduled out. This is a perfectly fine assumption to make in the context of a kernel where a "thread" is a raw CPU. However this doesn't necessarily apply in the context a userspace process where the scheduler will arbitrarily suspend threads for a (relatively) long duration.
And this leads to the big issue with queue-based locks: you have no way of knowing whether the next thread in the queue has been scheduled out. If it has then you have one whole timeslice during which nobody owns the lock. If you instead have threads spinning on the lock word waiting for it to get unlocked then you are pretty much guaranteed to pass the lock to a thread that is running.
Now, with that said, the spin waiting strategy in parking_lot is a bit ad-hoc and could use some fine-tuning (read: I made up some numbers and it seemed to give good results). In particular I'm considering reducing the number of times I yield the thread in favor of just queuing up the thread and having it sleep until explicitly woken up.

In order to really discuss this we need benchmarks with the poisoned branch on most tier A platforms.

The benchmarks linked in the RFC were done on the poison branch.

If someone else want to contribute benchmark number for their machine, just clone the git repository (on the poison branch) and run these commands:
cd benchmark
cargo run --features nightly --release --bin mutex 1:8 1 0 1
cargo run --features nightly --release --bin rwlock 0:4 0:4 1 0 1

My understanding is that parking lot does not support priority inheritance, while locks built on the OS primitives do (if the OS does). That's a major semantic difference.
I think it is far to early to consider this RFC. Let people use parking lot for a while and prove that it is good and stable.

I personally agree with @brson that it's far too early to consider this RFC. The parking_lot crate looks great, and it seems like it's definitely got some solid foundations as well, though! That being said these are also the core synchronization primitives for all of Rust, which in turn has a very high bar for an implementation. The parking_lot crate was first published only 20 days ago, and probably hasn't seen the level of usage that, e.g., pthread mutexes and Windows srwlocks have seen.
I would feel much more comfortable moving these into the standard library if the parking_lot crate was incredibly battle tested and basically the defacto standard among the Rust community, as that would give me quite a bit of confidence in both the implementation and benefits over the system primitives. I unfortunately do not have many concrete technical points I know of against this crate, but I would be incredibly wary of stating that we have soundly beaten all platform locking primitives in all respects in all situations. I probably don't even know about half the situations they were designed for!
This crate seems like a great candidate for the nursery, however, and perhaps even inclusion into rust-lang one day!

parking_lot looks very exciting. But to echo what @brson and @alexcrichton  have said, it's probably not a good idea to rush into this. Let's see how it goes in practice first! Perhaps you could talk to the Servo community and see how it performs in comparison? I'm not how much they are using the std concurrency primitives at the moment though. Or perhaps try it on other libraries or projects in the ecosystem that you think would benefit from them?

I would like to see the RFC proposal extended to address the following issues:

Why not make each mutex a full page, and force them to be page-aligned, to minimize cache contention? Shouldn't this be provided, at least, as an option?

To what extent would this allow the synchronization primitives to be made available with #[no_std]/libcore-only configurations?

To what extent would this allow the synchronization primitives to be made available with #[no_std]/libcore-only configurations?

There are two reasons why this won't work on #[no_std]:

Condvar waits with timeout use the std::time::{Instant,Duration} types.

Putting a thread to sleep requires an implementation of ThreadParker, which needs to call OS-specific APIs.

A more conservative change would be to just move the OS-specific implementations of ThreadParker into the standard library. Currently, the stardard library always uses the generic implementation of ThreadParker to implement thread::park and thread::Thread::unpark, and Once and channels would be sped up significantly from having faster park implementations.

Additionally, I'd like to see benchmarks against the standard library implementation of Once. The standard library already uses a parking-based algorithm, and it'd be nice to see the difference between using a centralized parking lot and a queue for each Once.

I expect the performance of Once to be roughly the same in both cases, and also mostly irrelevant since parking threads is only done in the rare slow path.
As for ThreadParker, there are no performance differences between my implementations and just using a Mutex + Condvar. Again, any performance benefit is vastly outweighed by the process of putting a thread to sleep. I only have custom implementations for two reasons: to support Windows XP and to avoid a dependency on the standard library Mutex and Condvar types.

Why not make each mutex a full page, and force them to be page-aligned, to minimize cache contention? Shouldn't this be provided, at least, as an option?

Sorry, I meant to write "full cache line" and "cache-line-aligned." AFAICT, it should be really easy to provide both aligned-and-padded and single-byte variants.

@briansmith What you really want to do is align the mutex and the data it is protecting to a cacheline. This can easily be done by marking Mutex<T> with #[aligned = "64"]. However this has not been implemented in rustc yet.

This would be a nice thing to optionally enable if we gave std some features. Would also making battle-testing much easier.

What seems a bit risky with this change is that it not only replaces the implementation, but that it also makes additional promises. This restricts alternative implementations and prevents backing out of the change.

@CodesInChaos the guarantees can always be reduced and this would still give good improvements in the performance side.
Anyway I fell like this is a great proposal, we just need to wait a few months (let parking lot prove itself) before really making a decision.

The RwLock type in parking_lot now supports atomically downgrading a write lock into a read lock. This fixes rust-lang/rust#32527.

Regarding real-world usage of parking_lot, today has brought us http://plhk.ru/trash/netmap-20160710.pdf .

:bell: This RFC is now entering its week-long final comment period 🔔
The libs team felt that this RFC's discussion has reached a standstill now and as a result it's ready to move into FCP. Our feeling matches what I wrote earlier about how parking_lot may not be quite ready just yet to replace all the primitives in the standard library as we feel it needs some mroe time to prove itself out across platforms and implementations.

Having an implementation of synchronization primitives directly in standard
library has also an additional benefit in the form of more consistent behaviour
across supported platforms.  This is not true when building them on top of
OS-specific primitives, for example:

On some platforms pthead_mutex_t contains embedded mutex and
pthread_mutex_init never fails (unless misused). On the others it is merely a
pointer, and initialization requires additional memory allocation (on top of
the one that is required to box the handle itself). This is the case for
example in FreeBSD, OpenBSD, and NetBSD.

Statically allocated pthread mutexes are lazy initialized in
pthread_mutex_lock, this means that this function can also fail, for the same
reasons that initialization may fail.

Non error-checking mutexes are allowed to perform deadlock detection,
and pthread_mutex_lock could fail with EDEADLK.

pthread_cond_timedwait uses system clock by default, and doesn't match the
documented semantics of Condvar::wait_timeout in case system time is changed
(workaround contained in standard library doesn't really help when time is
moved backwards).

... (and many others, not to mention differences between Windows API).
It seems that at some point it would be a really nice thing to have.

@tmiasko

It seems that at some point it would be a really nice thing to have.

I agree, there are lots of potential benefits to offering these constructs. But it's a pretty big move to make, and for the time being gaining more experience with them externally seems prudent. (In general, it's not 100% clear to me what direction the concurrency story within std should go long term.)

The libs team got a chance to talk about this RFC this week at libs triage, and our conclusion remains the same as before in that while parking_lot seems like a great crate with some really nice benefits, we'd prefer to wait for it to get more battle tested before moving it wholesale into the standard library. Thanks though for the RFC @Amanieu!

Can this still be included as a fallback mechanism to allow Rust to run not only on shiny new Windows?

Another blog post mentioning parking_lot: https://blog.mozilla.org/nfroyd/2017/03/29/on-mutex-performance-part-1/
It's been about a year since the crate was first published, so at some point it would be worth thinking about a timeline or otherwise mulling over specific criteria for potentially moving forward on this. Rather than trying to go into the stdlib directly, maybe a more reasonable first step would be to get this into rust-lang-nursery and see where it goes from there.

I can easy imagine adding some Cargo features to make this opt-in (c.f. allocator choice).

@aturon: it seems @bstrie’s last post warrants a comment/update from your team’s side, now that about 1,5 years have passed since its decision to hold this off.

It has been a long time now. Should this pull request be reopened?

The work of the up-and-comming portability time this year will hopefully allow this for free.

Work on this has been going on for quite a while over at https://github.com/rust-lang/rust/pull/56410.


fix: object creation only once

In all test files we are creating class objects only once.

the ors test was failing due to a timeout

That rings a bell no? Wasn't that the case before? Or maybe we just didn't care too much and merged before despite ORS failing?

@nilsnolde It does ring a bell: https://github.com/gis-ops/routingpy/pull/85
But for me, the ORS tests here seem to be working for me locally.

the ors test was failing due to a timeout

That rings a bell no? Wasn't that the case before? Or maybe we just didn't care too much and merged before despite ORS failing?

Earlier when I tested it passed every time but now it started behaving weirdly. Is it because of some network issue?


Support inline fixers for fix and warn plugin

What's done:

Added support inline fixers for fix and warn plugin
Closes #221

Let's close it by for now. As it is not needed


How to get the objects' 6D pose relative to the camera?

Hi, thank you for your work!
I am wondering how to get the objects' 6D pose in camera coordinates.
Thanks in advance!

Hello:
We first label the object poses in the world coordinate by:
"We performed the alignment process using MeshLab [31]. We first manually aligned object models to the scene model as an
initial 6D object pose estimate. We then upsampled the CAD model to a high resolution, and applied ICP to refine the object
pose. Lastly, we adjusted the pose manually whenever necessary to correct any inplane translation and rotation."
The object poses can be transformed to the camera coordinate using known camera poses.
Thanks
Jun

Hello:
In the ROBI dataset, we provide the object poses in the world coordinate (transformation from object frame to world frame): T_w2o.
To get the object poses in the camera coordinates T_c2o, you need to use the provided camera poses T_w2c:
T_c2o = T_c2w * T_w2o
Thanks
Jun

Thank you for your reply!


fix(pagination): allow to caught the change event in parent

emit trigger an event on the current instance, but change event must be handled in parent app

$dispatch is deprecated in Vue 2. Besides, you can listen to component $emit events from the parent with v-on.


Editable system role

I added the ability to change the parameter for the system role. which allows you to more accurately and conveniently configure the bot and specify its behavioral data

And add abiluty to define by user custom hotkeys for actions

Thank you for contributing!
First of all, I'd love if these two distinct features have a separate pull requests.
Secondly, the system role messages aren't really part of the toolwindow's logic i.e. it should be configurable while overriding the API request params (which in fact doesn't exist today). Request param overriding should be done inside the plugin's settings, similarly how selected code actions are configured. Also, there is an open ticket for that.
Thirdly, the key mappings should also include actions such as submitting the input, copying/replacing the generated code, navigating between main tabs(Chat/Conversation History), selecting the previous conversation etc. However, I'm also happy to accept the partial logic for it.
Lastly, try to keep the code changes as minimal as possible (e.g. don't commit the file if it only includes the code formatting). Also, I'm trying to follow the Google Java Style Guide since the plugin doesn't specify any code style rules.

To be honest, I don’t write in java at all, but I’ll definitely read and improve my skills for the future and try to comply with these standards.
I understand that here you can really make a huge functionality and it will take a lot of time and I have no right to demand these functions from you, so I tried to do it myself as it turned out and shared who might need it as developments.

That's perfectly fine! 🙂
For example, I'm happy to accept the logic for the actions key mappings if you tidy up the code a bit and lose the other functionality(or create another PR for it).

I'm happy to accept the logic for the actions key mappings
Just want to chime in and say: this would make me a very happy ideaVim user. 😀
Appreciate the plugin and appreciate the work on adding these key mappings. Super impressed with all of it!

@jmckenzie-dev I will try to add the basic key mappings next week.

@jmckenzie-dev Key mappings are now available in version 1.10.7 (pending Jetbrains approval).

🎉
That's freaking awesome. Thanks!


wrong in the fine_terrain task, never generate files

          @larrrry1412 were you able to run the hello world example with separate commands? (maybe we shall discuss this in a separate issue)

Originally posted by @mazeyu in https://github.com/princeton-vl/infinigen/issues/207#issuecomment-2016409517

I can run the hello world example, but when I use "cuda_terrain", the program never generate results.

This must be because the cuda executable is not working correctly (output 0 or something). I have seen this when I run executables with GPUs different than it is compiled. Which GPU are you using?

RTX3090， how can I fix it?

could you check if the driver is compatible etc., or run some simple tests with cuda. I'm not sure though.


Issue with Text Rendering using External Fonts

I'm encountering an issue with text rendering when using an external font. The original branch displays the text correctly and functions as expected. However, when I switch to the fork branch, the text alignment appears to be different, causing inconsistencies in the rendering.
Steps to Reproduce:
Switch to the original branch and observe the text rendering with an external font.
Switch to the fork branch and compare the text alignment with the original branch.
Notice the differences in text alignment between the original and fork branches.
Additional Details:
The external font being used: Robotto.ttf
Screenshots showcasing the issue on both branches:
santaclose:

BalazsJako:

This issue affects the consistency and appearance of the text rendering, particularly when using external fonts.

I decided to stop supporting non monospace fonts for now, as it breaks the whole meaning of columns in the editor. So that's expected.


RADOS permission error during Cephfs PVC creation

Describe the bug
I have deployed ceph-csi in my cluster using the manifest files provided in this repository. I am unable to provision a new volume when submitting a PVC. I received the error:
[errno 1] RADOS permission error (error connecting to the cluster)
Environment details
Images:
quay.io/k8scsi/csi-provisioner:v1.4.0
quay.io/k8scsi/csi-snapshotter:v1.2.2
quay.io/k8scsi/csi-attacher:v2.1.1
quay.io/k8scsi/csi-resizer:v0.5.0
quay.io/cephcsi/cephcsi:v2.1.

logs
W0428 20:50:53.370713       1 controller.go:887] Retrying syncing claim "788fe221-76b4-4be7-892e-9ca1ff49c707", failure 30
E0428 20:50:53.370848       1 controller.go:910] error syncing claim "788fe221-76b4-4be7-892e-9ca1ff49c707": failed to provision volume with StorageClass "csi-cephfs-sc": rpc error: code = InvalidArgument desc = an error occurred while running (796) ceph [-m x.x.x:6789,x.x.x.x:6789,x.x.x.x:6789 --id client.admin --keyfile=***stripped*** -c /etc/ceph/ceph.conf fs get test --format=json]: exit status 1: [errno 1] RADOS permission error (error connecting to the cluster)
I0428 20:50:53.371441       1 event.go:255] Event(v1.ObjectReference{Kind:"PersistentVolumeClaim", Namespace:"default", Name:"csi-cephfs-pvc", UID:"788fe221-76b4-4be7-892e-9ca1ff49c707", APIVersion:"v1", ResourceVersion:"2382752", FieldPath:""}): type: 'Warning' reason: 'ProvisioningFailed' failed to provision volume with StorageClass "csi-cephfs-sc": rpc error: code = InvalidArgument desc = an error occurred while running (796) ceph [-m x.x.x.x:6789,x.x.x.x:6789,x.x.x.x:6789 --id client.admin --keyfile=***stripped*** -c /etc/ceph/ceph.conf fs get test --format=json]: exit status 1: [errno 1] RADOS permission error (error connecting to the cluster)

Steps to reproduce
Steps to reproduce the behavior:

Deploy ceph-csi cephfs
Create new PVC
See error

Actual results
Unable to provision a new volume
Expected behavior
Able to provision a new volume
Additional context
Add any other context about the problem here.
For example:
Any existing bug report which describe about the similar issue/behavior

the log clearly says that this is a permission issue, can you please check you are using valid credentials and the user is having required permission to access the cluster.

closing this one as this is a permission issue, hope nothing can be done on cephcsi side other than documenting the capabilities which will be covered in #360


Specify go_package in its full path

The newer version of protoc-gen-go doesn't support the current form.
Signed-off-by: Kazuyoshi Kato<EMAIL_ADDRESS>

Our linter did not enjoy this for some reason 😰

Could be, I'm seeing some issues related to staticcheck not playing nice with 1.18 which looks like this run picked up for the go version. https://github.com/google/pprof/issues/662

Aha https://github.com/golangci/golangci-lint/pull/2438

@dcantah Thanks! Rebased.


Adding Partner Center Extension

CLI extension for the Partner Center. Currently, experimentally supporting Marketplace management commands, commissioned by Global Partner Services US division.
Authors

@kevinhillinger
@bobjac

Source

Type: External repository
URL: https://github.com/Azure/partnercenter-cli-extension

whl file should have all dependencies. Closed and reopened to trigger another build verification.

Partner Center

@yonzhan @kairu-ms it's not clear why the build is failing for this PR.
In Verify Ref Docs it's reporting a failure in ERROR: test_ref_doc_vmware (__main__.IndexRefDocs) which seems to be a pre-existing failure in the source?

/azp run

@yonzhan @kairu-ms it's not clear why the build is failing for this PR.
In Verify Ref Docs it's reporting a failure in ERROR: test_ref_doc_vmware (__main__.IndexRefDocs) which seems to be a pre-existing failure in the source?

Hi kevinhillinger,
Verify Ref Docs fetches the latest extension and executes the tests.
Because vmware 5.0.0 misses the init.py file, an error will be reported while import.
So, we released a new version of vmware == 5.0.1.
After a new version of vmware is released, this problem can be solved by simply re-running the CI tests.
But it is true that vmware 5.0.0 should be deleted in case users specify this version to download.

@wangzelin007 confirming, will this get merged as part of the Jan 10, 2023 release?

/azp run

/azp run


feat(stdlib)!: Adding Mimc Sponge to stdlib

Description

Problem*

Resolves
Summary*

Documentation

[ ] This PR requires documentation updates when merged.

[ ] I will submit a noir-lang/docs PR.

[ ] I will request for and support Dev Rel's help in documenting this PR.

Additional Context

PR Checklist*

[x] I have tested the changes locally.
[ ] I have formatted the changes with Prettier and/or cargo fmt on default settings.

Hi,
Thank you for your contribution!
Can you update the description to accurately describe the changes being made in this PR, ie why files were moved, why we need the sponge variation etc?

This is currently a breaking change. Can you please undo moving the existing mimc functions?

Perhaps its better to just change the PR title because it makes sense to move it to its own file

@TomAFrench I changed to a breaking change as I do think moving the mimc functions to their own file makes sense. Especially when they have lots of constant that are needed for the impl

I can't really validate the correctness of the implementation so I'll approve if someone on the team vouches for it.
That said, I think this goes against our aims in #1258. This would be best as a mimc library.

That said, I think this goes against our aims in #1258. This would be best as a mimc library.

I recommended for this to be put in the standard lib as MiMC is common hash function that should not be changing much and we already have MiMC7 inside of the stdlib. I forgot about the issue and aims listed in #1258, but perhaps this can just be moved out once we have some type of hashes library under noir-lang. If we feel strongly this should remain outside of Noir, we can ask @seugu to turn his Noir-MiMCSponge repo into a library.
The implementation is correct from my review and checks against the circom implementations.

@seugu It looks like you are using an old version of nargo for the new tests you included under execution_success. The projects are missing the name and type fields in the Nargo.toml.

I'm closing this PR as the mimc implementation has been moved to an external library: https://github.com/noir-lang/mimc


Harvester: Implement Alertmanager

Summary

Occurred changes and/or fixed issues

https://github.com/harvester/harvester/issues/2643

Technical notes summary

Areas or cases that should be tested

Areas which could experience regressions

Screenshot/Video

other LGTM，
The Disable Create button is not working properly,   I think it's caused here https://github.com/rancher/dashboard/blob/c9a993f197973d9568af674742e338aa11cd996f/shell/store/type-map.js#L1547
I think we should override the value of state.typeOptions[idx] use obj,
Object.assign(obj, state.typeOptions[idx])  => Object.assign(state.typeOptions[idx], obj)
@mantis-toboggan-md    Can you help confirm it ?  thanks

other LGTM，
The Disable Create button is not working properly, I think it's caused here https://github.com/rancher/dashboard/blob/c9a993f197973d9568af674742e338aa11cd996f/shell/store/type-map.js#L1547
I think we should override the value of state.typeOptions[idx] use obj,
Object.assign(obj, state.typeOptions[idx]) => Object.assign(state.typeOptions[idx], obj)
@mantis-toboggan-md Can you help confirm it ? thanks

Test method:
switch between disabled and enabled, the Create button on the alertmanagerconfig page should be correctly hidden or displayed


Don't create a config file

Expected Behavior
SFTP: config creates sftp.json now
Actual Behavior
SFTP: config, nothing is created in the folder
Steps to Reproduce the Problem

command -> sftp:config

after select folder, nothing is created

Requisites
Extension Logs
[set option sftp.printDebugLog to true, then reload vscode, reproduce the problem, get the logs(view -> output-> sftp)]
Ok
Specifications

Version: last plugin version
Platform: visual code last Version 1.16.1 (1.16.1)

After your first selection，what happened？Did another list with sub files pop up？

Nothing..
I tested with an another directory with a sub directory and it's the same, nothing happened

experiencing the same issue, nothing happens.

I got the same issue and had to manually create .vscode/.sftpConfig.json

What's your OS? And please provide the logs.

set option sftp.printDebugLog to true, then reload vscode, reproduce the problem, get the logs(view -> output-> sftp)

Yes ! with 0.8.3 it's ok for me ! 👍  thk u !


Bitlpm fixes and improvements

Fix a bug in pkg/container/bitlpm trie.Upsert return value when changing an intermediate node to a non-intermediate one by returning true instead of false.
Return the matching key (if any) from trie.LongestPrefixMatch as the caller may need it.
Add new functions AncestorsLongestPrefixFirst and DescendantsShortestPrefixFirst which allow the caller to skip iterating non-interesting nodes when the iteration can be satisfied by a node closest to the search prefix/key towards the root (for AncestorsLongestPrefixFirst) or towards the leaves (for DescendantsShortestPrefixFirst)

/test

I need clarification on the two new methods. The only way I can see these methods being valuable is if the the function that checks for the matches is substantially time intensive either via IO or CPU. Do you have a use case like that in mind?

I need clarification on the two new methods. The only way I can see these methods being valuable is if the the function that checks for the matches is substantially time intensive either via IO or CPU. Do you have a use case like that in mind?

They are useful when the search can be cut of on when nearest match (either up or down the trie) is found. This is the case when computing the mapstate for auth policies, and I think I noticed a measurable difference therein in a benchmark test. In this case the function is trivial, so the savings come purely from reducing the number of calls due to being able to end the search sooner rather than having to search through all the ancestors of descendants. In addition to speed, this simplifies the algorithms in those functions, as there is no need to store any state about prior matches and the code scoring the matches against each other is also simply removed. I'd like to merge these for the algorithmic simplifications made possibly alone, even if there were no speed advantage.


Update prometheus documentation

Learn Build status updates of commit e2b34fd:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

articles/azure-monitor/containers/container-insights-prometheus-metrics-addon.md
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the learn.microsoft.com contributor guidesPost your question in the Learn support channel

Learn Build status updates of commit 24731a0:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

articles/azure-monitor/containers/container-insights-prometheus-metrics-addon.md
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the learn.microsoft.com contributor guidesPost your question in the Learn support channel

#sign-off


Version 2.4 in the PSGallery dropped properties on xADDomain

xActiveDirectory version 2.4 in the PSGallery dropped properties on xADDomain:
DatabasePath
LogPath
Must add these back to the latest version.

Please replace xADDomain resource in 2.4 with code from 2.3.

Fixed by #9


Improve the Shape/Shape2D classes documentation

This makes the Shape/Shape2D classes 100% documented.

Thanks!


[ErrorException] Undefined offset: 0

Hey Hesto. I just try out your multi-auth on latest laravel 5.5 and just after I execute this:
php artisan multi-auth:install {singular_lowercase_name_of_guard} -f
then, i want to do migration, that error showed up. After I clean all of changed file, it back to normal. I can't figure out which part is wrong. Can you help me?

I just had the same problem, here's the solution: go to RouteServiceProvider and add the function
'''
protected function map {Guard} Routes ()
     {
         Route :: middleware ('{guard}')
              -> namespace ($ this-> namespace)
              -> group (base_path ('routes / {guard} .php'));
     }
'''
replace * {Guard} * with your name

@iccunha thx a lot,worked for me.
btw whats the problem ? i used multi auth about 2weeks ago without any problem,but now in my new project encountered this

@iccunha this does not work in Laravel 5.6 ... Any suggestions?


28 Nov 2023 - InnerSource SIG Meeting Minutes

Date
Tuesday 28 NOV 2023 - 10:00am EST / 3:00 UK/UTC
Attendee Identity
Please identify yourself when you attend the meeting by providing your name and affiliation in reply to this thread. Alternative we will need to add you here if you do not have a Github id

Fullname, Affiliation, (optional) GitHub username
...

Meeting notices

FINOS SIG Leads are responsible for observing the FINOS guidelines for running project meetings. Project maintainers can find additional resources in the FINOS Maintainers Cheatsheet.

All participants in FINOS project meetings are subject to the LF Antitrust Policy, the FINOS Community Code of Conduct and all other FINOS policies.

FINOS meetings involve participation by industry competitors, and it is the intention of FINOS and the Linux Foundation to conduct all of its activities in accordance with applicable antitrust and competition laws. It is therefore extremely important that attendees adhere to meeting agendas, and be aware of, and not participate in, any activities that are prohibited under applicable US state, federal or foreign antitrust and competition laws. Please contact<EMAIL_ADDRESS>with any questions.

FINOS SIG meetings may be recorded for use solely by the FINOS team for administration purposes. In very limited instances, and with explicit approval, recordings may be made more widely available.

Agenda

[ ] Convene & roll call (5mins)
[ ] Display FINOS Antitrust Policy summary slide
[ ] Review Meeting Notices (see above)
[ ] Approve past meeting minutes
[ ] Review FINOS Slack InnerSource SIG Channel - https://finos-lf.slack.com/archives/C01SYB503QT
[ ] Update on License Generator and next steps on development - https://github.com/finos-labs/innersource-license-generator
[ ] Update on site updates
[ ] AOB, Q&A & Adjourn (5mins)

Decisions Made

[ ] Decision 1
[ ] Decision 2
[ ] ...

Minutes

Action Items

[ ] Action 1
[ ] Action 2
[ ] ...

Zoom Details

https://zoom.us/j/97717618541
Meeting ID: 977 1761 8541
Passcode: 878599

Join by phone
Find your local number: https://zoom.us/u/adJnH9JOiY
Mailing List
Email<EMAIL_ADDRESS>to subscribe to the InnerSource SIG
mailing list.

Rob / FINOS 🍌

Katrina Novakovic - Citi

Hi :wave Citi

Miguel Capitao - DB

Went through notices
Focusing today on License generator

BI: We should publish our talks in the FINOS blog.
RM:  happy to write this up and publish today.
License Generator
CdS: Lots of refactoring on the license generator recently.  Territory clause still to do.  Functionally, you can take the code as-is and modify internally the license clauses.
At the moment, the clauses (e.g. https://github.com/finos-labs/innersource-license-generator/blob/main/src/license-clauses/attribution-org-project.txt) are not written by a legal team and would need legal review.
RM: Anyone in mind for this?
KN:  Yes, we have someone in mind, they should be able to review soon.
CdS: Does this need a further review by IS Commons?
BI:  They will need a deeper understanding of the tool for that.  We’ll need to give them a clear call-to-action for the tool (especially from a legal perspective).
CdS: We have a backlog.  Eventually, we need to consider deploying this. Backstage might be an option.
RM: Raised https://github.com/finos-labs/innersource-license-generator/issues/19 to cover this.
MC: Backstage instance of innersource commons needs funding.
BI: can you talk about the issues on the license generator in the weekly blog,, RM?
RM: yep, will do.
Migrating to OSR
BI: Maturity matrix needs an update - we need to look through and decide about this.  Just migrate over as-is.
CdS: We need get-involved, intro etc migrated over.  Added content to how to contribute to the license generator on the get-involved page.
RM: Do we need open roles?
BI: I don’t think we need to nominate for 2024.
RM: I could put this in the blog article too.
Theming
RM: showed some theme mock-ups.
MF: added a comment about information architecture.  Suggested changing from “Body of Knowledge” to “Handbook@”


Feature/marketplace updates sideload

Closing in favor of new approach - updates and sideload will be their own system utilities.


Quote and escape ConfigFile keys when necessary

Unexpected things happen when keys of ConfigFile contain special characters. For example:

When the key is a=b, saving works fine. But it complains about invalid identifier when loading.
ERROR: ConfigFile parse error at user://test.cfg:2: Unexpected identifier: 'b'..
   at: _parse (core/io/config_file.cpp:280)

When the key contains non-Ascii characters like Chinese, saving works fine. But it might be decoded incorrectly when loaded again. (静音 will become éé³.)

This PR encodes the keys with String::property_name_encode(). This is also how ResourceFormatSaverText encodes property names.
Test Script
extends SceneTree

const CONFIG_PATH := "user://test.cfg"

func _init():
	var config := ConfigFile.new()

	config.set_value("音频", "静音", 42)
	config.set_value("Audio", "a=b", 7)

	var err := config.save(CONFIG_PATH)
	assert(err == OK)

	config.clear()
	err = config.load(CONFIG_PATH)
	assert(err == OK)

	for section in config.get_sections():
		print(section)
		for key in config.get_section_keys(section):
			printt("", key, config.get_value(section, key))

	quit()

Could you modify tests/test_config_file.h to add test cases for this in the same commit? Thanks in advance 🙂

Done. Didn't notice that ConfigFile has a unit test file ;-)

Cherry-picked for 3.4.

Cherry-picked for 3.3.4.


NUT06:  Add Mint TOS to mint info

ToS is usually a veeery long document. I think it would be better to have tos_url and link to the document instead (as a bonus the document can be in PDF format that way).

ToS is usually a veeery long document. I think it would be better to replace the tos field with tos_url and provide link to the document instead so the info response is not so big.
As a bonus the document can be easily formatted - let's say in HTML or PDF format.

You bring up a good point that including it directly in the info response would increase its size and as this is something that a wallet should fetch often we should avoid this. However, linking to a document without defining a structure or file type would make it very difficult for a client to render and show to an end user. I think the TOS should be just a text string to avoid making it difficult for a wallet to show when the mint is added.

difficult for a wallet to show when the mint is added.

maybe we should strongly recommend that ToS are in a format easily rendered by a browser such as plain-text, Markdown, PDF or HTML?

as plain-text, Markdown, PDF or HTML?

Thinking more about this and HTML is probably too dangerous because it can contain some code to deanonymize user :-(

I would vote for URL. Wallets can render it as a web page.


DNS subdomain discovery

Create module to automatically discover subdomains of a given FQDN

[x] Module base created
[x] Added and tested func to get subs from VirusTotal
[x] Added and tested func to get subs from OTX
[x]  Add code to create child artifacts from discovered subdomains

Completed in 1.0-prod branch


flutter: add darwin support

Description of changes

Based on https://github.com/NixOS/nixpkgs/pull/196133

Adds x86_64/aarch64-darwin support for flutter

EDIT: Closes #145701
Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[x] x86_64-darwin
[x] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[x] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
23.05 Release Notes (or backporting 22.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[x] Fits CONTRIBUTING.md.

@wegank Could you take a look?

The actual difference between the two patches is minor:
124c124,126
< @@ -588,7 +590,7 @@ class CachedArtifacts implements Artifacts {
---
> @@ -586,14 +588,10 @@ class CachedArtifacts implements Artifacts {
>          // For script snapshots any gen_snapshot binary will do. Returning gen_snapshot for
>          // android_arm in profile mode because it is available on all supported host platforms.
126,127c128,129
<        case Artifact.frontendServerSnapshotForEngineDartSdk:
<          return _fileSystem.path.join(
---
> -      case Artifact.frontendServerSnapshotForEngineDartSdk:
> -        return _fileSystem.path.join(
129,131c131,132
< +          _dartSdkPath(_fileSystem), 'bin', 'snapshots',
<            _artifactToFileName(artifact),
<          );
---
> -          _artifactToFileName(artifact),
> -        );
133c134,140
< @@ -776,7 +778,7 @@ class CachedLocalEngineArtifacts implements LocalEngineArtifacts {
---
>        case Artifact.vmSnapshotData:
>        case Artifact.isolateSnapshotData:
> +      case Artifact.frontendServerSnapshotForEngineDartSdk:
>        case Artifact.icuData:
>          final String engineArtifactsPath = _cache.getArtifactDirectory('engine').path;
>          final String platformDirName = _enginePlatformDirectoryName(platform);
> @@ -776,7 +774,7 @@ class CachedLocalEngineArtifacts implements LocalEngineArtifacts {

So not unifying them is a blocker for me.

The actual difference between the two platform-specific patches is minor:
[…]

In nixpkgs, we usually apply patches unconditionally for all architectures, so e.g. a version bump, and resulting breakage of the patch gets spotted easily. Is it possible to merge these two patches, so they work on both architectures?

Just made this PR that merges the patches and builds on both aarch64-darwin and x86_64-linux.
Have never used flutter (was just tinkering this morning), so I'd appreciate if someone can confirm that it works (not just builds), but ./result/bin/flutter --version seems to work on both machines.
Note to self: learn how to use nixpkgs-review.

Gah, NM. Needs a pretty major rebase, I probably shouldn't dive in until I actually know how to use it a little bit so I can make sure it seems to work.

@n8henrie would be very happy to help test your PR if you get the chance / time to do the rebase. Would be super helpful to finally get nix flutter package for darwin.
@devholic thanks for the initial PR, hopefully we can get this merged.

Unfortunately I've abandoned it for now, the rebase was far from trivial, and I have no need for flutter (was just exploring a hello world).
Sorry, I'm sure I'll look at this again eventually as I am still curious, but no immediate plans to continue.

@tlvenn I'm looking into it, but it might take some time since it changed a lot 😢

@tlvenn I did basic tests, and I think it's ready 🚀

@FlafyDev @hacker1024 I reverted darwin-flavored patches (which are in the base PR) and seems working as expected. Could you take a look?

Result of nixpkgs-review pr 210067 run on x86_64-linux 1

13 packages built:

firmware-updater
firmware-updater.debug
fluffychat
fluffychat.debug
flutter
flutter-unwrapped (flutterPackages.stable)
flutter-unwrapped.cache (flutterPackages.stable.cache)
flutter37
flutter37-unwrapped (flutterPackages.v37)
flutter37-unwrapped.cache (flutterPackages.v37.cache)
hover
yubioath-flutter
yubioath-flutter.debug

Thank you! 💯


client.TimeoutUser help

Hey!
Can someone help me with:
private void onMessageReceived(object sender, OnMessageReceivedArgs e) {
if(e.ChatMessage.Message.Contains("badword"))
client.TimeoutUser(e.ChatMessage.Username, TimeSpan.FromMinutes(30), "Bad word! 30 minute timeout!");
I can't use "client.TimeoutUser"... How can i use "TimeoutUser" in onMessageReceived? Thank you for help.

Off the top of my head, you have to use an extension. Something like:
using TwitchLib.Extensions.Client;

I'll check more later on when I get to my computer.

Thank you sir! :)

Awesome, glad you got it working!


Titles can be too long on resource lists

Titles need ellipses if they run on for too long on the resource lists

It causes the @type tags to go out of alignment

resolved by https://github.com/BlueBrain/nexus-web/pull/181