Error executing mobilenet.mlir with latest IREE (vulkan backend)

I get the following errors when I try to execute mobilenet.mlir with updated IREE for vulkan backend.
Sample error messages:
error: failed to legalize operation 'hal.interface.load.tensor'
    %477 = mhlo.multiply %arg0, %210 : tensor<1x224x224x3xf32>

error: failed to run translation of source executable to target executable for backend vulkan*
    %477 = mhlo.multiply %arg0, %210 : tensor<1x224x224x3xf32>

I'm attaching the runner that I use to execute the MLIR:
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

// Forked from IREE with modified includes

#include "absl/base/macros.h"
#include "absl/strings/str_replace.h"
#include "absl/strings/string_view.h"
#include "absl/types/span.h"
#include "iree/base/api.h"
#include "iree/base/logging.h"
#include "iree/hal/api.h"
#include "iree/hal/testing/driver_registry.h"
#include "iree/modules/hal/hal_module.h"
#include "iree/testing/gtest.h"
#include "iree/testing/status_matchers.h"
#include "iree/vm/api.h"
#include "iree/vm/bytecode_module.h"
#include "iree/vm/ref_cc.h"

#include <queue>
#define STB_IMAGE_IMPLEMENTATION
#include "stb_image.h"

// Compiled module embedded here to avoid file IO:
#include "iree/samples/mobilenet/mobilenet_test_bytecode_module.h"

using namespace iree;
using namespace iree::vm;

namespace iree {
namespace samples {

struct TestParams {
  // HAL driver to use for the test.
  std::string driver_name;
};

std::ostream& operator<<(std::ostream& os, const TestParams& params) {
  return os << absl::StrReplaceAll(params.driver_name, {{":", "_"}});
}

// Builds a list of tests to run based on the linked in driver modules.
std::vector<TestParams> GetAvailableDriverTestParams() {
  std::vector<TestParams> all_test_params;
  auto driver_names = iree::hal::testing::EnumerateAvailableDrivers();
  // TODO(#3843): this whole file stopped being useful a long time ago as a
  // "simple" embedded test. This is a hack to work around its bustedness.
  driver_names = iree::hal::testing::RemoveDriverByName(driver_names, "dylib");
  driver_names = iree::hal::testing::RemoveDriverByName(driver_names, "llvm");
  driver_names = iree::hal::testing::RemoveDriverByName(driver_names, "vulkan");
  driver_names = iree::hal::testing::RemoveDriverByName(driver_names, "cuda");
  for (const auto& driver_name : driver_names) {
    TestParams test_params;
    test_params.driver_name = driver_name;
    all_test_params.push_back(std::move(test_params));
  }
  return all_test_params;
}

class MobileNetTest : public ::testing::Test,
                            public ::testing::WithParamInterface<TestParams> {
 protected:
};

TEST_P(MobileNetTest, RunOnce) {
  // TODO(benvanik): move to instance-based registration.
  IREE_ASSERT_OK(iree_hal_module_register_types());

  iree_vm_instance_t* instance = nullptr;
  IREE_ASSERT_OK(iree_vm_instance_create(iree_allocator_system(), &instance));

  // Create the driver/device as defined by the test and setup the HAL module.
  const auto& driver_name = GetParam().driver_name;
  IREE_LOG(INFO) << "Creating driver '" << driver_name << "'...";
  iree_hal_driver_t* driver = nullptr;
  IREE_ASSERT_OK(iree_hal_driver_registry_try_create_by_name(
      iree_hal_driver_registry_default(),
      iree_string_view_t{driver_name.data(), driver_name.size()},
      iree_allocator_system(), &driver));
  iree_hal_device_t* device = nullptr;
  IREE_ASSERT_OK(iree_hal_driver_create_default_device(
      driver, iree_allocator_system(), &device));
  iree_vm_module_t* hal_module = nullptr;
  IREE_ASSERT_OK(
      iree_hal_module_create(device, iree_allocator_system(), &hal_module));
  iree_hal_driver_release(driver);

  // Load bytecode module from the embedded data.
  IREE_LOG(INFO) << "Loading mobilenet_test.mlir...";
  const auto* module_file_toc = mobilenet_test_bytecode_module_create();
  iree_vm_module_t* bytecode_module = nullptr;
  IREE_ASSERT_OK(iree_vm_bytecode_module_create(
      iree_const_byte_span_t{
          reinterpret_cast<const uint8_t*>(module_file_toc->data),
          module_file_toc->size},
      iree_allocator_null(), iree_allocator_system(), &bytecode_module));

  // Allocate a context that will hold the module state across invocations.
  iree_vm_context_t* context = nullptr;
  std::vector<iree_vm_module_t*> modules = {hal_module, bytecode_module};
  IREE_ASSERT_OK(iree_vm_context_create_with_modules(
      instance, modules.data(), modules.size(), iree_allocator_system(),
      &context));
  IREE_LOG(INFO) << "Module loaded and context is ready for use";
  iree_vm_module_release(hal_module);
  iree_vm_module_release(bytecode_module);

  // Lookup the entry point function.
  // Note that we use the "raw" variant which operates on pure type/shape
  // erased buffers.
  const char kMainFunctionName[] = "module.call$raw";
  iree_vm_function_t main_function;
  IREE_ASSERT_OK(iree_vm_context_resolve_function(
      context, iree_make_cstring_view(kMainFunctionName), &main_function))
      << "Exported function '" << kMainFunctionName << "' not found";

  int width = 224, height = 224, channel = 3;
  // Get the image path
  std::string sourceFilePath = __FILE__;
  std::string imagePath = sourceFilePath.substr(0,sourceFilePath.length()-17/*len(mobilenet_test.cc)*/)
                            +"test.png";
  const char* imagePathPtr = imagePath.c_str();
  unsigned char *data = stbi_load(imagePathPtr, &width, &height, &channel, 0);

  std::vector<std::vector<std::vector<std::vector<float>>>> imgData(1,
      std::vector<std::vector<std::vector<float>>>(height, std::vector<std::vector<float>>(width,
          std::vector<float>(channel, 1))));
  int row, col;
  for (int i=0; i<width*height; i++) {
      col = i/width;
      row = i%height;
      for(int j=0; j<channel; j++) {
        imgData[0][row][col][j] = float(*(data+((i*channel)+j)));
      }
  }

  // Allocate buffers that can be mapped on the CPU and that can also be used
  // on the device. Not all devices support this, but the ones we have now do.
  IREE_LOG(INFO) << "Creating I/O buffers...";
  constexpr int kElementCount = 224*224*3;
  iree_hal_buffer_t* arg_buffer = nullptr;
  IREE_ASSERT_OK(iree_hal_allocator_allocate_buffer(
      iree_hal_device_allocator(device),
      iree_hal_memory_type_t(IREE_HAL_MEMORY_TYPE_HOST_LOCAL |
                             IREE_HAL_MEMORY_TYPE_DEVICE_VISIBLE),
      IREE_HAL_BUFFER_USAGE_ALL, sizeof(float) * kElementCount, &arg_buffer));

  // Populate initial values.
  IREE_ASSERT_OK(iree_hal_buffer_fill(arg_buffer, 0, IREE_WHOLE_BUFFER,
                                      &imgData, sizeof(float)));

  // Setup call inputs with our buffers.
  // TODO(benvanik): make a macro/magic.
  vm::ref<iree_vm_list_t> inputs;
  IREE_ASSERT_OK(iree_vm_list_create(/*element_type=*/nullptr, 1,
                                     iree_allocator_system(), &inputs));
  auto arg_buffer_ref = iree_hal_buffer_move_ref(arg_buffer);
  IREE_ASSERT_OK(iree_vm_list_push_ref_move(inputs.get(), &arg_buffer_ref));

  // Prepare outputs list to accept the results from the invocation.
  vm::ref<iree_vm_list_t> outputs;
  IREE_ASSERT_OK(iree_vm_list_create(/*element_type=*/nullptr, 1,
                                     iree_allocator_system(), &outputs));

  // Synchronously invoke the function.
  IREE_LOG(INFO) << "Calling " << kMainFunctionName << "...";
  IREE_ASSERT_OK(iree_vm_invoke(context, main_function,
                                /*policy=*/nullptr, inputs.get(), outputs.get(),
                                iree_allocator_system()));

  // Get the result buffers from the invocation.
  IREE_LOG(INFO) << "Retrieving results...";
  auto* ret_buffer =
      reinterpret_cast<iree_hal_buffer_t*>(iree_vm_list_get_ref_deref(
          outputs.get(), 0, iree_hal_buffer_get_descriptor()));
  ASSERT_NE(nullptr, ret_buffer);

  // Read back the results and ensure we got the right values.
  IREE_LOG(INFO) << "Reading back results...";
  iree_hal_buffer_mapping_t mapped_memory;
  IREE_ASSERT_OK(iree_hal_buffer_map_range(ret_buffer,
                                           IREE_HAL_MEMORY_ACCESS_READ, 0,
                                           IREE_WHOLE_BUFFER, &mapped_memory));

  // Get the output classification scores
  absl::Span<const float> classificationScores = absl::Span<const float>(
                  reinterpret_cast<const float*>(mapped_memory.contents.data),
                  mapped_memory.contents.data_length / sizeof(float));

  // Max heap to store classification scores and its indices
  std::priority_queue<std::pair<float, int>> outputHeap;
  for(int i=0; i<mapped_memory.contents.data_length / sizeof(float); i++) {
    outputHeap.push(std::make_pair((float)classificationScores[i],i));
  }

  // Find top 3 predictions and its indices
  int numOfPredictions = 3;
  std::vector<float> topScores(numOfPredictions);
  for(int i=0; i<numOfPredictions; i++) {
    auto score = outputHeap.top();
    topScores[i] = score.first;
    std::cout<<score.first<<", "<<score.second<<std::endl;
    outputHeap.pop();
  }
  // Top 3 scores (ground truth) obtained from inference using python script
  ASSERT_THAT(topScores,::testing::ElementsAreArray({0.5759917f, 0.12080416f, 0.096903406f}));
  iree_hal_buffer_unmap_range(&mapped_memory);
  IREE_LOG(INFO) << "Results match!";

  inputs.reset();
  outputs.reset();
  iree_hal_device_release(device);
  iree_vm_context_release(context);
  iree_vm_instance_release(instance);
}

INSTANTIATE_TEST_SUITE_P(AllDrivers, MobileNetTest,
                         ::testing::ValuesIn(GetAvailableDriverTestParams()),
                         ::testing::PrintToStringParamName());

}
}

Can you post the command you are using to translate the model? There's been some changes recently as we switch our codegen infrastructure over to a new lowering path and it's possible there's a flag required/flag that is now invalid.
@antiagainst: does this ring any bells?

We also don't have a mobilenet.mlir in our repository - what are you using as input?

Command for translation:
iree-translate -iree-mlir-to-vm-bytecode-module -iree-hal-target-backends=vulkan-spirv mobilenet.mlir -o mobilenet.module

I generated the mobilenet.mlir using e2e test:
>> python ./integrations/tensorflow/e2e/keras/applications/applications_test.py  --target_backends=iree_vmla --model=MobileNetV3Small --data=imagenet --use_external_weights
>> /iree/install/path/bin/iree-opt /tmp/iree/modules/MobileNetV3Small/imagenet/iree_input.mlir > mobilenet.mlir

Cool - that should be enough to try to reproduce! Thanks!

Ah, haven't seen hal.interface.load.tensor for a while. It's for the previous interface contract; right now we are using hal.interface.binding.subspan + flow.dispatch.tensor.load. So likely you'd need to regenerate the artifacts with the newest IREE tools.
Let me try to repro on my side.

I cannot repro this with the newest tools. iree-translate completes okay for me. Could you try to build from the current main branch on your side to see whether the problem persists.

A few comments on the execution code:
mobilenet needs the input normalized to [0, 1], so a simple cast is not sufficient. In addition, you need to convert the iree_hal_buffer_t into iree_hal_buffer_view_t before pushing it do iree_vm_list (see https://github.com/google/iree/blob/b4737c5/iree/samples/simple_embedding/simple_embedding_run.c#L130-L157) otherwise iree_vm_invoke will have trouble finding the invoke interface.
I also work on a simple interface/example (with stb to support image input). My code can work fine on dylib backend with mobilenetv2 and mnist milr.

@antiagainst it seems like I was trying to do translation using older set of tools, I can generate the module successfully. Thank you.
@hcindyl Thank you for your suggestions, I'll incorporate them thanks!


Dry run (-n) error if the builddir directory does not exist in 1.12.0

Hi. I'm using Ninja 1.12.0 on Windows.
Since 1.12.0 dry run commands will produce an error such as error: WriteFile(ninja_builddir/.ninja_lock): Unable to create file. No such file or directory if the builddir directory does not already exist. I reproduced the error with a simple build.ninja file and running ninja -n:
builddir = ninja_builddir

rule cc
    command = clang -c $in -o $out

build test.obj: cc test.cpp

Thanks!

I think we should fix this regression and then release 1.12.1. Help wanted :)

@jdrouhard can you have a look?


Added TypeScript instructions

Updated README file to include instructions for using the package with TypeScript.

Codecov Report

Merging #16 (4f540e8) into master (fc0028a) will not change coverage.
The diff coverage is n/a.

@@            Coverage Diff            @@
##            master       #16   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files            1         1
  Lines           22        22
=========================================
  Hits            22        22

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 fc0028a...4f540e8. Read the comment docs.

Not sure why, but GitHub seems to be removing the closing part for the suggested multi line comment.

Why not providing the d.ts folder in this repo and referencing it in the package.json in the typings attribute?
Then you would provide the typings automatically without the necessity to install another dependency and if the typings are incomplete or wrong we just have to change them in this package and not somewhere else.

@Uzlopak Sometimes, a maintainer is not interested in maintaining their own type definitions. We can only speculate for now.

It seems that closing code block is missing. Probably due to some changes during resolving code comments.


[docs: developer/writing-profiles] typo fixes

Fixes minor typos in the custom profile documentation

thanks!


what's the best processing res that produces the best results?

Hi, the model is trained on $384\times512$ resolution, so we would suggest to resize the shorter side of the image to around 384 to 512. Generally, we find that smaller images are better in global depth estimation and relationships between objects while larger images are better at details fidelity.


HTTP requests for unsupported content types should issue a 406 or 400 response

Backtrace
View full backtrace and more info at honeybadger.io

We'll reopen if we see this again.


upstream to rustc

Leaving things to do here so they don't get lost
@eddyb in IRC:

replace the LLVM-generating stuff in trans with lowering miri allocations to LLVM
it should be more efficient in cases without relocations because you can give LLVM a byte blob
not sure if its own load-from-constant folding can deal with it

An open question is how to integrate miri's source into rustc:

go the rls way: integrate the miri repository as a submodule of the rustc repository
go the clippy way: move the miri library into the rustc repository and only develop the miri executable in this repository.

@solson: have you done any work towards moving miri into rustc, or are planning on doing so any time soon? If not, do you mind if I give it a try?

I haven't done any merging work yet, but I plan to do it relatively soon.
My basic idea was to create a mir_interp or mir::interp module somewhere (wherever @eddyb suggests) and get the code compiling there. I don't think we should use a submodule.
We'll have to get rid of our dependency on the byteorder crate before merging into rustc.

interp

interpret, surely.

that would limit experimentation in this repo

I have an abstraction layer in mind, so the bulk of the code stays in the compiler and here you keep a driver and extensions to it.

We'll have to get rid of our dependency on the byteorder crate before merging into rustc.

If you wait a few more days, the old makefiles are getting removed and you can just depend on crates.io.

If I make recommend, git subtree is nice for preserving history with this sort of thing.

git subtree showed up on IRC before, I believe my suggestion was to have a merge commit between two repos (connected by a git remote).
Now there's a way to actually make the commits valid in this repo: make a commit to move the files in the right position and roughly the right content, on a miri branch, then merge that branch into Rust.

There is an integration plan from last week's compiler design sprint here.

@brson @alexcrichton Would there be serious issues if we ended up with two roots (commits with no parents) in rust-lang/rust, in order to preserve miri's history? We can do something else otherwise.

I don't really understand what the implications of such a situation would be, but I can't think of any reason offhand why that'd be bad

I just learned from this blog post that the Linux kernel repo has four initial commits. It doesn't seem like a big deal. One of their roots was even added by accident.

Closing this, since Miri was in fact merged into rustc back in December in https://github.com/rust-lang/rust/pull/45002, and later fully replaced the old const evaluator in https://github.com/rust-lang/rust/pull/46882 just a couple weeks ago. (Thanks @oli-obk and everyone else involved!)


OpenLDAP: Expose existing ldap config attributes in UI

Rancher Versions:
Server: 1.3.x
Steps to Reproduce:

Setup Rancher and go to Admin ->Access Control

Choose OpenLDAP

The config page should provide a way to configure following 2 ldapconfig fields:
'groupMemberMappingAttribute'
'userMemberAttribute'

Currently the POST request to set the config, uses default values for these two:
Request URL:/v2-beta/openldapconfig
Request Method:POST
Request Payload:
{"id":null,"type":"openldapconfig","baseType":"openldapconfig","accessMode":"unrestricted","connectionTimeout":1000,"domain":"dc=us-west-2,dc=compute,dc=internal","enabled":false,"groupDNField":"entryDN","groupMemberMappingAttribute":"memberUid","groupMemberUserAttribute":"entryDN","groupNameField":"cn","groupObjectClass":"groupofNames","groupSearchField":"cn","loginDomain":null,"name":"openldapconfig","port":389,"server":"<IP_ADDRESS>","serviceAccountPassword":"cattle","serviceAccountUsername":"cn=admin,dc=us-west-2,dc=compute,dc=internal","tls":false,"userDisabledBitMask":0,"userEnabledAttribute":null,"userLoginField":"uid","userMemberAttribute":"memberOf","userNameField":"givenName","userObjectClass":"inetOrgPerson","userSearchField":"uid"}

Results:
Please expose them in UI so that they can be configured easily since every ldap setup can have custom values.

Version - master 1/24
Verified fixed


Improve test coverage

Codecov Report

Merging #273 (2bdb273) into master (8135048) will increase coverage by 0.60%.
The diff coverage is n/a.

@@             Coverage Diff              @@
##             master     #273      +/-   ##
============================================
+ Coverage     76.97%   77.57%   +0.60%
- Complexity      944      958      +14
============================================
  Files           131      131
  Lines          2658     2658
  Branches        334      334
============================================
+ Hits           2046     2062      +16
+ Misses          507      493      -14
+ Partials        105      103       -2

Impacted Files
Coverage Δ

.../address/logic/commands/AllocateMemberCommand.java
100.00% <0.00%> (+15.00%)
:arrow_up:

...ddress/logic/commands/DeallocateMemberCommand.java
100.00% <0.00%> (+27.02%)
:arrow_up:

Continue to review full report at Codecov.

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


CARDS-2311: Add new Integrated Care clinics setup - updated the IC reminders schedule

New schedule for reminders sent for surveys including the IC questionnaire.
DRAFT until some consensus is reached regarding whether the reminders should be 2, 7, or 10 days apart.

Closing in favor of #1609 which is marked with the correct issue number and reflects the final decision regarding the email reminder schedule.


SameDiff - JVM crash with boolean OR operation

Reproducable using this test:
https://github.com/deeplearning4j/nd4j/blob/master/nd4j-backends/nd4j-tests/src/test/java/org/nd4j/autodiff/gradcheck/GradCheckTransforms.java#L304-L438
Full crash log: https://gist.github.com/AlexDBlack/752096230bef75f559c902eb82457921
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00007f1f22f6ee28, pid=11029, tid=0x00007f1f51a8c700
#
# JRE version: Java(TM) SE Runtime Environment (8.0_151-b12) (build 1.8.0_151-b12)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.151-b12 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# C  [libnd4jcpu.so+0x473e28]  void functions::pairwise_transforms::PairWiseTransform<double>::exec<simdOps::Or<double> >(double*, long long, double*, long long, double*, long long, double*, long long)+0x258
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# An error report file with more information is saved as:
# /home/alex/DL4J/nd4j/nd4j-backends/nd4j-tests/hs_err_pid11029.log
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.java.com/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#

Process finished with exit code 134 (interrupted by signal 6: SIGABRT)

i have the same issue how dit you fix it ?


MINOR: [Rust][Docs] Update Rust FlightSQL status doc

Rationale for this change

Updating arrow-rs FlightSQL support status on site: https://arrow.apache.org/docs/status.html#flight-sql
arrow-rs issue: https://github.com/apache/arrow-rs/issues/4337
What changes are included in this PR?

Are these changes tested?

Are there any user-facing changes?

cc @tustvold @alamb
Based this off what I could find in https://github.com/apache/arrow-rs/blob/bd19a624469df652f24ee37b65056535ff665769/arrow-flight/src/client.rs
Let me know if I missed anything or if it's inaccurate

To be fair, the arrow doc does state that FlightSQL is still experimental:
https://arrow.apache.org/docs/format/FlightSql.html
So it would make sense that the feature in arrow-rs crate is also named experimental, I suppose?

To be fair, the arrow doc does state that FlightSQL is still experimental:
https://arrow.apache.org/docs/format/FlightSql.html
So it would make sense that the feature in arrow-rs crate is also named experimental, I suppose?

Yes, that makes sense
There was a discussion on the mailing list a while back about marking FlightSQL as non experimental https://lists.apache.org/thread/qoshg8mln3t2ovr90o1yklz4yrpv503h but it seems like we haven't actually done that yet
:)

Thanks @Jefffrey


Ignore reorgs for the greater good

The latest version of bdk-ldk removes some possibly buggy code which dealt with reorgs. Reorgs aren't very important in the context of a test application and we think that the possibly buggy code was causing unwarranted channel force-closes.

bors r+


Fix prototype transforms for (*, H, W) segmentation masks

Most of our *_segmentation_mask kernels simply dispatch to the *_image_tensor kernel. However a segmentation mask (from the segmentation task) might have no channel dimension, i.e. shape (*, H, W). Passing this directly into the image kernel will fail for some that require this dimension to be there. For example
https://github.com/pytorch/vision/blob/cac4e228c9ca9e7564cb34406e7ebccfdd736976/torchvision/prototype/transforms/functional/_geometry.py#L566
This was not detected before because the CI only tested against "detection" masks, i.e. (*; N, H, W) where N denotes the number of objects.
All kernels work the same, but in case the input has no channel dimension, we .unsqueeze(0) before calling the image kernel and .squeeze(0) afterwards.

Test failure is unrelated:
____________ test_eager_vs_scripted[gaussian_blur_image_tensor-50] _____________
Traceback (most recent call last):
  File "/home/runner/work/vision/vision/test/test_prototype_transforms_functional.py", line 602, in test_eager_vs_scripted
    torch.testing.assert_close(eager, scripted)
  File "/opt/hostedtoolcache/Python/3.7.13/x64/lib/python3.7/site-packages/torch/testing/_comparison.py", line 1359, in assert_close
    msg=msg,
  File "/opt/hostedtoolcache/Python/3.7.13/x64/lib/python3.7/site-packages/torch/testing/_comparison.py", line 1093, in assert_equal
    raise error_metas[0].to_error(msg)
AssertionError: Tensor-likes are not equal!

Mismatched elements: 1 / 1024 (0.1%)
Greatest absolute difference: 1 at index (1, 0, 15, 4)
Greatest relative difference: 0.006172839552164078 at index (1, 0, 15, 4)


Virtual Keyboard is deprecated

We still have some code kicking around for Google's Virtual Keyboard, which is deprecated. It looks like the deprecation was announced in 2011, with a support period of 3 years. I might be trying to use it wrong, but it doesn't look like it works at all anymore.
I imagine we can expect that people's phones/browsers are set up to handle their language of choice these days, so hopefully there's no longer a need for this and we can just get rid of it, but I'll wait for confirmation from someone who routinely types in a language other than English.
BTW, in case anyone gets confused like I did: there's another (apparently totally different) Google product that's also called Virtual Keyboard, but it's a Chrome extension/Android app. The Virtual Keyboard we're using is JS that we serve as part of our frontend.

It just occurred to me that an advantage of something like the JS virtual keyboard is that it'd be useful in situations with shared computers (e.g., at a camp/shelter) where people who speak a variety of languages would use the same browser. Since the old VK is deprecated, I'm not sure there's a good path for us to address that problem on our side, but we could encourage govt. agencies or NGOs to use the new Chrome extension virtual keyboard (which could be useful for other things too, not just PF).

This isn't an issue in Japan since you can type Japanese in all computers/phones sold in Japan. But I don't know the situation in other languages. I believe it was more for countries like India, so it may be good if we can get input from people in such countries.

It turns out the reason this wasn't working for me is that it's only enabled for Urdu. Remarkably, it does still work, at least as far as I can tell as a non-Urdu speaker.
It'd be useful to get some insight on whether there was a specific reason this was set up for Urdu (Hiroshi, if you don't know I'll try Pete). Frankly I'm still inclined to get rid of it unless there's a really good reason to keep it though, because I think keeping it around is fairly risky. Eventually it's bound to break or get deleted, and once that happens we're unlikely to know it's broken until we need to launch for an event in Pakistan (i.e., we'll only find out "the hard way").

Removed in PR #567. Further discussion on the decision to drop it is in the PR description.


Is Next-GPT an agent？

Thanks for your open source work. After watching the demo you released, I am wondering whether Next-GPT is an Agent?

It's a system take usage of LLM's reasoning ability to integrate many kinds of modality, but I think it's not an agent.


rusfmt is missing for all Tier1 platforms since 2019-07-26

Problem
Rusfmt component is missing for all Tier1 platforms since 2019-07-26,
so I can't update  nightly-x86_64-unknown-linux-gnu.
My update log:
Mon Jul 29 07:30:01 MSK 2019

verbose: read metadata version: '12'
verbose: updating existing install for 'stable-x86_64-unknown-linux-gnu'
verbose: toolchain directory: '/opt/rust/rustup/toolchains/stable-x86_64-unknown-linux-gnu'
info: syncing channel updates for 'stable-x86_64-unknown-linux-gnu'
verbose: creating temp file: /opt/rust/rustup/tmp/fsckm5hb0m72qod5_file
verbose: downloading file from: 'https://static.rust-lang.org/dist/channel-rust-stable.toml.sha256'
verbose: downloading with reqwest
verbose: deleted temp file: /opt/rust/rustup/tmp/fsckm5hb0m72qod5_file
verbose: toolchain is already up to date
verbose: updating existing install for 'beta-x86_64-unknown-linux-gnu'
verbose: toolchain directory: '/opt/rust/rustup/toolchains/beta-x86_64-unknown-linux-gnu'
info: syncing channel updates for 'beta-x86_64-unknown-linux-gnu'
verbose: creating temp file: /opt/rust/rustup/tmp/5zh1_todx185p6ar_file
verbose: downloading file from: 'https://static.rust-lang.org/dist/channel-rust-beta.toml.sha256'
verbose: downloading with reqwest
verbose: deleted temp file: /opt/rust/rustup/tmp/5zh1_todx185p6ar_file
verbose: toolchain is already up to date
verbose: updating existing install for 'nightly-x86_64-unknown-linux-gnu'
verbose: toolchain directory: '/opt/rust/rustup/toolchains/nightly-x86_64-unknown-linux-gnu'
info: syncing channel updates for 'nightly-x86_64-unknown-linux-gnu'
verbose: creating temp file: /opt/rust/rustup/tmp/yuv7eeay3ju6lirv_file
verbose: downloading file from: 'https://static.rust-lang.org/dist/channel-rust-nightly.toml.sha256'
verbose: downloading with reqwest
verbose: deleted temp file: /opt/rust/rustup/tmp/yuv7eeay3ju6lirv_file
verbose: creating temp file: /opt/rust/rustup/tmp/4mx48cgmf6ql4940_file.toml
verbose: downloading file from: 'https://static.rust-lang.org/dist/channel-rust-nightly.toml'
verbose: downloading with reqwest
verbose: checksum passed
verbose: deleted temp file: /opt/rust/rustup/tmp/4mx48cgmf6ql4940_file.toml
info: latest update on 2019-07-29, rust version 1.38.0-nightly (4560cb830 2019-07-28)
error: component 'rustfmt' for target 'x86_64-unknown-linux-gnu' is unavailable for download for channel 'nightly'
If you require these components, please install and use the latest successful build version,
which you can find at https://rust-lang-nursery.github.io/rust-toolstate.

After determining the correct date, install it with a command such as:

    rustup toolchain install nightly-2018-12-27

Then you can use the toolchain with commands such as:

    cargo +nightly-2018-12-27 build
info: checking for self-updates

       stable-x86_64-unknown-linux-gnu unchanged - rustc 1.36.0 (a53f9df32 2019-07-03)
         beta-x86_64-unknown-linux-gnu unchanged - rustc 1.37.0-beta.6 (61d1607e0 2019-07-22)
  nightly-x86_64-unknown-linux-gnu update failed - rustc 1.38.0-nightly (03f19f7ff 2019-07-24)

Yep, that's very true.  Sadly it's not something Rustup can do anything about; sorry.  Better to go and discuss this with the rustfmt group and see what they need help with to get them back into nightly.


Clarification needed "Prepare your organization for BitLocker: Planning and policies"

With the section: https://docs.microsoft.com/en-us/windows/security/information-protection/bitlocker/prepare-your-organization-for-bitlocker-planning-and-policies#encryption-keys-and-authentication
In the paragraph, the statement says:
Encryption keys and authentication
...
"... does not provide the pre-startup system integrity verification offered by BitLocker working with a TPM"
Clarification needed on "why not having a pre-start system integrity verification" is less secure that TPM.
a) What does it entail "Not having pre-startup system integrity verification" as of risks?
b) What does "pre-startup system integrity verification" provide?
This is to understand the risk and controls needed with Bitlocker to go vs TPM.
Perhaps a different article has an explanation? Perhaps you can make a link to this article?

@jecarlsen thank you for reaching out. Please have a look at this link and let me know if it helps at all - https://docs.microsoft.com/windows/security/information-protection/bitlocker/bitlocker-group-policy-settings#a-href-idbkmk-rec1achoose-how-bitlocker-protected-operating-system-drives-can-be-recovered

@jecarlsen We are closing this issue as there hasn't been a response from your side regarding the specific article where the issue stems from.
Feel free to re-open this issue by clarifying the problematic document and we'd be glad to come up with content updates.
Thank you for providing feedback.


Fix docs about @Configuration with @FeignClient

As discovered in #1643, using @Configuration on a custom configuration with @FeignClient is unnecessary and creates extra work for exclusion from a @ComponentScan. This updates the docs to make this explicit.

Current coverage is 74.44% (diff: 100%)

Merging #1650 into master will not change coverage

@@             master      #1650   diff @@
==========================================
  Files           194        194
  Lines          6042       6042
  Methods           0          0
  Messages          0          0
  Branches        912        912
==========================================
  Hits           4498       4498
  Misses         1215       1215
  Partials        329        329

Powered by Codecov. Last update f27defb...1b027de


Add short guide on how to test

Can be found in the feature/guide-to-testing branch.

Also here: https://github.com/mitchellevan/font-awesome/commit/3b1419becd5eb14b3325e65a352180b48358547b


Bandits have all become babies

Community patch installed through Vortex (0.1.0-rc2) into an in progress campaign. No issues so far except all bandit classes use the baby model now.
Invincible babies, apparently. Hitbox must be wacky.

Duplicates https://github.com/Tyler-IN/MnB2-Bannerlord-CommunityPatch/issues/208
We don't mess with the age model. Are you sure it's not some other mod?

I was just looking at building the patch for the first time and am having trouble and saw this.  If you don't have the name specified properly for the base character of a troop, it will use a baby.  I don't know if this mod is working with troops but that's what it's related to.

Duplicates #208
We don't mess with the age model. Are you sure it's not some other mod?

None of the other mods I was using (Character Import/Export, Developer Console, Monty's Forge Overhaul, and Settlement Icons) should touch the troops, AFAIK. Looking at fumblesneeze's comment on #208, I suspect it was just an error resulting from the mess of installing/uninstalling I was doing to try and troubleshoot some crashes.  I've included the save in case it ends up being useful.
save_002.zip

I was just looking at building the patch for the first time and am having trouble and saw this. If you don't have the name specified properly for the base character of a troop, it will use a baby. I don't know if this mod is working with troops but that's what it's related to.

We don't have any XML components to the mod at present.

Closing as stale - no tester seems to be able to reproduce, outside of intentionally breaking a mod install or screwing up native module xml files. The saves are stuck with babies, there's no real way around that outside of editing the save games.


closure #1 () -> Alamofire.HTTPHeader in variable initialization expression of static Alamofire.HTTPHeader.defaultAcceptEncoding : Alamofire.HTTPHeader (in EPIK) (HTTPHeaders.swift:356)

Only one of our users has a crash

Alamofire Version: 5.6.2
Dependency Manager: Carthage
Xcode Version: 14.1
Swift Version: 5.7.2
Platform(s) Running Alamofire: iOS
macOS Version Running Xcode: 13
Looking forward to your reply,thank you!

Thanks for the report, sorry for the delay. Have you seen any more instances of this? All I can do is speculate that this is a Swift bug with Double string interpolation, but I'll take a look at the implementation anyway.

Thanks for the report, sorry for the delay. Have you seen any more instances of this? All I can do is speculate that this is a Swift bug with Double string interpolation, but I'll take a look at the implementation anyway.

Thank you very much for your reply, no more crashes related to this, you can ignore this issue, have a good day!


HDDS-3581. Make replicationfactor can be set as a number

What changes were proposed in this pull request?
Now replicationfactor is an enum, which has only two option ONE and THREE, i aim to refactor it into a number, and keep compatible with the earlier client version.
This step is a beginning and make it possible to config any number for replication
What is the link to the Apache JIRA
https://issues.apache.org/jira/browse/HDDS-3581
How was this patch tested?
CI tests

My understanding is that we can change the replication count for closed container? Can we add some document or discussion before making this change as RATIS can't handle all the replication factors.

@xiaoyuyao This PR aimed to refactor the protocol and relates code to support using integer to specify the count of replication. Now in the proto files, it use enum type to stand for the limit of replication count, i think the limitation is too earlier. I want to remove the limitation from the proto level as a first step, then, using some configuration key to limit it. BTW, any count replication support effort is doing by @runzhiwang and some ratis developer

This is a document relates this PR, i am writing it, feel free to take a look and left some commets.
https://docs.qq.com/doc/DV2N6bWdCcnJVc3Rk
Any comments will help me, thank you for your review.

Thanks for the document, that helps. Instead of changing the Enum to int, have you consider adding the additional factors into existing Enum?  Here are some of my thoughts

We won't be able to support large replication factor or arbitrary replication factor (even) in near future due to raft limitations.
We will have better control over the replication factor that we can support.
We will need to maintain backward and forward compatibility for future changes.

@xiaoyuyao Thank you for your review, I think this PR is significant.

have you consider adding the additional factors into existing Enum (e.g. odd number < 32)

Yeah, this is my first thought, but i change my mind quickly, because, i think we should use configuration to limit the maximum number of replication factor instead of the Enum in the proto. We can imagine that each time we add the additional refactor, we should modify the protocol, and now we support ONE and THREE, after this PR, we support ONE, THREE,....THIRTY-ONE, some day, ratis support factor TWO, we should add TWO in the factor, and the client must be upgraded each time. Another things, many factor in a enum make the source code not pretty.
About your thoughts

We won't be able to support large replication factor or arbitrary replication factor (even) in near future due to raft limitations.

I think some of even factor like TWO will be support recently. we have strong request to have this feature, and the concept of RAFT support TWO member group, @runzhiwang as a developer of ratis is working on TWO member group ratis now

We will have better control over the replication factor that we can support.

Yeah, but I think we can have a support list in configuration, we can update our support list but no need to update source code and without client upgrade.

We will need to maintain backward and forward compatibility for future changes.

Sure, it is necessary, i see a PR to bring a maven plugin to check the proto compatibility, it is great.
As a conclusion, i want to remove the limitation by Enum  type in proto, update the proto, the client  have to upgrade. We really cannot expect a totally factor of replication we will support future, but we can do some efforts like this PR to update the support replication factor without client upgrade  through move the concept of replication factor limitation from Enum to configuration.

Thanks to create this patch @maobaolong
It seems to be related to the storage class proposal published on the mailing list:
https://lists.apache.org/thread.html/r1e2a5d5581abe9dd09834305ca65a6807f37bd229a07b8b31bda32ad%40<ozone-dev.hadoop.apache.org>
With storage class you can remove any replication related information from the proto and you don't need any number just the information about the storage class. One storage class can be resolved as (RATIS/THREE --> CLOSED/TWO) but you can also support (RATIS/ONE --> CLOSED/TWO).
I would prefer to follow (or at least discuss) this more generic approach.

@elek Thank you for watching my PR. I have read the mail list link you give me before, and i agree this approach is one of the approach to solve the multi replication factor support, i think there are no conflict between my PR and the storage-class approach.
This PR aimed to remove the limitation of replication factor through protocol, instead, i use an integer type to transfer the replication factor from client to server, if we want to set up some limitation, we can use some new configuration. i think this PR is one the way to the storage-class approach.
Lets talk about the storage-class.

if we set the storage class like this (RATIS/THREE --> CLOSED/TWO), not sure if we should define a message StorageClass in the proto file which also contains replicationType and replicationFactor, if this design follow this PR, it can be (RATIS/3 --> CLOSED/2).
BTW, i think (RATIS/THREE --> CLOSED/TWO) is a good idea to follow the ratis way, but it bring a extra replica writing work during the put operation, for write performance of replication factor TWO, Ozone can be slower than HDFS does.
About (RATIS/ONE --> CLOSED/TWO). It is another idea, it looks pretty for performance, but for data redundancy, i think it really bring some losing data risk between the ONE->TWO.

So, i think storage-class approach is a good approach, but we should have more discussion work for its design, after that, it can be a pretty approach. And my proposal of this PR only want to open limitation of replication factor, the following work is support more replication factor while writing directly. If fact, i have proved Ozone can write 2 replica directly through ratis in my private branch, i will push more PR after this PR.

Thanks to explain it @maobaolong

not sure if we should define a message StorageClass in the proto file which also contains replicationType and replicationFactor,

Not exactly. My proposal to include only one "enum/int" in the proto file and remove replicationFactor and replicationType. For example use 1=STANDARAD instead of RATIS/THREE in the proto file.
The exact meaning of STANDARD(1) can be resolved on server side (and can be changed over time).

In fact, i have proved Ozone can write 2 replica directly through Ratis...

I agree with your analyses about the effectiveness of Ratis/THREE->Closed/TWO or Ratis/ONE->Closed/TWO`. I was just not sure how is it possible to use TWO with Ratis. Do you use two nodes Ratis cluster? It has totally different availability guarantee than Ratis/THREE as there is no majority just full quorum. I guess it works only if you have two nodes all the time and It couldn't work with loosing any of the nodes.
I am interested if you have more details to share...
In general:
I wouldn't like to block this effort. Based on the storage-class proposal this change is not required any more as it can be replaced with an even more generic approach (propagate only the ID of the storage-class instead of replication type / factor).
I am more interested about the consensus about the long-term divergence (long-term = until the next release...), if you need this change immediately, I am not against it.
** Footnote **:
Just some notes, not closely related. Yesterday I read the paper of the ChubaoFs and it has very interesting approach. The motivation is different, but they two different kind of replications for different use cases:

The storage engine guarantees the strong consistencyamong the replicas through either primary-backup or Raft-based replication protocols. This design decision is basedon the observations that the former one is not suitable foroverwrite as the replication performance needs to be com-promised, and the latter one has write amplification issue asit introduces extra IO of writing the log files.

With introducing storage-class AND using specific containers / replication (like Erasure Coded containers) our approach can be somewhat similar

@elek Thank you very mush for the long reply of you, it take me though more, the following is my reply:

I was just not sure how is it possible to use TWO with Ratis. Do you use two nodes Ratis cluster?
I am interested if you have more details to share...

I'm very glad you are interested the replication 2 works what i did. In fact, the master branch cannot works well with replication 2, but i really did it under the helping of @runzhiwang who is a developer of ratis.
Firstly, i checkout the current master branch of ratis(commitId: 60643005d0a6faaa25c1810fac9fcb68cda88c3b) and execute mvn install ..., then, i did some modification like https://github.com/apache/hadoop-ozone/pull/885 did, it make me build successful.
Finally, i did a test under a 3 node Ozone cluster.
bin/ozone sh key put  -r 2 /myvol/mybucket/NOTICE.txt NOTICE.txt
bin/ozone admin pipeline  list
Pipeline[ Id: 69f66a9d-38e5-4c51-8b7e-bcc2052fa9df, Nodes: 27137460-e588-4d63-bb06-15123772331c{ip: <IP_ADDRESS>, host: localhost, networkLocation: /default-rack, certSerialId: null}affc3600-f15c-4e42-b4ff-4748f8d0cd5d{ip: <IP_ADDRESS>, host: localhost, networkLocation: /default-rack, certSerialId: null}, Type:RATIS, Factor:2, State:OPEN, leaderId:27137460-e588-4d63-bb06-15123772331c, CreationTimestamp2020-05-19T08:08:35.185Z]
bin/ozone sh key info /myvol/mybucket/NOTICE.txt
{
  "volumeName" : "myvol",
  "bucketName" : "mybucket",
  "name" : "NOTICE.txt",
  "dataSize" : 17540,
  "creationTime" : "2020-05-19T08:02:28.275Z",
  "modificationTime" : "2020-05-19T08:02:29.095Z",
  "replicationType" : "RATIS",
  "replicationFactor" : 2,
  "ozoneKeyLocations" : [ {
    "containerID" : 10,
    "localID" :<PHONE_NUMBER>24550403,
    "length" : 17540,
    "offset" : 0
  } ],
  "metadata" : { },
  "fileEncryptionInfo" : null
}

The above test can be successfully too if there are only 2 datanode in Ozone cluster.

It has totally different availability guarantee than Ratis/THREE as there is no majority just full quorum.

I don't think there is no majority in a Ratis/TWO. In the 2 nodes group, there are different timeout before election for each node, when one of them achieve the election timeout the node can be a candidate, and Vote to itself, then ask the peers for vote it, so it can have majority and leader in 2 node group.

I guess it works only if you have two nodes all the time and It couldn't work with loosing any of the nodes.

As far as i know, we use ratis pipeline to write block in container, and read block though grpc, so if we lose one of two replication, it can be read as normal. if fact, i just did a test for this.
# setup a two node Ozone cluster.
bin/ozone sh key put  -r 2 /myvol/mybucket/NOTICE.txt NOTICE.txt
# kill one of the HddsDatanodeService process.
bin/ozone sh key get /myvol/mybucket/NOTICE.txt /tmp/foo
md5sum /tmp/foo
bb915076158b5871fd2e409a6dbacb1f  tmp/foo

In general ...
Thank you to let me know more about the storage-class approach,  i'm very glad to discuss this approach more detail, it is better to have a jira track this approach, maybe we need to write a design doc as an attachment.

As we don't know how long we will finish the storage-class approach, and i've support 2 replication already, further more, other number of replication can be supported under the further tests, i don't know if we can use my approach currently, there are 2 factor request in our scenario.

ChubaoFs
It is a well known fs from JD.COM, we can get some idea from it, i'd love to study it more.


Fix pipes to support the new mono-repo architecture

Seems like we've got quite the problem on our hands, well let's get this finished, no pull request this time because this is important and will be merged into main right away. It's not like there's any instance running on this code, yet, so it'll be fine!
We'll also remove UDP support together with this change, because it's not currently used anywhere in station. Only in very old versions of the voice chat. This framework was never designed for that purpose anyway, so let's cut it off!

Fixed with the latest commit.


Login / Signup page

Is your feature request related to a problem? Please describe.
no, is a feature adding request. There must be login /  signup page .
Describe the solution you'd like
creating login/signup page for user authentication.
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Add any other context or screenshots about the feature request here.
@sanjay-kv  @rahulgithub-web  please assign me this under gssoc-extended , hacktober fest accepted and with a suitable level . will bw happy to contribute.

@yatulearn
Please Assign this work to me .


Cannot call start a second time

If you try calling start(), stop() and then start() again, it fails and the process ends.

Not just can't call start/stop/start. If you do this start/stop/start cycle, things break. Like setInterval.
Here is a simple log output of running start/stop/start in a JS file with the debug output set in appmetrics.
debug.txt

Also, here is a fine demonstrating that start/stop/start cycle breaking setInterval
var appmetrics = require('appmetrics');

function start() {
  console.log('--------------------START----------------------------');
  appmetrics.start();
}

function stop() {
  console.log('---------------------STOP----------------------------');
  appmetrics.stop();
}

setInterval(() => console.log('tick'), 1500);

const run = [stop, start];

function timeout() {
  console.log('timeout');
  if (run.length == 0) return;
  const next = run.shift();
  next();
  setTimeout(timeout, 5000);
}

setTimeout(timeout, 5000);

This will be investigated further and fixed in a future release

So, I just did a quick dive of disabling plugins, and I believe it has to to with the Node Loop Plugin.
What it could be no idea, but at least when I remove that from my repository it seems to work.

Now fixed by #348


fix typo session Error Undefined index

When i use the session function
The following error was encountered
"Undefined index: foobar"
Change
Before
 $_SESSION[$val] ?: null;

After
 $_SESSION[$val] ?? null;

I remember seeing a comment from @lonnieezell about something like this, while I was on vacation. It seems that the line you are "fixing" was purposefully introduced.
For future reference, we would like contributions signed ... https://bcit-ci.github.io/CodeIgniter4/contributing/signing.html

If I did change this one, I was wrong. :) Thanks for the catch. Merging.


[FLINK-20372] Update Kafka SQL connector page to mention properties.*…

… options

What is the purpose of the change
Add document to use properies to pass kafka config.
Brief change log

The current page looks:


Add Net6.0Windows project

Add new package Basic.Reference.Assemblies.Net60Windows that contains all reference assemblies from https://www.nuget.org/packages/Microsoft.WindowsDesktop.App.Ref/6.0.10.

This looks very reasonable. One item you're missing in this PR is publishing the new package. Need to update this YML file to have a publish step
https://github.com/jaredpar/basic-reference-assemblies/blob/main/.github/workflows/publish.yml#L34

This looks very reasonable. One item you're missing in this PR is publishing the new package. Need to update this YML file to have a publish step
https://github.com/jaredpar/basic-reference-assemblies/blob/main/.github/workflows/publish.yml#L34

Change done!
Please note that for my use case, I needed the assemblies as files on the local disk. Rather than saving them to disk from resources, I'm finally applying the same technique but directly in my application in a CopyReferenceAssemblies.targets:
<!-- .target to include in projects (.exe or unit tests) that will need to compile scripts.
 It will copy reference assemblies in ReferenceAssemblies/ sub-directory -->
<Project>
  <!-- .NET Framework 4.7.2: copy all reference .dll (including facades) from Microsoft.NETFramework.ReferenceAssemblies.net472 package -->
  <ItemGroup Condition=" '$(TargetFramework)' == 'net472' ">
    <PackageReference Include="Microsoft.NETFramework.ReferenceAssemblies.net472" Version="1.0.3" IncludeAssets="none" PrivateAssets="all" GeneratePathProperty="true" />

    <None Include="$(PkgMicrosoft_NETFramework_ReferenceAssemblies_net472)\build\.NETFramework\v4.7.2\*.dll;$(PkgMicrosoft_NETFramework_ReferenceAssemblies_net472)\build\.NETFramework\v4.7.2\Facades\*.dll"
          Exclude="$(PkgMicrosoft_NETFramework_ReferenceAssemblies_net472)\build\.NETFramework\v4.7.2\System.Enterprise*" >
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
      <Link>ReferenceAssemblies\%(Filename)%(Extension)</Link>
    </None>
  </ItemGroup>

  <!-- .NET 6.0: Copy all reference .dll from Microsoft.NetCore.App.Ref package -->
  <ItemGroup Condition=" '$(TargetFramework)' == 'net6.0' ">
    <PackageReference Include="Microsoft.NetCore.App.Ref" Version="6.0.9" IncludeAssets="none" PrivateAssets="all" GeneratePathProperty="true" />

    <None Include="$(PkgMicrosoft_NetCore_App_Ref)\ref\net6.0\*.dll">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
      <Link>ReferenceAssemblies\%(Filename)%(Extension)</Link>
    </None>
  </ItemGroup>

  <!-- .NET 6.0 (Windows): Copy all reference .dll from Microsoft.NetCore.App.Ref and Microsoft.WindowsDesktop.App.Ref packages -->
  <ItemGroup Condition=" '$(TargetFramework)' == 'net6.0-windows' ">
    <PackageReference Include="Microsoft.NetCore.App.Ref" Version="6.0.9" IncludeAssets="none" PrivateAssets="all" GeneratePathProperty="true" />
    <PackageReference Include="Microsoft.WindowsDesktop.App.Ref" Version="6.0.9" IncludeAssets="none" PrivateAssets="all" GeneratePathProperty="true" />

    <None Include="$(PkgMicrosoft_NetCore_App_Ref)\ref\net6.0\*.dll;$(PkgMicrosoft_WindowsDesktop_App_Ref)\ref\net6.0\*.dll"
          Exclude="$(PkgMicrosoft_NetCore_App_Ref)\ref\net6.0\WindowsBase.dll">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
      <Link>ReferenceAssemblies\%(Filename)%(Extension)</Link>
    </None>
  </ItemGroup>

</Project>

Thx a lot for sharing your ideas!

thanks!


plugin GroupIdentity is not supported by system

What happened:
Hi~
I followed steps here to try "QoS Management for Out-of-Band Applications on Host".
https://koordinator.sh/docs/user-manuals/host-application-qos
But in the end  I could not find the /sys/fs/cgroup/cpu/host-latency-sensitive/nginx/cpu.bvt_warps_ns  file.
I find some information about GroupIdentity in koordlet log:
I0531 15:18:59.905356   27198 cgroup_driver.go:225] Node yz2-75-149 use 'cgroupfs' as cgroup driver according to the cgroup name
I0531 15:18:59.905700   27198 kidled_util.go:147] file scan_period_in_seconds is not exist file not exist
W0531 15:19:00.013516   27198 runtimehooks.go:114] new nri mode runtimehooks server error: failed to validate nri server, err: nri socket path "/host-var-run/nri/nri.sock" does not exist
I0531 15:19:00.013561   27198 callback_runner.go:76] states informer callback runtime-hooks-reconciler has registered for type RegisterTypeAllPods
I0531 15:19:00.013569   27198 callback_runner.go:76] states informer callback host-app-reconciler has registered for type RegisterTypeNodeSLOSpec
I0531 15:19:00.013581   27198 runtimehooks.go:163] start register plugins for runtime hook
I0531 15:19:00.013589   27198 runtimehooks.go:169] runtime hook plugin CoreSched enable false
I0531 15:19:00.013608   27198 bvt.go:54] register hook GroupIdentity
I0531 15:19:00.013628   27198 hooks.go:50] hook GroupIdentity is registered
I0531 15:19:00.013675   27198 bvt.go:78] update system supported info to false for plugin GroupIdentity, supported msg file not exist
I0531 15:19:00.013686   27198 rule.go:59] new rule GroupIdentity has registered
I0531 15:19:00.013700   27198 reconciler.go:209] register reconcile function reconcile pod level cpu bvt value finished, info: level=pod, resourceType=cpu.bvt_warp_ns, filter=none, conditions=[]
I0531 15:19:00.013717   27198 reconciler.go:209] register reconcile function reconcile kubeqos level cpu bvt value finished, info: level=kubeqos, resourceType=cpu.bvt_warp_ns, filter=none, conditions=[]
I0531 15:19:00.013725   27198 runtimehooks.go:169] runtime hook plugin GroupIdentity enable true

I0531 15:19:01.520339   27198 interceptor.go:68] plugin GroupIdentity is not supported by system
I0531 15:19:01.522479   27198 host_qos_context.go:74]
I0531 15:19:01.522484   27198 host_app_reconciler.go:163] calling host reconcile function reconcile host application cpu bvt value for app nginx finished
I0531 15:19:01.522492   27198 cpuset.go:162] get cpuset 0-1 for host application nginx from rule
I0531 15:19:01.522500   27198 host_qos_context.go:90] set host application nginx cpuset 0-1 on cgroup parent host-latency-sensitive/nginx
I0531 15:19:01.522505   27198 host_qos_context.go:74]
I0531 15:19:01.522516   27198 executor.go:94] successfully cacheable update resource /host-cgroup/cpuset/host-latency-sensitive/nginx/cpuset.cpus to 0-1, isUpdated false
I0531 15:19:01.522523   27198 host_app_reconciler.go:163] calling host reconcile function set host application cpuset for app nginx finished
I0531 15:19:01.520605   27198 cpu_burst.go:208] start cpu burst strategy
I0531 15:19:01.522742   27198 cpu_burst.go:325] share pool usage / share pool total = [0.10970665110704547/2] = [0.054853325553522736],  threshold = [0.5]

What you expected to happen:
$ cat /sys/fs/cgroup/cpu/host-latency-sensitive/nginx/cpu.bvt_warps_ns
$ 2

Environment:

Koordinator version: - v1.4.1
Kubernetes version (use kubectl version): v1.28.2
docker/containerd version: docker 20.10.14
OS (e.g: cat /etc/os-release): Red Hat Enterprise Linux Server release 7.9 (Maipo)
Kernel (e.g. uname -a): Linux 4.20.12-1.el7.elrepo.x86_64 #1 SMP Sat Feb 23 09:15:50 EST 2019 x86_64 x86_64 x86_64 GNU/Linux
cgroup driver: cgroupfs

Anything else we need to know:

@845630340 The Group Identity feature is supported by some Linux distros like Anolis OS, while the RHEL 7 does not support it. In the environment without the Group Identity, you can try the CPUSuppress feature to suppress the BE pods and improve the performance of the colocated LS workloads.

Get it! Thanks for you help.


Refactor code to improve performance and readability

This pull request includes several code refactorings aimed at improving performance and readability. The changes include adding the "view" keyword for tooltips, refactoring tooltip icon positions, adding tooltips to fields, and adding functionality for action links. These changes will enhance the overall quality of the codebase and make it easier to maintain and understand.

Oops sorry I forgot to uncomment that. It was causing me errors I even
wrote a reminder to do it.  Thanks
On Sun, 14 Jan 2024, 19:39 Cortex R&D Inc., @.***>
wrote:

@.**** approved this pull request.
Seems to work well, including for link actions.
FYI, you commented-out the second call to disableFilterOnFields. But
actually, it's the first one that will be gone, since it the keywords is
now processed for both the fields and views. I'll fix that.
—
Reply to this email directly, view it on GitHub
https://github.com/cortexrd/Knack-Toolkit-Library/pull/192#pullrequestreview-1820290353,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ACQQXA6X7WJMNY5DE6P2VWTYOQYARAVCNFSM6AAAAABB2HVMFOVHI2DSMVQWIX3LMV43YUDVNRWFEZLROVSXG5CSMV3GSZLXHMYTQMRQGI4TAMZVGM
.
You are receiving this because you authored the thread.Message ID:
@.***>


Have some question about toc extension code line 313-314

the toc extension code line in 313-314:
        for pp in self.md.postprocessors:
            toc = pp.run(toc)

It's will call all postprocessors, I am a new guy try to write some extension and then find the toc conflict my extension, and finally found that the toc extension called all postprocessor [so my postprocessor run function has call twice], I think this piece of code is a little out of control, because all the future extension will consider the toc extension will called my postprocessor, maybe limited to current the native some of postprocessors would be more nicer?
If the future extension has some needed to the toc output, let's they do their own.
just some advise, maybe there are a more good reson to write like that?

If you look at the built-in postprocessors, you should notice that they all undo things which were done earlier to the text. For example, they swap out placeholders for HTML entities, raw HTML and and the like. If that wasn't done, then the TOC could contain placeholders in the final result rather than the expected text. So, yes, the postprocessors are run twice: once on the body of the output and once on the TOC. However as the text within the TOC is a separate (now independent) copy of text from the body, the second run is necessary. Of course, the Markdown core doesn't know about this need of the extension (nor should it), so the extension makes the extra call itself, which it only runs on the TOC, not on the document body.
Because you are objecting to this behavior, then I am assuming you are not using a postprocessor as cleanup, but as the main function of your extension. This is not how postprocessors were intended to be used. If you can implement your entire extension in a postprocessor, then you don't need to use the extension API at all. Simply pass the output of Markdown into your own custom function directly and return the altered results.

@waylan Thanks your explaination, maybe this write to the document would be nicer.
I just think maybe limited that piece of code behavior to the official supported extension would be nicer, like that:
OFFICIAL_EXTENSIONS = []
        for pp in self.md.postprocessors:
            if self.md.postprocessors in OFFICIAL_EXTENSIONS:
                toc = pp.run(toc)

Again just i am think, How to do depend on your guys.
This issue will be closed in short time.

In my experience most third party extension also need this behavior for the same reasons.
If your extension is so unique that it needs different behavior, then it is up to your extension tp provide a workaround. Of course, you can always override/replace the TOC extension with your own. Therefore, we will not be making the requested change.


Open Community (TDC) Meeting, Thursday 15 April 2021

NOTE: This meeting is on Thursday at 9am - 10am PT
Zoom Meeting link: https://zoom.us/j/975841675. Dial-in passcode: 763054
In order to give some more visibility into the topics we cover in the TDC meetings here is the planned agenda for the next meeting.  Hopefully this will allow people to plan to attend meetings for topics that they have an interest in.  And for folks who cannot attend they can comment on this issue prior to the meeting.  Feel free to suggest other potential agenda topics.
Please submit comments below for topics or proposals that you wish to present in the TDC meeting
The agenda backlog is currently maintained in issue #2482

Topic
Owner
Decision/NextStep

AOB (see below)
TDC

New issues / PRs labelled review
@OAI/triage

New issues without response yet
@OAI/triage

/cc @OAI/tsc Please suggest items for inclusion

Maybbe look at #2524 and #2526 ?

@mkistler  Sorry we didn't get to the vocab topic.  I'm going to review your issue and we can discuss more in next week's meeting.


Permanent in-depth review on Chrome Web Store

What happened?
Google makes it more and more difficult to publish powerful extensions such as IPFS Companion.
In preparation for Manifest v3 (https://github.com/ipfs-shipyard/ipfs-companion/issues/666) Chrome Web Store artificially slows down publishing of extensions that request access to certain APIs.

Why we need those APIs?
IPFS Companion uses webRequest APIs to redirect requests for IPFS resources to local gateway and to display menu items for things like copying CIDs/URL or pinning.
We are unable to switch to Manifest v3  (https://github.com/ipfs-shipyard/ipfs-companion/issues/666) because it was not released yet.
What does this mean for IPFS Companion?
Due to this change, both Beta and Stable releases may land days or weeks after official release. Google is slowing down publishing cycle of extensions like ours without providing alternative APIs.
I will look into ways we could mitigate this and post updates in this issue.

Published v2.9.0 (Stable) today to Chrome Web Store, let's see how long it takes Google to review it.
(v<IP_ADDRESS>5 (Beta) is pending since yesterday)

First data point: v2.9.0 got reviewed and published sometime today. It took 3 days.
(Let's keep this issue open for tracking review time over time)

Submitted v<IP_ADDRESS>0 (Beta), pending review.

Tried to submit v<IP_ADDRESS>2 (Beta) but failed:

old interface:

new interface:

I am also unable to cancel review of old version nor bump/replace it with new one.
Beta channel for Chrome is effectively useless.

Submitted v<IP_ADDRESS>1, starting clock again.

Submitted v2.10.0, v<IP_ADDRESS>1 still pending review.

v<IP_ADDRESS>1: got approved on 19th
(once again, after exactly 7 days – hardcoded delay? :thinking: )

v2.10.0: still in review  (guessing.. 2 more days?)

On the bright side, this is a generic problem, not specific to IPFS Companion.
Everyone using webRequest APIs is on the same boat:

The Pending Review process is broken: can we please get an update

I submitted new beta v<IP_ADDRESS>7 to Chrome Web Store.
This time, submission process forced me to fill rationale for permissions requested by our extension.
I was unsure what specificity is expected, so used moderate one in every field:

Fingers crossed.

Aaaand we got rejected:

Asked for clarifications on how can we comply.

Re-submitted with updated, more detailed list:

Full text below:

Single Purpose Description
Detecting IPFS resources on the web (CID, DNSLink), redirecting them to local IPFS gateway and providing context actions for importing files to IPFS.
activeTab
Ability to get URL of current tab and inject content scripts enabled by the users. Effectively superseded by Host Permission, but listed for interop reasons (we maintain single codebase for Chromium and Firefox).
tabs
"tabs.onActivated" is used to update tab.id used in context actions,
"tabs.create": necessary to create a new tab when recovering from a failed HTTP request to a public gateway or a DNSLink website that is currently offline
webNavigation
"webNavigation.onCommitted" is used for  updating actions in context menus (menu items for copying CID of current IPFS resource etc),
"onDOMContentLoaded" is used for injecting content scripts of experiments enabled by the user (eg. linkify one, which makes content paths clickable)
webRequest
Blocking webRequest APIs are necessary for extension to inspect URL of every request to make a decision if it should be redirected to local IPFS gateway. It also handles network failures by detecting them and recovering via IPFS, when possible.
Host Permission
We request "<all_urls>" because IPFS Companion needs to be able to inspect URL of every request to make a decision if it should be redirected to local IPFS gateway. ("activeTab" is not enough, as it won't work for background pages fetching content from IPFS, such as a music player)
Remote Code
No remote code, everything is bundled with the extension, and sources are available at https://github.com/ipfs/ipfs-companion/

Got a generic reply without any specifics:

Dear Developer,
Upon review of your Product, [IPFS Companion (Beta @ 3092cb2) ], with ID: [hjoieblefckbooibpepigmacodalfndh], we find that it does not comply with the Chrome Web Store’s User Data Policy, and it has been removed from the store.
Your Product violates the “Use of Permissions” section of the policy, which requires that you:
Request access to the narrowest permissions necessary to implement your Product’s features or services. If more than one permission could be used to implement a feature, you must request those with the least access to data or functionality.
Don't attempt to "future proof" your Product by requesting a permission that might benefit services or features that have not yet been implemented.
To reinstate your Product, please ensure that your Product requests and uses only those permissions that are necessary to deliver the currently stated product’s features.
If you’d like to re-submit your Product, please modify your Product so that it complies with the Chrome Web Store’s Developer Program Policies, then re-publish it in your Developer Dashboard.
Please reply to this email for questions / clarifications regarding this Product removal.
Thank you for your cooperation,
Google Chrome Web Store team

Constructive advice would be very useful here, but they do not seem to care :-C
I can rewrite rationale for each permission and submit again, but it starts to feel like a futile task without knowing what exactly is "future proofed too much" or which permissions are redundant in their opinion.

Submitted a new version (v<IP_ADDRESS>9) which no loger requests alarms and activeTab permissions.
Hopefully it will be enough to pass the review.

So far the publishing delay was around 7 days, due to COVID-19 it will get even worse:

Aproved:

[x] v<IP_ADDRESS>2 (for some reason this was quick, under 3 days!)

Pending:

[ ] v2.11.0
[ ] v<IP_ADDRESS>4

Google now wants explanations for more permissions and apis :no_mouth:
Wrote explainers that will be submitted with next release:

idle

We need to read it so we don't update peer count when browser is in idle state.

notification

We display notifications when IPFS node changes state between online and offline, and when shareable link is copied to clipboard. Notifications can be disabled in Preferences.

storage

When user opt-ins to running embedded js-ipfs, we need storage for IPFS datastore

unlimitedStorage

Node identity is stored along the IPFS cache and this ensures node does not hit browser limits and that PeerID and keys are not  lost due to browser's crude garbage collection (js-ipfs has its own GC mechanism)

contextMenus

User can select text, image or video and add it to IPFS via context menu actions.

clipboardWrite

User can copy a shareable link to files imported to IPFS.

webRequest

webRequest APIs are necessary for extension to inspect URL of every request to detect IPFS resources on the web. It also handles network failures by detecting them and recovering via IPFS, when possible.

webRequestBlocking

Blocking webRequest APIs are necessary for extension to inspect URL of every request to make a decision if it should be redirected to local IPFS gateway. It also handles network failures by detecting them and recovering via IPFS, when possible.

Submitted v<IP_ADDRESS>8 to the beta channel.
Interesting fact: even if we unpublish/cancel/abort published version, it is still blocked until the review happens:

This is important caveat to understand: means if we unpublish by mistake, it's not easy to restore if in "pending review" state.

Cancelled and resubmitted <IP_ADDRESS>3

Submitted v2.12.0 as well (Stable channel has >30k users)

the prophecy is true: we are unable to ship a bugfix release v<IP_ADDRESS>6 until the previously submitted one is approved:

I really like the amount of whitespace before the OK button.
Really highlighted all my options as a browser extension developer :ok_hand:

It gets better: update to the Stable channel got rejected "because of reasons" (something related to privacy policy, but generic text does not help much):

Note that our privacy policy did not change. Unsure if it is because we've moved https://github.com/ipfs-shipyard/ipfs-companion/blob/master/PRIVACY-POLICY.md recently, or maybe they changed the rules since they've read our privacy policy the last time in February (https://github.com/ipfs-shipyard/ipfs-companion/issues/808#issuecomment-588314544).
I've reached out to @dotproto asking for more details.

<IP_ADDRESS>6 got approved, so I assume privacy policy is ok – re-submitted  v2.12.1 with the same policy/links

2.12.1 got accepted (under 2 days, good sign)

We might get hit in a crossfire in August, Google plans to double down on "spam extensions":
https://blog.chromium.org/2020/04/keeping-spam-off-chrome-web-store.html
(so far we had problems nearly every time they changed policy at Chrome Web Store)

Submitted 2.13.0

v2.13.0 got approved ~3 hours ago (interesting!)

Submitted v<IP_ADDRESS>9 to Beta channel

Submitted v2.13.1 to Stable channel :hourglass_flowing_sand:

Submitted v<IP_ADDRESS>0 – waiting :hourglass_flowing_sand:

Submitted v2.14.0 – waiting :hourglass_flowing_sand:

Submitted v<IP_ADDRESS>9

v<IP_ADDRESS>9 got rejected because of invalid privacy policy link:

I checked and for some reason the privacy policy had space in front of the URL:

Note that (afaik) we did not change it recently, and both Beta and Stable got previously approved with the same value. This is yet another example of Chrome Web Store review process being severely flawed and brittle.
I've removed the space from URL and resubmitted, but we may get rejected again due to newly added(?) rules:

Right now privacy policy is in both description and the dedicated field (pictured above). The URL at https://ipfs.io/companion-privacy is a redirect to https://github.com/ipfs-shipyard/ipfs-companion/blob/master/PRIVACY-POLICY.md
Just to be very clear: none of this was a problem the last time we published with the same privacy policy URL (both Stable and Beta :exclamation:) :expressionless:
Provided the above feedback to Google.

v<IP_ADDRESS>9 got approved after 2 days without any explanation why it was rejected in the first place :expressionless:
Assuming it was that whitespace character + some new validation rules Google added since our last release.

Got reply from Google, turns out it was not our fault :hugs:

Submitted v<IP_ADDRESS>6 (Beta) – pending review

Submitted v2.15.0 – pending review

Ok, last test cycle, if its within 1-2 days I'll close this :crossed_fingers:
Submitted v<IP_ADDRESS>2 – waiting

Ok, last test cycle, if the next stable version gets approved within 1-2 days I'll close this issue :crossed_fingers:
Submitted v<IP_ADDRESS>7 (Beta)

Submitted v2.16 but may be delayed due to https://github.com/ipfs-shipyard/ipfs-companion/issues/942

Review time has been within 1-2 days, and recently under 1 day (8h) so I'm closing this as we no longer seem to be impacted :+1:
(Will reopen if review time becomes a problem again)


Not saving or getting the state properly.

Caused by: android.os.BadParcelableException: ClassNotFoundException when unmarshalling: com.rey.material.widget.Switch$SavedState
maybe an error in the parcelable method!?

PS: this was happen inside a fragment, i've fixed your code but in a quick but latter i will review and if you like i can share

Just ran into this issue myself, any fix?


Add utils functions for RelativeResourceNameWithVersion

This func generates a string very similar to a SelfLink but without including the "googleapis.com" endpoint."

/assign @bowei

Let's discuss -- how are we going to use the new function? Don't we need to make the http://googleapis.com... configurable for all instances?

/hold

Closing in favor of https://github.com/GoogleCloudPlatform/k8s-cloud-provider/pull/79


Overlapping of content fixed

Issue resolved: #608
BEFORE

AFTER

This is not level1 task
Can you able to implement an "add to cart" feature?

@Tejashri-Taral  yes,   I can add "add to cart" option . I will work on this issue asap

@Tejashri-Taral  i have done the assigned work on add to cart issue. Please have a look and  merge this.


Rename fixtures to only include event type

Automated message from Dropbox CLA bot
@eeshangarg, it looks like you've already signed the Dropbox CLA. Thanks!

(I am not able to find the issue or chat log which contains the decision to rename the fixtures)

@rht : I talked to @timabbott about it some time ago. This is a follow up to #4637. :)

I went through the renames, for consistency check with the intent of the PR (though being a human-sed, it makes me error-prone still) ... LGTM

I caught one more instance of the old structure, in f36000d6705c872b92577fddfbfd454aa50cb4f2, and merged this.  Thanks @eeshangarg!  It's nice to be able to close out having a sane directory structure here.


Add deprecated tag for standardKernels property

Add deprecated tag for standardKernels property as part of a NotebookProvider in azdata.d.ts.
I also marked it as optional, but if anyone strongly objects, I can put it back to required 😄

Coverage increased (+0.04%) to 34.432% when pulling b4f38d3e2f3cb3a3e1fed108d8f8aac7b275ffeb on fix/removeAPI into 637bc8d5ba8cc51f8d74e6db87fa7d93c6b2ca3a on main.


Origins incompatibility

Origins with the Herbivore or carnivore power cannot use any hearts in the mod

https://www.curseforge.com/minecraft/mc-mods/extra-origins This also happens with the nectivore power from Extra origins


Register redux actions from respective modules

Right now @deephaven/redux package has all the actions/reducers defined. Instead, the actions/reducers should be defined in their respective modules, and registered there.
See an example: http://nicolasgallagher.com/redux-modules-and-code-splitting/

Related to #23

This was completed with #203


Added 2 new samples

List AGOL basemaps
Org basemap picker

Putting this one on hold to discuss whether we really need two samples to show basemap


Remove mod id from from workshop acf on installmod

This removes the mod from the appworkshop_${mod_appid}.acf when attempting a mod install, as steamcmd will cache that a mod download failed, and will return File Not Found when attempting to fetch the mod again, even if the steam login now has access to the mod.
This should resolve #205.

I will merge this and a few other pull requests into a single pull request.


Please remove this file.

Mendix 6 does not fully support [flat & delimited file importer module], yet.
It causes a lot of linking errors to a missing layout template.

Thanks for seeing this for Mx 6 and 7, Isamu. I will just get it verified and then adjust the documentation. Please note that you can also register an issue directly with the developer via the module's GitHub project: https://github.com/Erwin-t-Hoen/Flat-File-Importer/issues

Oh, thank you for letting me know.

Closing this pull request. Will update file manually and remove necessary sections.


cp: makes --preserve requires =

prevents --preserve to eat the next argument when no value is passed.
default value for --preserve is set to mode,ownership,timestamps
before the patch:
cp --preserve foo bar
error: invalid value 'foo' for '--preserve [<ATTR_LIST>...]'
[possible values: mode, ownership, timestamps, context, link, links, xattr, all]

Fixes https://github.com/uutils/coreutils/issues/4924
The issue mentions tests/cp/reflink-perm which is not present in main.
So it is untested with reflink-perm, any idea where to find that test?

it is a GNU test, sorry

could you please add a test to make sure we don't regress ?

the name is fine :)

sweet:
Congrats! The gnu test tests/cp/reflink-perm is no longer failing!

but it broke many windows tests. could you please have a look ?

but it broke many windows tests. could you please have a look ?

The broken tests related to 'preserve' on windows are because "ownership" is unix only and the previous version of the patch was setting ownership as part of the default missing values no matter the operating system.
Unfortunately I don't have access to a windows machine. I hope this fixes it.


[Bug]: Link of website on repo is not working

Contact Details
<EMAIL_ADDRESS>What happened?
The link of the repo: www.vyvy-vi.ninja is outdated/doesn't work... Kindly fix or remove the link from the repo.
Version
1.0.2 (Default)
What browsers are you seeing the problem on?
Chrome
Relevant log output
No response
Code of Conduct

[X] I agree to follow this project's Code of Conduct

should be replaced with projects.vyvy-vi.com


Display stdout/stderr from script/run

Previously stdout and stderr weren't captured. This switches script/run to child_process.spawn allowing for streaming stdout and stderr.
This also fixes an error in the 'undo' menu accelerator and fixes up a small code style issue.

I've also pushed a fix which prevents the app from crashing upon quitting, 69da922.

I'm into it, thanks @mcolyer!

/cc @charliehess, we should backport this into $REDACTED


Bug - using obstacle or landmark alongside IDMVehicle

I was trying to use vehicles of type IDMVehicle in a custom environment, which I faced an error.
In this line, the lane_distance_to() method is called on an object of type Landmark, which clearly doesn't have this method. I traced the code to see how ego_vehicle can become of type Landmark and it turned out that road.neighbor_vehicles has set ego_vehicle to a Landmark object in this line.
It seems that changes in the commit 9815d9012204058e85bba2def180e2bc7983a922 cause this.
I suggest adding a check like not isinstance(ego_vehicle, RoadObject) before executing the code on line 129 of behavior.py mentioned above since road objects can not accelerate at all

Is this commit enough? Or you've planned more fundamental changes?

No, it seems alright to me. I'll cherry-pick it.


[BUG]: VC Template -> Template is not getting added after editing and save

What is the bug related to?
Registry Core
What went wrong?

What did you expect to see?
Certificate should get add successfully
Additional Context
No response
Relevant logs/output (if any)
No response

Dependency on backend -
https://github.com/Sunbird-RC/community/issues/762

dependency resolved


[FR] - Documentation: Making an Alonzo-era blockchain from scratch

External
Area
Other
Describe the feature you'd like
We to implement our own end-to-end testing on a private alonzo-era testnet.
There is a nice document for a Shelley-era blockchain here:
https://github.com/input-output-hk/cardano-node/blob/master/doc/reference/shelley-genesis.
We were hoping for a similar one for the Alonzo era.
Describe alternatives you've considered
To figure it out ourselves.
Additional context / screenshots
cc @MatthewCroughan who has done a lot of digging on this topic

You can already do that now, there are already a few private networks around. See scripts folder for your reference

There are a lot of scripts to choose from, and they all do a lot.
This issue is about documentation, similar to the shelley-genesis.md document.
It tells you how to bootstrap a network from scratch using English.
We would prefer to not have to reverse engineer large scripts and instead would like to know only what is necessary to bootstrap a minimal network.

@rdlrt Any chance that this could be added to the roadmap? Being able to set up a private testnet is crucial for developing daps.

I use custom scripts created using mkscript as input that's fit for purpose. For any changes/inclusions on IO on their roadmaps, that's up to IO teams

I've found too that the the mkfiles.sh script is the only thing worth looking at for this purpose. It is worth noting that there is a bad practice of keeping code that is not useful anymore archived in production. The main branches of the IOHK repos often contain code that is not intended to be used by anyone anymore, which means that anyone new to developing with Cardano has to spend months down rabbit holes sifting through the code, to discover what code is still useful vs what is obsolete.

Closing this. If this is still relevant please reopen.


List request and request-promise as devDependencies

request and request-promise are listed as dependencies.
This leads to an unnecessary bloated package size when installing micro-cors.
  "dependencies": {
    "request": "^2.81.0",
    "request-promise": "^4.2.0"
  },

micros are supposed to be light!

Good call thanks!


added 1st prow job

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by:
To fully approve this pull request, please assign additional approvers.
We suggest the following additional approver: brmclaren
If they are not already assigned, you can assign the PR to them by writing /assign @brmclaren in a comment when ready.
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS

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

/lgtm

@BRMcLaren: you cannot LGTM your own PR.

In response to this:

/lgtm

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

/retest

/test ?

/honk

/close

@BRMcLaren: Closed this PR.

In response to this:

/close

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

/reopen

@BRMcLaren: Reopened this PR.

In response to this:

/reopen

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

/honk

/joke

@BRMcLaren: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

serverless-jenkins
d25e67f30fa64e7e7a1c55c1926e6ceaf9ac4a20
link
/test this

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

@BRMcLaren: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

serverless-jenkins
6dda9bdb930e3bc8c79a62a2f367a46394450496
link
/test this

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


Idea to bypass freeze checks by using a context manager.

Today, django-fsm-freeze relies on update_fields argument of save() to bypass the freeze checks. But that API is internal to django and we might accidentally bypass freeze checks.
I suggest to use another approach to bypass checks, using an API that belongs to django-fsm-freeze in order to mitigate the accidental bypasses that update_fields brings.
Thanks to the usage of a context manager we could temporarily deactivate freeze checks
>>> from django_fsm_freeze import bypass_fsm_freeze

>>> instance.save()  # fails
[...]
FreezeValidationError

>>> with bypass_fsm_freeze():
>>>    instance.save()  # succeed

Thanks for the idea! will look into this :)


Add Yipei's bot account as approver.

This will allow her to LGTM changes from Reviewable.io where we use the "-bot" account.

LGTM

May need to investigate the warning....

Yep.
The warning is probably because Yipei hasn't confirmed the invitation for the -bot account yet. Once that's done, I expect the warning to go away :)


Add clone_key() method to private key types

Right now it's possible to clone a PrivateKeyDer, but it's pretty unergonomic. I added this in a work repo:
// `PrivateKeyDer` doesn't implement `Clone` to help avoid accental leaking of the secret key.
// Unfortunately working around this is a bit involved.
fn clone_key(key: &PrivateKeyDer<'_>) -> PrivateKeyDer<'static> {
    match &key {
        PrivateKeyDer::Pkcs1(key) => {
            PrivateKeyDer::from(PrivatePkcs1KeyDer::from(key.secret_pkcs1_der().to_vec()))
        }
        PrivateKeyDer::Sec1(key) => {
            PrivateKeyDer::from(PrivateSec1KeyDer::from(key.secret_sec1_der().to_vec()))
        }
        PrivateKeyDer::Pkcs8(key) => {
            PrivateKeyDer::from(PrivatePkcs8KeyDer::from(key.secret_pkcs8_der().to_vec()))
        }
        _ => unreachable!(),
    }
}

Pave this path, while still avoiding a Clone impl that would make it easy to leak private key material.
Fixes #25.

Is the theory that making people write clone_key() (instead of clone() via std::clone::Clone) will give them more pause to consider if it is really needed? I can be down with that, just want to ensure I'm not missing anything.

Is the theory that making people write clone_key() (instead of clone() via std::clone::Clone) will give them more pause to consider if it is really needed? I can be down with that, just want to ensure I'm not missing anything.

Yes, that is the theory. In particular, while .clone() might still be something to pay attention to especially when applied to a binding called key or private_key, it can be quite easy to slap a derive(Clone) on a type which might include the key, which wouldn't work in this case and require a manual Clone implementation. This is analogous to how we don't have an AsRef<[u8]> implementation for the private key types but we do have a secret_*der() method.
ring AFAICT doesn't expose any way of getting at the internals of private keys except for directly after generating one, so it is more strict. I'm hoping to strike a balance that does make it possible but that triggers enough thinking to consider whether it's the right thing to do in context.

In my case, I didn't want access to the internals of the key, I just had a few layers of abstraction between the place where I acquired the private key and where it gets used. Those intermediate layers generated borrow check errors (because they were async fns that needed to be 'static), so I needed a way to jump from maybe-borrowed to owned.


Rdalkire simulate stall

Mainly I added an optional feature to delay message acceptance, which I need in order to test and code-around a performance problem in another application.

Can this PR be merged to fix https://github.com/Nilhcem/FakeSMTP/issues/20?


Shouldn't an unreleased package start at initial version (0.0.0) rather than calculated from all changes?

https://github.com/jscutlery/semver/blob/1f2242f0350ea1589af581f0f3df4add30585adf/packages/semver/src/executors/version/utils/try-bump.ts#L54
If I have a package in my monorepo that does not have a release tag, I would expect that it would start at 0.0.0, however it starts at 1.0.0, assuming it is because in my long git history there are "BREAKING CHANGES" listed.
What is the use case for "New version will be calculated based on all changes since first commit. " rather than just 0.0.0?
Wondering if it would make sense to add an initialVersion option to the @jscutlery/semver:version, which if defined would by-pass the calculation of the default functionality. Additionally, this could act as a "minimum version" as well to support graduating a package from 0.0.0 => 1.0.0.

If initialVersion is undefined, use current functionality
If initialVersion is defined, and the new version is lower than the initialVersion, then the defined initialVersion is used

Currently, how do you graduate a package if entire release process is CI/CD driven? It would be great to simply update initialVersion=1.0.0 to graduate a package, which could get handled via CI/CD release without manually have to manage "releaseAs".

Related:
https://github.com/jscutlery/semver/issues/444#issuecomment-1185510458
(set initial version on the package.json)


⚠ Fortnite has degraded performance

In 1cdbe8b, Fortnite (https://fortnite.com) experienced degraded performance:

HTTP code: 200
Response time: 1552 ms

Resolved: Fortnite performance has improved in f4d9624.


Add an order field

It would be great if you could assign an order to the record to indicate the order in which the old paths should be evaluated.

@ndunn219 what are you trying to do that doesn't work as expected?

Thanks for the quick reply! Maybe I jumped the gun, as I just started with this, but looking at the code, I see it orders by old_path. So, let's say I have the following two old paths:
/foo.+
/foo/bar

And I want the second one to take precedence. Currently, I don't see a way to do that.
I think this feature can be added without sacrificing backward compatibility by adding this field:
order_of_evaluation = models.IntegerField(
    blank=True,
    default=0,
    verbose_name=_('Order of Evaluation'),
    help_text=_(
        'Determines the relative order in which old paths are evaluated.'))

And changing the ordering to:
ordering = ['order_of_evaluation', 'old_path']

@ndunn219 actually are you experiencing the "wrong" behaviour?
If you look at the middleware, the redirects are matched by their type in this order:

Redirect.MATCH_EXACT
Redirect.MATCH_PREFIX
Redirect.MATCH_REGEX

In your case, the second redirect already have the precedence.
In case the current behaviour doesn't work correctly, please provide a failing test.

I see. That's probably perfect. Thanks! Might be useful to others to add that to the documentation.

OK. I ran into a use case. We have a lot of pages with this URL structure:
/[\w\-]+-training/(.+).cfm

In general, we want those to redirect to:
/catalog/$1/

But there are some exceptions for specific "xyz" strings where we want:
/foo-training/page-name.cfm -> /foo-training/page-name

Because both use RegExs, it always uses the first pattern. An order (or priority) property could fix this.
I think priority might be better:
priority = models.IntegerField(
    blank=True,
    default=0,
    verbose_name=_('Priority'),
    help_text=_('Higher priority redirects are evaluated first.')
)

ordering = ['-priority', 'old_path']

@ndunn219 what do you think about adding priority choices with a range interval [0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0] just like for sitemaps?

or even more simply just 4 priority choices:

Low
Normal
High
Highest

That would be fine for my use case, but I think an integer is just as clear and provide more flexibility and control.

@ndunn219 pip install django-redirects -U :dizzy:


Update rbac-migration.md

Learn Build status updates of commit 6fbbb71:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

articles/key-vault/general/rbac-migration.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


Update Selenium version to 2.45

Selenium 2.45 has been released with important fixes for FF36.
https://raw.githubusercontent.com/SeleniumHQ/selenium/master/java/CHANGELOG

Thanks for your work! Updated to 2.48.2. Will release today.


Using __STATIC_FORCEINLINE coming with cmsis_compiler.h brings extra portability

Hi,
I am starting porting pico-sdk to arm compiler 6, and I notice that:

pico-sdk uses cmsis
pico-sdk uses __force_inline (and always together with static)

So, how about use __STATIC_FORCEINLINE provided by CMSIS (and it supports GCC, LLVM, IAR, AC5 and AC6) to gain better portability?
or maybe you don't have to change each of the __force_inline into __STATIC_FORCEINLINE but simply define it as __STATIC_FORCEINLINE in platform.h
It is just a suggestion.

IIRC pico-sdk optionally uses cmsis?

I am not sure. But use it could bring some cross-platform benefits.

Yeah we won't be using the CMSIS headers directly.


THRIFT-5013: Use Java Objects RequireNonNull

Use Java Objects RequireNonNull. Made for this scenario.
https://docs.oracle.com/javase/8/docs/api/java/util/Objects.html#requireNonNull-T-

@ctubbsii I generated the output Java, compiled it, and it looks correct.
 public void setName(java.lang.String value) {
    setField_ = _Fields.NAME;
    value_ = java.util.Objects.requireNonNull(value,"_Fields.NAME");
  }

How do we kick off CI again?

How do we kick off CI again?

Create an empty commit or merge master.

Appveyor CI seems to be failing for an unrelated reason. The test case in compiler/cpp/test/compiler/staleness_check.py seems to be failing, possibly because it is trying to run a python3 test using python2.7.

@ctubbsii Are you willing and able to provide a +1 on this change?

@belugabehr I gave my +1 above already, but I'm not a committer on Thrift, so my opinion is just advisory.

@dcelasun And this one as well? :)

Thanks for the PR and apologies for the delay in reviews.


Shuffle

Implementation of thrust::shuffle following std::shuffle API.
Todo:

[x] Code style consistency
[x] Documentation
[x] Document/justify selection of round function (currently uses linear feedback shift but with somewhat arbitrary parameters)
[x] Define thrust::shuffle_copy

I'm wondering if I should add another version of this function specifying an output iterator to avoid the copy?
Benchmark results for shuffle (on DGX1 V100):

Algorithm
Element Type
Elements per Trial
STL Average Walltime
STL Walltime Uncertainty
STL Average Throughput
Thrust Average Walltime
Thrust Walltime Uncertainty
Thrust Average Throughput

shuffle
char
67108864
1.86
0.04
3.60E+07
0.02
0.03
4.00E+09

shuffle
char
134217728
5.33
0.03
2.52E+07
0.04
0.04
4.00E+09

shuffle
double
8388608
0.2402
0.0003
3.49E+07
0.0041
0.0003
2.10E+09

shuffle
double
16777216
0.66
0.01
2.52E+07
0.0063
0.001
2.70E+09

shuffle
float
16777216
0.49
0.01
3.40E+07
0.01
0.03
2.00E+09

shuffle
float
33554432
1.36
0.02
2.47E+07
0.01
0.03
3.00E+09

shuffle
int
16777216
0.475
0.007
3.53E+07
0.01
0.03
1.00E+09

shuffle
int
33554432
1.3
0.01
2.58E+07
0.01
0.03
2.00E+09

shuffle
int16_t
33554432
0.95
0.01
3.53E+07
0.01
0.04
3.00E+09

shuffle
int16_t
67108864
2.61
0.02
2.57E+07
0.02
0.04
3.00E+09

shuffle
int32_t
16777216
0.477
0.007
3.52E+07
0.01
0.04
1.00E+09

shuffle
int32_t
33554432
1.3
0.02
2.58E+07
0.01
0.03
3.00E+09

shuffle
int64_t
8388608
0.2414
0.0007
3.48E+07
0.01
0.04
8.00E+08

shuffle
int64_t
16777216
0.6686
0.0006
2.51E+07
0.01
0.03
1.00E+09

shuffle
int8_t
67108864
1.89
0.01
3.55E+07
0.02
0.03
4.00E+09

shuffle
int8_t
134217728
5.23
0.05
2.57E+07
0.04
0.04
4.00E+09

I'm wondering if I should add another version of this function specifying an output iterator to avoid the copy?

Yes, I'd suggest shuffle and shuffle_copy.

Thank for the quick updates! I'll take it from here and starting validating this against our internal CI.
Just a heads up, I'll need to squash this into a single commit before merging. I'll push an update that does that soon.

Local build is clean, tests pass. CI started under shelve 28225884.