Support Inline Assembly Microkernel

This issue arises through discussion with several people @eqy @adityaatluri @ajtulloch @cowanmeg
So far we can use IR to embed a sequence of LLVM intrinsics to generate microkernel. But this may not be ideal, in certain cases, we need to make use of hand-crafted micro-kernels, or utilize assembly generator such as Peachey to generate and embed them into the code. This issue is used to discuss possible API proposals and ways to do so.
Notably, llvm already support inline assembly, so the only gap is to add support in the IR intrinsic side. There are two possible ways to make this happen
Link to a module with assembly intrinsic
This is the easiest approach, @eqy already have some hacked up version that does this. The idea is that load the asm module as a separate LLVM module (wrapped in llvm ir), set the property so that this module must be force inlined, and load this module in code generation phase and link.
To implement this, we can specify the desired linked external module (possibly via arguments, or a thread-local scope context setting function that set the linked modules)
import tvm

ll_asm= """
asm code wrapped in llvm format, expose a function my_function
"""
# In the IR construction, add a call_extern that calls my_function.
with tvm.build_config(extern_llvm_modules=[ll_asm]):
    # build code here.

Ideally, we want to support inline asm string, as well as a path to the asm file.
One key characteristic of this approach is that all the asm are wrapped as functions. The LLVM's SSA property means it might be hard to do certain things, like the array of registers have to be passed by address and we need to rely on the register promotion pass. It is not sure if there are cases we could not handle
Action Items

[ ] Modify codegen_llvm.cc to support two modes of pragma_import.

pragma import /path/to/file.ll
pragma import str_llvm
Related pragma handling code
Put things into a unordered_set<std::string>(deduplication)
Before optimize, import those modules as llvm module, mark them to be force inline and link together
[ ] Write testcases about pragma_import(schedule, and tensor intrinsic)

We can write sch[xx].pragma("import", "path/to/file.ll")
We can also directly embed things in tensor intrinsics

[ ] Support contrib.clang.create_llvm to make it easy to generate llvm from embedded c asm.

Can be in a separate PR

[ ] Write a tutorial on how to embedd inline asm. (might also need tensorization tutorial).

I think @adityaatluri/AMD Folks will have the most relevant experience as to whether we need embedded asm for AMD GPUs, which are an interesting target. The fact that some of the kernels in MIOpen (e.g., Winograd) do not have exposed source suggests that the asm implementation yields the best performance.
Can any of the AMD folks comment on whether this is just an artifact of how kernels are typically written, limitations in the expressiveness of OpenCL/rocm, limitations in the compiler support of OpenCL/rocm, or some mixture of reasons?
Anecdotally, we have been able unlock very good performance on NVIDIA GPUs with relatively simple schedules for small batches (especially for direct convolution), but simply retuning these templates on AMD GPUs has not been enough to get similar utilization. This could be because the CUDA compiler does some great optimizations for NVIDIA GPUs, AMD GPUs require special optimizations not covered in CUDA schedules, the OpenCL/rocm compiler for AMD GPUs doesn't do some equivalent optimizations, or (again) a mixture of reasons.

Hi folks - I'm interested in (mobile) CPU backend improvements for TVM.
What I've just implemented is slightly more general than what you suggested - patching llvm_module.cc to support loading external LLVM IR modules (via a registered callback, like ROCM case), and then a bit of Python helper logic for passing these to tensor intrinsics. So, you can then write essentially arbitrary C or assembly microkernels - simple example:
void vadd_16_avx2(const float *x, int32_t x_off, const float *y,
                  int32_t y_off, float *z, int32_t z_off) {
  for (size_t i = 0; i < 16; i += 8) {
    _mm256_storeu_ps(z + z_off + i,
                     _mm256_add_ps(_mm256_loadu_ps(x + x_off + i),
                                   _mm256_loadu_ps(y + y_off + i)));
  }
}

and have that passed into a tensor op declaration like:
    def intrin_vadd_16():
        x = tvm.placeholder((16,), name='vx')
        y = tvm.placeholder((16,), name='vy')
        z = tvm.compute(x.shape, lambda i: x[i] + y[i], name='z')
        def intrin_func(ins, outs):
            xx, yy = ins
            zz = outs[0]
            irb = tvm.ir_builder.create()
            extern_call = tvm.call_extern(
                "int32",
                "vadd_16_avx2",
                irb.buffer_ptr(xx),
                xx.elem_offset,
                irb.buffer_ptr(yy),
                yy.elem_offset,
                irb.buffer_ptr(zz),
                zz.elem_offset)
            irb.emit(extern_call)
            return irb.get()
            return irbb

        with tvm.build_config(offset_factor=16):
            return tvm.decl_tensor_intrin(z.op, intrin_func)

and then use that in a TVM expression like any other tensor intrinsic. The microkernel can get (optionally) completely inlined into the main TVM loop, etc, inline assembly works, etc. It seems to work correctly as well with simple matmul kernels as well. Is that similar to what you had in mind?
One thought for an intermediate goal is to get a TVM GEMM that is actually within 5% of performance of MKL or Accelerate on AVX2. Currently even with the best schedules I could find in https://github.com/dmlc/tvm/blob/master/tutorials/optimize/opt_gemm.py, it's ~25-50% slower than MKL or Accelerate on my I7-4980HQ, and from looking at the generated code I suspect we need more control over the microkernels to beat that last gap.  Are you folks interested in this direction as well?
Another example is taking the Conv(1x64x56x56, 64x64x1x1) from ResNet 18, the best TVM performance I could get on AVX2 hits 35GFLOP/s single threaded, while the equivalent GEMM with a BLAS library is 2x faster at 70GFLOP/s.  I'd have thought that it'd be possible to bridge this gap by having some architecture-specific microkernels that can be directly tensorized. Does that make sense to you?

@ajtulloch Patching llvm module seems fine as long as we call micro-kernels as common extern functions, the inline optimization happens only at link time, there could be a chance that inlining did not happen or did not benefit from too much early optimizations.
The general logic makes sense, and I guess the same way would work if we bring a helper function and put it in the codegen phase. Would you be interested in discussing possible API -- e.g. putting things under build_config (we could add a setter of a thread local context, or just patch build config context) so so we can pass them as arguments.
The exploration of speedup via tensorizing micro-kernels is definitely interesting.

Given the heated discussion, I would suggest we have a quick discussion on API and patch the TVM to support this feature(should not cost too many loc)

As an update - with this microkernel
void sgemm_4x24__avx2(int32_t k, const float *a, int32_t a_off,
                           const float *b, int32_t b_off, float *c,
                           int32_t c_off, int32_t ldc) {
  a = a + a_off;
  b = b + b_off;
  c = c + c_off;
  size_t k_size_t = k;
  size_t ldc_size_t = ldc;
  asm volatile("shl    $0x2,%[ldc_size_t]\n\t"
               "prefetcht0 (%[c])\n\t"
               "add    %[ldc_size_t],%[c]\n\t"
               "prefetcht0 (%[c])\n\t"
               "add    %[ldc_size_t],%[c]\n\t"
               "prefetcht0 (%[c])\n\t"
               "add    %[ldc_size_t],%[c]\n\t"
               "prefetcht0 (%[c])\n\t"
               "vzeroall\n\t"
               "LOOP_START%=:\n\t"
               "vmovaps (%[b]),%%ymm3\n\t"
               "vmovaps 0x20(%[b]),%%ymm2\n\t"
               "vmovaps 0x40(%[b]),%%ymm1\n\t"
               "add    $0x60,%[b]\n\t"
               "vbroadcastss (%[a]),%%ymm0\n\t"
               "vfmadd231ps %%ymm3,%%ymm0,%%ymm8\n\t"
               "vfmadd231ps %%ymm2,%%ymm0,%%ymm9\n\t"
               "vfmadd231ps %%ymm1,%%ymm0,%%ymm10\n\t"
               "vbroadcastss 0x4(%[a]),%%ymm0\n\t"
               "vfmadd231ps %%ymm3,%%ymm0,%%ymm11\n\t"
               "vfmadd231ps %%ymm2,%%ymm0,%%ymm12\n\t"
               "vfmadd231ps %%ymm1,%%ymm0,%%ymm13\n\t"
               "vbroadcastss 0x8(%[a]),%%ymm0\n\t"
               "vfmadd231ps %%ymm3,%%ymm0,%%ymm14\n\t"
               "vfmadd231ps %%ymm2,%%ymm0,%%ymm15\n\t"
               "vfmadd231ps %%ymm1,%%ymm0,%%ymm7\n\t"
               "vbroadcastss 0xc(%[a]),%%ymm0\n\t"
               "vfmadd231ps %%ymm3,%%ymm0,%%ymm6\n\t"
               "vfmadd231ps %%ymm2,%%ymm0,%%ymm5\n\t"
               "vfmadd231ps %%ymm1,%%ymm0,%%ymm4\n\t"
               "add    $0x10,%[a]\n\t"
               "dec    %[k_size_t]\n\t"
               "jne    LOOP_START%=\n\t"
               "vmovups %%ymm6,(%[c])\n\t"
               "vmovups %%ymm5,0x20(%[c])\n\t"
               "vmovups %%ymm4,0x40(%[c])\n\t"
               "sub    %[ldc_size_t],%[c]\n\t"
               "vmovups %%ymm14,(%[c])\n\t"
               "vmovups %%ymm15,0x20(%[c])\n\t"
               "vmovups %%ymm7,0x40(%[c])\n\t"
               "sub    %[ldc_size_t],%[c]\n\t"
               "vmovups %%ymm11,(%[c])\n\t"
               "vmovups %%ymm12,0x20(%[c])\n\t"
               "vmovups %%ymm13,0x40(%[c])\n\t"
               "sub    %[ldc_size_t],%[c]\n\t"
               "vmovups %%ymm8,(%[c])\n\t"
               "vmovups %%ymm9,0x20(%[c])\n\t"
               "vmovups %%ymm10,0x40(%[c])\n\t"
               "vzeroupper\n\t"
               : [c] "+r"(c), [b] "+r"(b), [a] "+r"(a),
                 [k_size_t] "+r"(k_size_t), [ldc_size_t] "+r"(ldc_size_t)
               :
               : "cc", "memory", "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4",
                 "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10",
                 "%ymm11", "%ymm12", "%ymm13", "%ymm14", "%ymm15");
}

I get essentially equivalent performance (+/-10%) to Accelerate/MKL single-threaded on most GEMMs, without any scheduling work involved (i.e. just constructing full panels separately, then tensorizing the reduction) - and presumably a scheduling guru could get this even better. AFAIK I haven't seen any TVM schedules that can get within 30% of this number on my i7-4980HQ - if there are, please let me know.
I think this could be a pretty interesting for FP32 NN performance - e.g. this could be directly used to improve 1x1 perf for e.g.  FP32 MobileNet on AVX2.
I think in terms of a TVM API, it'd be nice to directly support C/ASM source files that can be automatically compiled and linked against (handling cases like just standard intrinsics or C functions, using inline assembly, and even directly using ASM from an assembler like PeachPy, etc). I think something like:
with tvm.build_config(extern_cpp_source=["/path/to/kernels.cpp"], extern_asm_source=["path/to/kernels.S"]):
    extern_call = tvm.call_extern("int32", "sgemm_only_4x24__avx2") # defined in `kernels.cpp`
    ...

could be pretty usable. I'm still very new to this project so I don't have any strong opinions here TBH - I just think this is a pretty useful bit of functionality for getting peak performance out of this system :)

@ajtulloch for tvm, are you using the target "llvm -mcpu=core-avx2"? With the target "llvm", you only get SSE even if your cpu supports avx2.

That looks great @tqchen.

@masahi, @tqchen for example, check https://gist.github.com/ajtulloch/0087cb2dee2fab580ec60cc87220fbde. With this, I see (running MKL_NUM_THREADS=1 VECLIB_MAXIMUM_THREADS=1 TVM_NUM_THREADS=1 python tutorials/optimize/opt_gemm.py 2>&1 | grep Opt)
Opt1: 4.909991
Opt2: 23.436729
Opt3: 44.081897
Opt4: 50.382429
Opt5: 60.753072
Opt6: 59.855750
OptBLAS: 88.236252
OptTensorize: 88.171094

which is a 40% speedup (60 -> 88) over the previous best Opt routine, and equal to the Accelerate BLAS performance.
The schedule for the Tensorize version is:
// attr [APanel] storage_scope = "global"
allocate APanel[float32 * 192 * 768 * 4]
// attr [BPanel] storage_scope = "global"
allocate BPanel[float32 * 32 * 768 * 24]
produce APanel {
  for (mtile, 0, 192) {
    for (k, 0, 768) {
      APanel[(((mtile*768) + k)*4)] = A[((mtile*3072) + k)]
      APanel[((((mtile*768) + k)*4) + 1)] = A[(((mtile*3072) + k) + 768)]
      APanel[((((mtile*768) + k)*4) + 2)] = A[(((mtile*3072) + k) + 1536)]
      APanel[((((mtile*768) + k)*4) + 3)] = A[(((mtile*3072) + k) + 2304)]
    }
  }
}
produce BPanel {
  for (ntile, 0, 32) {
    for (k, 0, 768) {
      for (n, 0, 24) {
        BPanel[((((ntile*768) + k)*24) + n)] = B[(((ntile + (k*32))*24) + n)]
      }
    }
  }
}
produce C {
  for (m.outer, 0, 24) {
    for (n.outer, 0, 32) {
      for (m.inner.outer, 0, 8) {
        sgemm_only_4x24__avx2(768, APanel, (((m.outer*8) + m.inner.outer)*3072), BPanel, (n.outer*18432), C, ((((m.outer*1024) + n.outer) + (m.inner.outer*128))*24), 768)
      }
    }
  }
}

and I'm sure it could be improved as well.

@tqchen since you can't really go from ASM to LLVM IR, what about also supporting linking against object files directly? That's the only way to support a PeachPy-style case right?

After thinking more carefully about the problem. Here is a new alternative proposal.

Introduce a pragma scope,  import into the pragma, which the code generator will treat as
IR pseudocode:

for i in range(10):
    attr pragma import "/path/to/file.ll"
    attr pragma import ll_source_in_str

We can make the llvm code generator to handle import gracefully, by link and inline the module.
The advantage over the build config is that we can actually attach source code during schedule(via pragma), or directly insert it during the intrinsic creation stage.

@tqchen I don’t quite understand the advantages of the second proposal. Could you flesh out the example a bit please?

@ajtulloch I updated my post

@eqy @ajtulloch can you comment on the new embedded API by introducing import program to the IR? if you think that is good, we can proceed with implementations

@tqchen it looks good to me I think. I think this is going to be very useful for CPU performance (I've already got ~2x speedup for AVX 1x1 kernels vs the conv2d_avx_1x1.py ones).

@ajtulloch awesome, can you open a PR to bring this in? I have will change the issue to WIP and list the action items

@ajtulloch to comment on the AVX-2/AVX-512 schedules currently in tvm: I believe these are currently tuned mainly for high core count c5 AVX-512 instances, where the end2end performance should be better than with mkldnn. Retuning them for AVX-2 can recover some performance, but overall I think the current schedules heavily target AVX-512 over AVX-2 (@yzhliu knows more details).

I believe we do have room for AVX2 optimization, as well as the (AVX-512/AVX2) 1x1-kernel convolution. Looking forward to the numbers & implementation.

Cool, sounds good. Re code, https://github.com/ajtulloch/tvm/tree/tvm-tulloch is my WIP branch - key changes (compute + schedule for 1x1 conv) is https://github.com/ajtulloch/tvm/blob/5c93b249a961d522265de36a007ed16b24d3e728/topi/python/topi/x86/conv2d_avx_1x1.py.

Custom ukernel LLVM integration in https://github.com/ajtulloch/tvm/blob/5c93b249a961d522265de36a007ed16b24d3e728/src/codegen/llvm/llvm_module.cc#L125-L145
standalone opt_gemm.py in https://github.com/ajtulloch/tvm/blob/5c93b249a961d522265de36a007ed16b24d3e728/tutorials/optimize/opt_gemm.py
mobilenet benchmark in https://github.com/ajtulloch/tvm/blob/5c93b249a961d522265de36a007ed16b24d3e728/mobilenet_avx2.py
GEMM ukernel in https://github.com/ajtulloch/tvm/blob/5c93b249a961d522265de36a007ed16b24d3e728/gemmMxN__avx2.c#L106-L169

Current numbers:

(bs, in_channel, in_size, num_filter, kernel, stride, padding)
AVXConv2DTensorize GFLOP/s
AVXConv2D GFLOP/s

(1, 128, 28, 256, 1, 1, 0)
66.171627
38.920085

(1, 64, 56, 128, 1, 1, 0)
38.293128
27.431091

(1, 128, 28, 128, 1, 1, 0)
58.991617
36.568366

(1, 128, 28, 256, 1, 1, 0)
67.684656
38.701075

(1, 256, 14, 256, 1, 1, 0)
73.674180
35.469258

(1, 256, 14, 512, 1, 1, 0)
70.014039
38.548551

(1, 256, 14, 512, 1, 1, 0)
65.487479
35.186892

(1, 512, 7, 512, 1, 1, 0)
47.640705
36.984628

I have modified the first post to list the actionable items. This issue is changed to WIP. @ajtulloch would you be interested in PR?

Thanks @ajtulloch Have you tried other kernel size? I'm curious whether assembly intrinsic can improve avx_common as well.

@yzhliu it seems like it can - I did some experiments with simple im2col + gemm, using the tensorize + microkernel for the gemm. This has a geometric mean speedup (from the workloads in https://github.com/dmlc/tvm/blob/master/topi/python/topi/x86/conv2d.py#L16 and https://github.com/dmlc/tvm/blob/master/topi/python/topi/nn/conv2d.py#L24), of:

Network
Speedup (geometric mean)

ResNet-18
55%

ResNet-50
87%

MobileNet
48%

Check out https://github.com/ajtulloch/tvm/blob/nhwc-optimization/topi/python/topi/x86/conv2d_avx_nhwc.py. You can replicate by running https://github.com/ajtulloch/tvm/blob/4f624f888a78534b7491459e8667c192777d9880/topi/python/topi/x86/conv2d_avx_nhwc.py with TVM_NUM_THREADS=1 python topi/python/topi/x86/conv2d_avx_nhwc.py.
Currently that naive im2col/gemm implementation could be improved in a bunch of ways as well - we don't currently block in the reduction which hurts performance for large reductions (KH * KW * C).
Raw data is:
BaselineNHWC: 44.22, BaselineNCHW: 12.66, TensorNHWC: 48.62
N: 1, CIn: 64, H/W: 56, COut: 64, KH/KW: 3
BaselineNHWC: 42.23, BaselineNCHW: 48.26, TensorNHWC: 56.65
N: 1, CIn: 64, H/W: 56, COut: 64, KH/KW: 1
BaselineNHWC: 65.09, BaselineNCHW: 39.50, TensorNHWC: 60.86
N: 1, CIn: 64, H/W: 56, COut: 128, KH/KW: 3
BaselineNHWC: 23.93, BaselineNCHW: 51.20, TensorNHWC: 64.73
N: 1, CIn: 64, H/W: 56, COut: 128, KH/KW: 1
BaselineNHWC: 40.65, BaselineNCHW: 25.86, TensorNHWC: 67.27
N: 1, CIn: 128, H/W: 28, COut: 128, KH/KW: 3
BaselineNHWC: 22.68, BaselineNCHW: 46.37, TensorNHWC: 57.49
N: 1, CIn: 128, H/W: 28, COut: 256, KH/KW: 3
BaselineNHWC: 20.23, BaselineNCHW: 34.04, TensorNHWC: 59.07
N: 1, CIn: 128, H/W: 28, COut: 256, KH/KW: 1
BaselineNHWC: 30.43, BaselineNCHW: 29.75, TensorNHWC: 74.85
N: 1, CIn: 256, H/W: 14, COut: 256, KH/KW: 3
BaselineNHWC: 20.56, BaselineNCHW: 34.90, TensorNHWC: 62.66
N: 1, CIn: 256, H/W: 14, COut: 512, KH/KW: 3
BaselineNHWC: 18.85, BaselineNCHW: 35.32, TensorNHWC: 28.05
N: 1, CIn: 256, H/W: 14, COut: 512, KH/KW: 1
BaselineNHWC: 20.56, BaselineNCHW: 38.06, TensorNHWC: 51.87
N: 1, CIn: 512, H/W: 7, COut: 512, KH/KW: 3
BaselineNHWC: 11.67, BaselineNCHW: 30.00, TensorNHWC: 23.74
RESNET-18: 1.55
N: 1, CIn: 3, H/W: 224, COut: 32, KH/KW: 3
BaselineNHWC: 39.12, BaselineNCHW: 25.21, TensorNHWC: 28.32
N: 1, CIn: 32, H/W: 112, COut: 64, KH/KW: 1
BaselineNHWC: 57.29, BaselineNCHW: 33.80, TensorNHWC: 45.85
N: 1, CIn: 64, H/W: 56, COut: 128, KH/KW: 1
BaselineNHWC: 53.79, BaselineNCHW: 41.77, TensorNHWC: 65.55
N: 1, CIn: 128, H/W: 56, COut: 128, KH/KW: 1
BaselineNHWC: 35.49, BaselineNCHW: 43.38, TensorNHWC: 56.84
N: 1, CIn: 128, H/W: 28, COut: 256, KH/KW: 1
BaselineNHWC: 33.05, BaselineNCHW: 44.39, TensorNHWC: 85.04
N: 1, CIn: 256, H/W: 28, COut: 256, KH/KW: 1
BaselineNHWC: 27.56, BaselineNCHW: 44.59, TensorNHWC: 87.65
N: 1, CIn: 256, H/W: 14, COut: 512, KH/KW: 1
BaselineNHWC: 20.98, BaselineNCHW: 36.76, TensorNHWC: 78.35
N: 1, CIn: 512, H/W: 14, COut: 512, KH/KW: 1
BaselineNHWC: 21.10, BaselineNCHW: 42.05, TensorNHWC: 77.26
N: 1, CIn: 512, H/W: 7, COut: 1024, KH/KW: 1
BaselineNHWC: 21.49, BaselineNCHW: 43.81, TensorNHWC: 42.34
N: 1, CIn: 1024, H/W: 7, COut: 1024, KH/KW: 1
BaselineNHWC: 20.14, BaselineNCHW: 36.23, TensorNHWC: 41.89
MOBILENET: 1.48
N: 1, CIn: 64, H/W: 56, COut: 256, KH/KW: 1
BaselineNHWC: 28.27, BaselineNCHW: 37.13, TensorNHWC: 71.33
N: 1, CIn: 256, H/W: 56, COut: 64, KH/KW: 1
BaselineNHWC: 40.79, BaselineNCHW: 36.37, TensorNHWC: 66.20
N: 1, CIn: 256, H/W: 56, COut: 128, KH/KW: 1
BaselineNHWC: 34.08, BaselineNCHW: 22.32, TensorNHWC: 76.34
N: 1, CIn: 128, H/W: 28, COut: 512, KH/KW: 1
BaselineNHWC: 23.88, BaselineNCHW: 38.46, TensorNHWC: 78.83
N: 1, CIn: 256, H/W: 56, COut: 512, KH/KW: 1
BaselineNHWC: 18.61, BaselineNCHW: 27.27, TensorNHWC: 76.52
N: 1, CIn: 512, H/W: 28, COut: 128, KH/KW: 1
BaselineNHWC: 24.74, BaselineNCHW: 37.89, TensorNHWC: 66.57
N: 1, CIn: 512, H/W: 28, COut: 256, KH/KW: 1
BaselineNHWC: 20.80, BaselineNCHW: 29.97, TensorNHWC: 69.35
N: 1, CIn: 256, H/W: 14, COut: 1024, KH/KW: 1
BaselineNHWC: 19.46, BaselineNCHW: 36.11, TensorNHWC: 50.90
N: 1, CIn: 512, H/W: 28, COut: 1024, KH/KW: 1
BaselineNHWC: 19.24, BaselineNCHW: 28.61, TensorNHWC: 63.08
N: 1, CIn: 1024, H/W: 14, COut: 256, KH/KW: 1
BaselineNHWC: 19.95, BaselineNCHW: 32.51, TensorNHWC: 67.85
N: 1, CIn: 1024, H/W: 14, COut: 512, KH/KW: 1
BaselineNHWC: 13.77, BaselineNCHW: 12.45, TensorNHWC: 22.40
N: 1, CIn: 512, H/W: 7, COut: 2048, KH/KW: 1
BaselineNHWC: 18.81, BaselineNCHW: 28.95, TensorNHWC: 32.84
N: 1, CIn: 1024, H/W: 14, COut: 2048, KH/KW: 1
BaselineNHWC: 13.54, BaselineNCHW: 22.44, TensorNHWC: 29.10
N: 1, CIn: 2048, H/W: 7, COut: 512, KH/KW: 1
BaselineNHWC: 19.74, BaselineNCHW: 26.61, TensorNHWC: 36.67
RESNET-50: 1.87

@ajtulloch I quickly tried your tvm-tulloch to reproduce the gemm results but failed. Can you rebase your code to the latest and make sure python opt_gemm.py would work? Thanks!
FYI, the errors I got are something like " Cannot find function tvm.contrib.cblas.matmul in the imported modules or global registry" and "Fail to load bitcode file gemmMxN__avx2.bc".

@yidawang you need to enable cblas during cmake.

@masahi thanks! This fixed the first error, but the second one remains.

@yidawang you probably need to regenerate the .bc file with your current clang version (and ensure it’s in your $CWD?). clang gemmxN__avx2.c -O3 -march=core-avx2 -emit-llvm -O gemmMxN__avx2.bc or similar should work?

@ajtulloch Thanks, setting $CWD works (with some warnings though, e.g. *** is not a recognized feature for this target. I didn't look into them yet). The performance looks promising! But looks like it only works for the matrix shape you gave?

Sorry I missed the party.
@eqy  Yes, assembly kernels are proven to be high performant than OpenCL or HIP kernels.
@tqchen I am working on generating microkernels which are llvm basic blocks, the kernel I am generating are using way more registers than it supposed to. The basic one for 4kx4kx4k gemm I am seeing 9TFLOPs on Vega64 (peak is 12). I have made few changes today to bring register count down. Hopefully by end of this weekend I'll have something solid. I'll contact you about API design later next week.

@yidawang check out the nhwc-optimization branch in that repo, it has generic convolutions built on these microkernels (1x1 and MxN, arbitrary size/stride/padding) which have similar efficiency benefits.

@ajtulloch would you be interested in contribute a PR to support the first part of the action item(as updated in the first post of this issue).

@tqchen sure, me (or someone I loop in) will work on that part.

@tqchen got a version of micro-kernel generator working. I am seeing peak throughput (12TFLOPS) on vega64. I am making it a proper library now, code will be hosted here

@ajtulloch what is the status on this? If you haven't started yet, I may have some free cycles to get it in this week.

PR at https://github.com/dmlc/tvm/pull/1486

close by #1486 let us open up followup issues for potential proposed improvements and micro-kernel exploration. Thanks @ajtulloch @eqy @adityaatluri @yidawang @yzhliu for helpful discussions in this RFC

Ah sorry @tqchen, I was out the last few weeks. This looks great, thanks so much. I'm restarted working on these tensorized implementations in https://github.com/ajtulloch/tvm/blob/43f50eba9eab45ec505e92ce372c45d91227778a/tensorize/gemm__neon.c + https://github.com/ajtulloch/tvm/blob/43f50eba9eab45ec505e92ce372c45d91227778a/tensorize/gemm__avx2.c, and there's so pretty promising results on ARMv7 in addition to AVX2 already.

Now that the feature is upstreamed to the main branch, let us continue to explore the direction on what benefit we can bring. @ajtulloch 's result looks encouraging. I created a thread in https://discuss.tvm.ai/t/inline-assembly-micro-kernel-and-performance-experiment-for-arm-and-x86/527 for followup discussions on this

@ajtulloch can you share performance numbers?


[Event Request] Codeunit::1255 "Match Bank Payments" - Function InitializeCustomerLedgerEntriesMatchingBuffer - OnInitCustomerLedgerEntriesMatchingBufferAfterSetFilterCurrencyCode

Could You please, add the following event to the codeunit 1255 "Match Bank Payments"
Object: Codeunit 1255 "Match Bank Payments"
Function: InitializeCustomerLedgerEntriesMatchingBuffer
Publisher Event: OnInitCustomerLedgerEntriesMatchingBufferAfterSetFilterCurrencyCode
Reason: To implement custom business logic and permit application in all currencies
Where is the event placed (see image attached)?:

Above the line:
if CustLedgerEntry.FindSet then
Insert the call to the event
OnInitCustomerLedgerEntriesMatchingBufferAfterSetFilterCurrencyCode(CustLedgerEntry);
Event Code:
[IntegrationEvent(false, false)]
local procedure OnInitCustomerLedgerEntriesMatchingBufferAfterSetFilterCurrencyCode(var CustLedgerEntry: Record "Cust. Ledger Entry")
begin
end;
Thanks in Advance

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. We will update this issue with information about availability.


I've just released plexdrive on Arch User Repository (AUR)

https://aur.archlinux.org/packages/plexdrive/
I'd like to ask for those who use Arch Linux to test this package and review if there are any problems.

Works! Thanks :)


bug: onReplace/onSpeedUp not working properly

Is there an existing issue for this?

[X] I have searched the existing issues

Package Version
0.12.13
Current Behavior
When sending a TX with low Base Fee / Priority Fee which is not included (or not reaching the mempool) when replacing with higher gas fees, onSpeedUp from useWaitForTransaction is never called. Then, the TX seems to be stuck forever.
I'm sending the TX using signer.sendTransaction() directly from ethers. And then useWaitForTransaction from the hash received from the "ethers.providers.TransactionResponse" from sendTransaction().
Expected Behavior
Trigger the onSpeedUp.
Steps To Reproduce

Create a TX high low fees.
Increase speed.
Get the TX stuck.

Link to Minimal Reproducible Example (StackBlitz, CodeSandbox, GitHub repo etc.)
No response
Anything else?
No response

I can just confirm that this also happens on useContractWrite.

Thanks for reporting. Can you please provide a minimal reproducible example via https://new.wagmi.sh and reopen this issue (as a separate one).
This issue seems more ethers.js related, but it might be worth upgrading to v1, where transaction replacement is a bit more stable.

Actually, I can't.
To reproduce it is a matter of doing the replacement on Metamask, something that I can't do as an example.
Any useWaitForTransactionsuffer from this problem.

Does this work on v1?

Does this work on v1?

No.
Same issue, well, actually worse :D
You can do this to test on Goerli, set these values when sending the TX:

Then, the TX gets waiting. After that, you'll get the TX hash.
Go to metamask and increase speed.
The TX will go through but View / Ethers / Wagmi will never realize of that, keeping loading.
Also, while testing on v1 I got these two errors:
1.-

2.-
And with this:
  const { isLoading, isSuccess, status } = useWaitForTransaction({
isSuccess is always false.

@jxom could you reopen it?

I have same problem
@jxom

Can you please provide a minimal reproducible example via https://new.viem.sh or a separate repo? It will save us a lot of time reproducing your config & environment, and trying to reproduce your issue. See Why reproductions are required.


Redirecting user to path specified in initial URL into tmpnb to resolve #155

This PR intends to resolve #155. It support redirecting to /notebooks or /tree urls.
If the user goes to
http://<IP_ADDRESS>:8000/notebooks/some_notebook.ipynb

tmpnb will span a new container and redirect the user to
http://<IP_ADDRESS>:8000/user/ABCDEFG/notebooks/some_notebook.ipynb

Since it seems we'll be without auth anyway, I'm going to assume it's ok to allow what can effectively become cross site scripting (javascript in a trusted notebook somewhere in the container).
The only thing I'm not a fan of is the implicit notebookness of the paths. I'd be happy if we tossed the idea of creating a new container with the path given if that helps.
Would be cool to have @parente look this over as well.

@rgbkrk one day you can explain the XSS issue. @parente mentioned your concert to me when I told him I was doing this. Without any code automatically executing and control of what notebooks are in the image, I don't see this code aggravating the issue. Anyways... I'm interested in the concern.
@captainsafia thanks for the feedback. I'll take care of these changes. I'm on vacation, so I'll get to it next week
@parente will be rolling this into our try site this Friday. You could do further testing there.

There was a time at which I was running a private tmpnb that used google drive, so my main concern was being able to redirect someone to a path that caused javascript to run and steal their credentials (which would be the limited portion of google drive that our app was allowing). I'm not worried about what can run in the kernels, since we generally treat these as untrusted anyways. I have no idea what other deployments are doing.

Maybe this has changed, but for the JS to execute in the notebook, the notebook has to be trusted, right?  So for a XSS attack to work, the deployment would need to have a notebook with malicious JS marked as trusted?

That's correct.
I mean, other than the string of vulnerabilities for the past couple year that have been discovered and patched. That all gets cleaned up in the end though.
People have requested this for a long time. Now that code is being contributed, I say "go for it". This looks good to me. My only real suggestion is that if there's more to pare down to make this simpler and less about a notebook I'm really happy (again, for the headless case).

I've added you both as collaborators to tmpnb projects on here. I think we can just merge this as is and do follow on PRs from @parente and @captainsafia because I know you have a live version of this going up.

I made the changes suggested by @captainsafia and rebased with master.
As for @rgbkrk concern about the path being to tied to notebook... I could make the handlers regex more open like /spawn/((?:.*)(?:/.*)?). I the Handler then I would check against a whitelist or allowed path segment right after /spawn/. For example, the config with have something like notebooks,tree,somethingelse, and those plus /spawn/user/... would be handle, the reset will return back a 404.
Thoughs?

I think it's ok for now. :shipit: and let me know how things go.

We've deloyed with this last week and it seems to be working fine. Here is an example,
http://jupyter.cloudet.xyz/notebooks/widgets/demos/Walkthrough.ipynb
Merging it!

A+


feat: Add stop method to BasicCrawler

Description
This adds the possibility to stop crawler from user defined handler function.
Updated docs, added example.
Added test.
Issues

Closes: #651

I thought we will use the same name as in JS version, was there some discussion around this?

I thought we will use the same name as in JS version, was there some discussion around this?
Well, this is my proposal. Reasoning is following:

I looked at the JS version and it has .teardown(). To me it calling crawler.stop() vs crawler.teardown() is definitely better.
From user perspective I imagine that crawler.teardown() is kind of some internal stuff that I do not care about and that can be at some point called by crawler.stop(), but that to me seems like an internal detail, not a user exposed function to call in normal circumstances.
Also crawler.stop() does not really do any teardown. It just "sets conditions" that will make crawler stop on it's own, calling whatever teardowns and cleanups it normally calls. (I did not introduce any new mechanism, I just abstracted how it was already used in case of _max_requests_count_exceeded and made it available to the user.)

So we don't wait for the in-progress tasks in this new stop method? Maybe we should have both then, I think we need a teardown method that cleans up things properly (waits for the started tasks with a timeout).


Investigate solution to CRD being too large to use kubectl apply

Currently the make install and make deploy commands won't work if the CRD / controller already exist on the cluster, since instead of doing kubectl apply they are both doing kubectl create now since the CRD is too large for kubectl apply as it runs into this issue.
I'm guessing this will be an unexpected user experience for users so we need to figure how will someone update their existing deployment without interruptions if only kubectl create works (implying they must delete then recreate). Alternatively, we need to figure out how to reduce the size of the CRD.

It seems doing server-side apply solves it: https://github.com/SeldonIO/seldon-core/issues/4708
See how Kueue does it: https://github.com/kubernetes-sigs/kueue/blob/main/Makefile#L213


Check.DC.Label opposer section not closed

Missing opposer section closure in Check.DC.Label.WithTarget and Check.DC.Label.WithOrigin

Hi Michal,
If you are able to, would you mind making a PR?


Use SQLCipher to encrypt SQLite databases: datastores & indexes.

(Optional) Provide a key to create a CDTDatastore with CDTDatastoreManager.
If a CDTDatastore is created with key, the CDTIndexManager based on that CDTDatastore will use the same key to encrypt its database.
New subspec in CDTDatastore.podspec. Use 'CDTDatastore/SQLCipher' to get a version of the library capable of cipher the databases.
Added new tests specific for the new funcitonality. Updated .travis.yml to run the tests in Travis CI

If this request is accepted, probably I may have to update CONTRIBUTING.md

Any chance to break this commit up? Looks like 90% of it is reformatting via clang-format plugin? Then would be a lot easier to read/review.

As agreed, I'm going to close this pull request. Then I'll create a new branch where I'll copy the changes without all the re-formatting. Once this is done, I'll delete the previous branch.


Add stack_id to identify a "Stack" of Notifications

Case: We send multiple notifications at once and if one notification get's read by a user all notifications in this Stack should get read. To identify the other notifications a stack_id would be good to identify all notifications send at once.
This can also help for #67 to group them by Stack for an admin view for example where just single stacks get displayed.

PR #135 is merged - will be tagged next monday

@Gummibeer is there any examples on how to make use of the stack id to group notifications or its not for such usage #67

The Stack id is for grouping notifications that were send in a stack/batch/loop. So if you send a notifications to all admins that one User has registered you can Mark tgem all as read if one admin approves that User.


SDP-795 Remove TSS configs that could allow unencrypted ChannelAccount private keys to be saved in the database

What
SDP-795 Remove TSS configs that could allow unencrypted ChannelAccount private keys to be saved in the database
Why
Security improvement to prevent someone from misconfigure this in production.
Checklist
PR Structure

[x] This PR has reasonably narrow scope (if not, break it down into smaller PRs).
[x] This PR does not mix refactoring changes with feature changes (split into two PRs otherwise).
[x] This PR's title starts with the name of the package, area, or subject affected by the change.

Thoroughness

[x] This PR adds tests for the new functionality or fixes.
[x] This PR contains the link to the Jira ticket it addresses.

Configs and Secrets

[x] No new CONFIG variables are required -OR- the new required ones were added to the helmchart's values.yaml file.
[x] No new CONFIG variables are required -OR- the new required ones were added to the deployments (pr-preview, dev, demo, prd).
[x] No new SECRETS variables are required -OR- the new required ones were mentioned in the helmchart's values.yaml file.
[x] No new SECRETS variables are required -OR- the new required ones were added to the deployments (pr-preview secrets, dev secrets, demo secrets, prd secrets).

Release

[x] This is not a breaking change.
[x] This is ready for production.. If your PR is not ready for production, please consider opening additional complementary PRs using this one as the base. Only merge this into develop or main after it's ready for production!

Deployment

[ ] Does the deployment work after merging?

stellar-disbursement-platform-backend-preview is available here:SDP:      https://sdp-backend-pr24.previews.kube001.services.stellar-ops.com/healthAP:       https://sdp-ap-pr24.previews.kube001.services.stellar-ops.com/healthFrontend: https://sdp-backend-dashboard-pr24.previews.kube001.services.stellar-ops.com


Post tile uses section name instead of section title

The tiles with posts show the section name in the top left corner:

I have a translated site, and everywhere else, the title 'Berichten' I have set in the posts/_index.md file is used:
---
title: Berichten
url: berichten
menu:
  main:
    weight: 1
---

See screenshots:

Posts index header
Menu
Post title

https://github.com/theNewDynamic/gohugo-theme-ananke/blob/8fdfd205f9b4fd2f52eac9dfd2da8e11bea2015e/layouts/_default/single.html#L10-L16


Add merge option

Overview
Add merge option "first", "last", "nearest", and "count" on top of "forward".
Description of changes
Add merge option "first", "last", "nearest", and "count" on top of "forward".
Author Checklist

[ ] Linting passes; run early with pre-commit hook.
[ ] Tests added for new code and issue being fixed.
[ ] Added type annotations and full numpy-style docstrings for new methods.
[ ] Draft your news fragment in new changelog/ISSUE.TYPE.rst files; see changelog/README.md.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.0 out of 2 committers have signed the CLA.:x: rgleaton:x: JackLiang1272You have signed the CLA already but the status is still pending? Let us recheck it.


refactor ml-vertexpipeline

LGTM
I suggest testing the changes on all environemnts (dev, nonprod and prod) to see if there is no issues with permissions or data formats


VSCode annoyingly autocompletes """ in Python to """"

VSCode Version: 1.5.3
OS Version: macOS 10.11.6

Steps to Reproduce:

Type """ on a new line
Observe that """ autocompletes to """" with the cursor before between the third and forth ".

This may need a language-specific solution. If so, then F# should be included in the solution, as it also uses Python-style triple-quoted strings.

I can't reproduce this currently.

VSCode Version: Code 1.8.1 (ee428b0eead68bf0fb99ab5fdc4439be227b6281, 2016-12-19T14:42:49.304Z)
OS Version: Darwin x64 15.6.0
Extensions:

Extension
Author
Version

Bookmarks
alefragnani
0.10.2

django-html
bibhasdn
1.2.0

python
donjayamanne
0.5.5

gitlens
eamodio
1.4.1

tslint
eg2
0.8.1

cpptools
ms-vscode
0.9.3

preview-vscode
searKing
1.1.1

vscode-react-native
vsmobile
0.2.5

This issue is obsolete. Close it first and reopen if anyone can reproduce.

Can still reproduce on latest VS Code with an F# script file, though the Python part of this issue seems to be fixed.

Repro steps:

Create new script.fsx file (with Ionide-fsharp extension installed)
Type """ (three double-quote characters).
Result: four double-quote characters, with the cursor between the third and the fourth.

Ionide-fsharp version: 2.27.15, latest released version of the extension as of 2017-07-20.
VS Code version: Insiders build, version 1.15.0-insider (commit cf9726da54472f1e268135a64abd4365b91109f4)

@rmunn thanks for your detailed reproduce steps. Already fixed and you can see the update from tomorrow's insider.


Add DM28 message handling tests

add additional testing to the DM28PermanentEmissionDTCPacketTest to fully test functionality of the class under test.

Reopening to add the updates for testing requestDM28 in the DTCModuleTest and clean up legacy code.


Error in google translate

This is erroring for me. Assume it should be resp.json?
https://github.com/translate-tools/core/blob/f7a677c0c98866a7c5f88233256b2be0d143b2d1/src/translators/GoogleTranslator/index.ts#L138

Bad json response i guess :(

For my project I ended up not needing real time translation so its not important for me anymore, but did want to report the issue here.

Thank you for this report. It is really useful


fix: update key config location [LESQ-1202]

Description

update config with new key location

Issue(s)
Fixes #

invalid key error

How to test

Go to https://deploy-preview-3038--oak-web-application.netlify.thenational.academy and navigate to a lesson download pagewhile feature flagged for login
You should be able to login, and there should be no auth related error messages in the console

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


Add Deptrac dependency check to CI run

Adds deptrac a dev dependency
Adds deptrac dependency check to CI run
Adds deptrac make target

Since he package validation commands in devtools rely on the deptrac file for resolving the packages, there needs to be a change in these commands as well to not break CI.


linux 5.8 msbc codec with usb adapters

Just a heads-up: looks like the bluez btusb driver changes  for msbc codec have been accepted into the linux 5.8 tree. See https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=513a24ffb3f96a1eedc1f346616814f55ecb11da
Unfortunately I don't have a USB adapter that supports the alt-6 setting so I can't test this, but I think it may require changes to the mtu logic in bluealsa; and hopefully will then permit better msbc results with usb adapters.

The world has moved on, please see #400 for status of btusb


mpfs/opnsbi: refine config for for insufficient envm capacity

Summary
to fix ci error about https://github.com/apache/nuttx/pull/14293
Impact
mpfs/opnsbi
Testing
ci

[Experimental Bot, please feedback here]
This PR summary does not meet the NuttX requirements.
Here's what's missing:

Summary:

Insufficient detail: "to fix ci error about https://github.com/apache/nuttx/pull/14293" is too vague.  Explain the actual error the PR addresses, not just its origin.
Missing elements:

What functional part of the code (mpfs/opnsbi) is changed, and how?
How exactly does this change fix the CI error?

Impact:

All sections are marked as "mpfs/opnsbi" which doesn't describe impact, only the area affected.
Each "Impact" section needs a YES/NO answer, and a description if YES.  For example:

Impact on build:  NO
Impact on user: YES (Users utilizing mpfs/opnsbi functionality may see [describe specific behavioral changes])

Testing:

Insufficient detail: Simply stating "ci" is not enough.
Missing elements:

List the specific build hosts and targets you tested on (OS, architecture, board, configuration).
Provide actual testing logs (before and after the change) demonstrating the error and its resolution.

Recommendation:
Expand your PR description substantially to meet the NuttX requirements.  Provide clear, detailed information for each section to help reviewers understand and evaluate your changes.


Viewport result is 8% too small

Godot version
v3.5.beta2.official [7a4f9dfb1]
System information
Mac OSX (Intel 2019)
Issue description
When rendering a viewport, the resulting image is 8% too small.
Steps to reproduce

Render an image with defined borders to a viewport
Render resulting viewport texture
Render the original texture side-by-side

Note the differences:

When I move the slider to 1.08 (i.e. 108% the texture repeats properly)

Minimal reproduction project
godot-viewport-bug.zip

Workaround:
Scale your Viewports UV coordinates by 108%

@tavurth No bug in here, that's what you're rendering inside that Viewport (the TextureRect inside it is stretched):

Hmm, interesting. Thank you for double checking @kleonc!
I was trying to recreate a bug in my game, and this seemed to be it. ok I will try to find the issue again.


Login option not showing on Checkout page when Guest Checkout enabled

Hello Team,
When I enabled Guest Checkout its disabled login option on front end Completely and showing billing detail form only. While there would be option for user If he want to checkout as Guest user or loggedin User and and If clicked on Login user it should show login form.
Thank You

Hi @elite-digital
could you please show the screenshot whatever you're facing while turn on Guest checkout option

Steps to reproduce

Create a product and allow guest checkout.
Add the product to your cart.
Checkout your cart and you will directly see the form to enter your address etc.

Instead there should be a option to checkout as a user or guest.

Issue is resolved


How i can set subtitle for the video ?

Hi @ArdiArtani, can you write func add link subtitle? Thanks so much!

@mirmarshall01 @mangemve1511 https://support.jwplayer.com/customer/portal/articles/1407438


Can't open UE5 Project

I can't seem to open the UE5 version of this project.
It gives the classic "Built in another version, try recompiling" and when I allow it to do so it just says it failed and to try rebuilding from source. When I open the solution, trying to clean and build just gives an error as well. I am not an adept programmer so I can't really troubleshoot much farther than this.
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.MakeFile.Targets(45,5): error MSB3073: The command ""B:\Program Files\UE_5.0\Engine\Build\BatchFiles\Build.bat" RTSProjectEditor Win64 Development -Project="G:\Programming\Unreal Projects\RTSProject 5.0\RTSProject.uproject" -WaitMutex -FromMsBuild" exited with code 6.

Restarting my computer fixed it! Must have been on my end!


Add alternative onboarding for interstitial search users

Task/Issue URL: https://app.asana.com/0/inbox/361428290920650/1163294449813158/1165440117435986
Description:
Users may experience our app initially via our new interstitial search screen by launching the widget or future system search box and thus skip our initial in-app onboarding. This PR adds an alternative onboarding experience for these users.
Steps to test this PR:
Test new onboarding:

Install the app cleanly
Install the widget
Launch the app from the widget
Note that the interstitial onboarding is displayed and the "m_io_s" pixel fires
Press "Show More" and note that more info is displayed and the "m_io_m" pixel fires
Press "Hide" and note that less info is displayed and the "m_io_l" pixel fires
Press "Got it" and note that the onboarding disappears and the "m_io_d" pixel fires
Launch the app from the widget again and note that the onboarding does not appear and none of the above pixels fire
Launch the app from the app icon
Note that the app is launched WITHOUT the initial onboarding

Test that completing in-app onboarding suppresses interstitial onboarding:

Install the app cleanly
Launch the app from the app icon and complete the initial onboarding
Install the widget
Launch the app from the widget
Note that the interstitial screen is launched WITHOUT any onboarding

Internal references:
Software Engineering Expectations
Technical Design Template

@CDRussell great point about the text, I had been overzealous using large margins and max width constraints. I have reduced the margins and this frees up more space on smaller screens while still keeping everything identical on larger screen.


feat(Workspaces): change workspace database password

Allow a workspace admin to change the workspace database by generating a new one.
Changes
Please list / describe the changes in the codebase for the reviewer(s).

Increase default password length to 16
Add api for updating a database role password.
Create mutation for generating a new password given a workspace

@pvanliefland For the update password API I was hesitating between the current implementation or using it directly from the mutation resolver and then doing something like
update_database_password(workspace.db_name,random_generated_pwd)
workspace.set_password(new_password)
workspace.save()

WDYT?

@pvanliefland For the update password API I was hesitating between the current implementation or using it directly from the mutation resolver and then doing something like
update_database_password(workspace.db_name,random_generated_pwd)
workspace.set_password(new_password)
workspace.save()

WDYT?

I think this could be encapsulated in a generate_new_database_password method on the Workspace model.
(the update_database_password function would be called from this method)

I'm wondering how your tests pass...
In test_schema.py, the mutation is called generateNewDatabasePassword.
In schema.graphql, it is called generateDatabaseNewPassword.
Are you sure your tests are run?

Hum quite weird. Let me check


Import and update conda-forge recipe

tbd

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

The about section contained an unexpected subsection name. doc_src_url is not a valid subsection name.


managementGroup() function doesn't seem to work in module scope

Bicep version
Bicep CLI version 0.3.539 (c8b397dbdd)
Describe the bug
If I pass a management group as a scope to a nested deployment in ARM, it expects the following format:
Microsoft.Management/managementGroups/test
Bicep generates the following
"scope": "[tenantResourceId('Microsoft.Management/managementGroups', 'test')]"
which gives me an error at runtime for this scope:
/providers/providers/Microsoft.Management/managementGroups/test/providers/Microsoft.Resources/deployments/...
The deployment fails saying I do not have access to this scope.
The template deployment failed with error: 'Authorization failed for template resource 'deploy-assignment-to-mvp' of
type 'Microsoft.Resources/deployments'. The client 'live.com#myemail' with object id '{GUID}' does not have permission to perform action 'providers/Microsoft.Management/test/Microsoft.Resources/deploy-assignment-to-test/write' at scope '/providers/providers/Microsoft.Management/managementGroups/test/providers/Microsoft.Resources/deployments/deploy-assignment-to-test'.'.

To Reproduce
targetScope = 'managementGroup'

module mgDeployment 'modules/mymodule.bicep' = {
  name: 'deploy-to-test'
  scope: managementGroup('test')
  params: {
  }
}

Additional context
Add any other context about the problem here.

I will prepare a fix for this.

@slapointe - can you go over what you plan to implement for the fix? There's a lot of weird issues with MGs and scope (in ARM and bicep), so want to make sure you don't waste cycles

I would change the condition that determine if a "fully qualified resource id" is necessary. Right now it checks if the scope is tenant, I would change this to also include managementGroup.
ScopeHelper.cs, line 336
                       var useFullyQualifiedResourceId = targetScope != ResourceScope.Tenant && targetScope != ResourceScope.ManagementGroup;                         expressionEmitter.EmitProperty("scope", expressionEmitter.GetManagementGroupResourceId(scopeData.ManagementGroupNameProperty, useFullyQualifiedResourceId));

@alex-frankel It is right to think that the problem is when we set the scope to another MG than the one we are initially targeted in bicep. In ARM though, it seems to have a problem with the fully qualified path "/provider/Microsoft.Management/managementGroups/test" that tenantResourceId generate and want a path of 'Microsoft.Management/managementGroups/test'.
I also tried setting the scope string manually in the in the ARM template to ensure the problem is not with the tenantResourceId function itself.
I think this PR solves the issue for it to work from bicep, then in ARM. Is there more work to do on the platform because of this inconsistency, worth to think about it but at the same time it would be a breaking change at this point.
I grasp it more now what you were saying that there is weird issues for with scopes & MG on both sides (ARM & bicep).


implement into ecdsa, identity handle, send job

The reason why introduced identity is, each node have 2 type of identity.

p2p network identity 2) it's connected personal crypto account ( in first ver its starknet account. )

I checked you introduced below instead of identity,
let p2p_local_keypair = libp2p::identity::Keypair::generate_ecdsa();

which this Keypair generates secrete key & public key which is not tied to crypto account anymore.
would suggest to have identity back, and I wanted to push this identity flow :

user specify keystore file path
identityhandler get keystore and generate 1) p2p identity 2) starknet identity ( connect )
and we can use this abstracted identity handler in both p2p context and starknet context.


[AIRFLOW-469] Add MFG Labs as Airflow user

Hello.
We'd like to be added as official Airflow users.
Regards

Current coverage is 65.46% (diff: 100%)

Merging #1768 into master will decrease coverage by 0.03%

@@             master      #1768   diff @@
==========================================
  Files           142        142
  Lines          9883       9883
  Methods           0          0
  Messages          0          0
  Branches          0          0
==========================================
- Hits           6473       6470     -3
- Misses         3410       3413     +3
  Partials          0          0

Powered by Codecov. Last update d649cfa...bb43cb2

Welcome! But could you make sure to use the alphabetical order?

@dud225 ? As mentioned, please add your company to the list while maintaining alphanumeric ordering.

Sorry for that didn't notice it in the first place.

@dud225 You need to rebase.. looks like quite a few companies added their names while this was left open.

Also, in general, you need to squash your commits, though committers can also do it with the airflow-pr tool, but it's something we also wish contributors to do.

I'm going to close this PR. Please reopen when ready.

@dud225 just a warning that I will be closing this PR unless there is movement on this.

@dud225 plz resolve the conflicts and rebase to squash all your commits in a single commit.

Sorry for the late reply.
Here you are.

👍


GH-38792: [C++][Gandiva] optimize gandiva cache

Rationale for this change

In Gandiva, it has been observed that the tool caches compiled expressions. However, when using the expression cache, Gandiva takes into account the schema, expr->ToString, and specific parameters. Nevertheless, in llvm_generator.cc, Gandiva still traverses the expressions to generate LLVM IR code and then produces specific JIT functions. Considering that llvm_generator traverses expressions and calculates the memory start positions of fields involved in the computation, we can further enhance Gandiva's caching mechanism.
Specifically, we can exclude the influence of the schema. Simultaneously, we can also exclude the field names' information involved in the expression computation. For example, for a schema {f0:int32, f1:int32} with an expression add(f0, f1), we can cache it initially. Then, for a schema {a0:int32, a1:int32, a2:int32} with an expression add(a1, a2), it should not require recompilation; it can directly reuse the JIT function generated by the expression {f0:int32, f1:int32}, add(f0, f1).
What changes are included in this PR?

This PR primarily alters the construction of the cache key and makes modifications to the schema validation in both the projector and filter. It also adjusts the validation of fields in expr_validator. Additionally, a ToCacheKeyString function has been added to each node. This PR mainly focuses on these areas.
Are these changes tested?

Yes,these changes are tested.
Are there any user-facing changes?
No.

https://github.com/apache/arrow/issues/38792

Closes: #38792

@js8544

Thanks for your contribution! The proposal sounds good: caching at node level is indeed better. I have a couple of questions regarding the implementation:

Could you resolve the conflicts so that we can initiate the CI checks?
I see that schema checks are completely removed. Will invalid execution happen, e.g. Projector of one type executed on a RecordBatch of another type? If so, is it possible to keep the checks on types and only skip the checks on names?

Thanks for your contribution! The proposal sounds good: caching at node level is indeed better. I have a couple of questions regarding the implementation:

Could you resolve the conflicts so that we can initiate the CI checks?
I see that schema checks are completely removed. Will invalid execution happen, e.g. Projector of one type executed on a RecordBatch of another type? If so, is it possible to keep the checks on types and only skip the checks on names?

I will do this later.
For second，gandiva expr validator will check the tree expr. So , when in function node ,it will check the fieldnode type and thus it will checks on types and only skip the checks on names.

Thanks for your contribution! The proposal sounds good: caching at node level is indeed better. I have a couple of questions regarding the implementation:

Could you resolve the conflicts so that we can initiate the CI checks?
I see that schema checks are completely removed. Will invalid execution happen, e.g. Projector of one type executed on a RecordBatch of another type? If so, is it possible to keep the checks on types and only skip the checks on names?

I add some check for invalid execution happen as you said. Thanks for the advice.

@kou Could you help approve the CI workflows? Thanks!

Approved!

Approved!
FYI: You can run CI on your fork by enabling GitHub Actions on your fork.


[FLINK-31739][ci] Reuse ci.yml in flink-connector-shared-utils.

Use the common ci.yml in flink-connector-shared-utils for v3.0 branch's workflows instead of standalone yml.

Thanks @MartijnVisser for the quick review and sync more ci changes. Your newly added commit look good to me!


Possibility to enforce hard constraints

Hi,
I'm trying to solve an optimisation problem (obviously). Unfortunately, I don't have a single feasible solution in my final generation. Is it possible to enforce the constraints in a "hard" way? I'm thinking about only adding individuals that fulfil the constraints.

If you like to have returned the least infeasible solutions feel free to do:
algorithm = GA(pop_size=5, return_least_infeasible=True)
Is it an equality constraint or a very strict inequality constraint? Those can be challenging to satisfy with a GA.
However, repair operators can be an option to handle them efficiently and force them to be satisfied by every individual.
An example is provided here: https://pymoo.org/misc/constraint_handling.html
Does this help?

Thanks for your fast answer.
Let me explain my problem in more detail. I'm trying to optimise a particle accelerator. Our x values are the settings that our operation team can apply to the machine. We have a simulation code f that maps the settings to physical quantities like beams size and energy.
We have a constraint on the beamsize: At some positions, we want 2 < f(x) < 5. This is not fulfilled for any individual x in the last generation.
If I understood the documentation correctly, repair functions work only if the constraints are applied to the x values, not to our f(x).
Is there another way to enforce that only configurations that fulfil 2 <= f(x) <= 5 are in our generations? Or do I have to write a repair function that randomly samples x configurations until a feasible one is found?

What you desire to do is introducing a constraint in the objective space.
For example for a sphere function that would be:
class SphereWithConstraints(Problem):

    def __init__(self, n_var=10):
        super().__init__(n_var=n_var, n_obj=1, n_constr=2, xl=-0, xu=1, type_var=np.double)

    def _evaluate(self, x, out, *args, **kwargs):
        f = np.sum(np.square(x - 0.5), axis=1)
        g1 = 2 - f  # this constraints makes sure that f >= 2
        g2 = f - 5  # this makes sure f <= 5
        out["F"] = f
        out["G"] = np.column_stack([g1, g2])

Do not forget to set n_constr in your problem.

This is exactly what I'm doing. Nevertheless, I don't get feasible individuals. Is there anything else I can do?

Is it possible to initialise the population separately to make sure all individuals are feasible, and then hand it to the minimze() function or somewhere else?

Ok, I was able to solve my problem by adding more individuals.
I'm still interested in manual initialisation. I'll open a separate issue.
Thanks for you help!


Deprecated option - Error in HA supervisor logs

If you are experiencing an issue with the search or indexing of a tracker check out the issue registry on the Jacket github (https://github.com/Jackett/Jackett/issues).
If you are experiencing bugs or issues with the add-on crashing or similar
Issue
Issue with log entry in HA Supervisor
Expected behaviour
No errors 😋
Actual behaviour
Error !
Steps to reproduce
Add the addon repo to your HA instance. Don't even need to install the addon
Device Details
Proposed changes
See #15
Logs

(Paste any relevant log details here)

21-03-31 11:47:46 WARNING (MainThread) [supervisor.addons.validate] Add-on config 'startup' with 'before' is deprecated. Please report this to the maintainer of Jackett

edited to match the template, sorry !

Thanks for this :), i didnt realise all the repo's affected this if not using them. I will push a release now. Glad you liek the telegraf plugin :D

Hi @Sabuto I have added the repo to the add-ons store in Home Assistant OS and I still can see the warning message reported by @SNoof85, even though Telegraf and/or Jackett are installed! Do you have a plan to release this fix @Sabuto? Thanks in advance for your hard work! :)

Hi @Sabuto I have added the repo to the add-ons store in Home Assistant OS and I can still see the warning message reported by @SNoof85, even though Telegraf and/or Jackett are not installed! Do you have a plan to release this fix @Sabuto? Thanks in advance for your hard work! :)

Hey sorry I thought i'd done this. I will try and push tomorrow

Sorry for the delay i've pushed it to the main repo, can you guys double check to see if its working as should be @SNoof85 @joselcaguilar

It's working as expected, thanks @Sabuto 🎉


Ripgrep not working

I can't seem to get ripgrep to work, the overlay shows only opened files. I have a folder loaded and this is my config:
{
    "ripgrep_path": "/opt/homebrew/bin/rg",
    "enable_tags": true,
    // "debug": false,
    "jump_to_most_recent_on_show": false,
    "preview_on_highlight": false,
    "enable_context_preview": false,
}

add this only_show_unopened_files_on_empty_window: False

add this only_show_unopened_files_on_empty_window: False

Now they are showing up in the results but they don't open.

Try restarting Sublime and see if that resolves the issue

I assume you are using a Linux variant? Latest version should fix this now. Sorry, it took a while.


Fix widgettextarea

Copying changes from huggingface_hub#625
widget files were migrated to hub-docs repository on March 16, as can be seen here, which is after huggingface_hub#625 was merged. Why huggingface_hub#625 would not be present in hub-docs from the beginning, @LysandreJik @julien-c ?

Why https://github.com/huggingface/huggingface_hub/pull/625 would not be present in hub-docs from the beginning,

Very likely an error! Thanks for fixing that, @mishig25!

Superceded by https://github.com/huggingface/hub-docs/pull/214


docs(troubleshooting): WebFinger requirement for tailscale

Add guidance to our troubleshoot section for webfinger support. This question came up (and people searched for it) since Tailscale requires users to setup a WebFinger endpoint when using custom oidc IDPs.

Added the changes, good to go?


Raise error on missing params

For #51
TODOs:

[x] Work with defaults set for params def my_view(slug: str = None)
[ ] Use test_fail instead of a try/except block.
[ ] Fix or discuss failing test on bodied view, see image below in the "Failing Test item" block

Tests

Failing test item

When the test is uncommented here is the error it now generates

lgtm! i'll take a look at those other issues now.


[ogre-next] vcpkg_fixup_pkgconfig

fix #34016

[x] Changes comply with the maintainer guide
[x] SHA512s are updated for each updated download
[x] The "supports" clause reflects platforms that may be fixed by this new version
[x] Any fixed CI baseline entries are removed from that file.
[x] Any patches that are no longer applied are deleted from the port's directory.
[x] The version database is fixed by rerunning ./vcpkg x-add-version --all and committing the result.
[x] Only one version is added to each modified port's versions file.

Can you help me to have the usage?

@dg0yt
How I can use this port? It doesn't share with me a usage file.

Can you help me to have the usage?

The OGRE.pc file is provided under lib/pkgconfig/, and the package is successfully found using pkg_check_modules:
find_package(PkgConfig REQUIRED)
pkg_check_modules(TEST REQUIRED OGRE)
target_include_directories(main PRIVATE ${TEST_INCLUDE_DIRS})
target_link_libraries(main ${TEST_LIBRARIES})

@MonicaLiu0311 The port is not fix:
C:\src\vcpkg>vcpkg owns ogre-next
ogre-next:x64-windows: x64-windows/share/ogre-next/FindOGRE.cmake
ogre-next:x64-windows: x64-windows/share/ogre-next/FindPkgMacros.cmake
ogre-next:x64-windows: x64-windows/share/ogre-next/FindRapidjson.cmake
ogre-next:x64-windows: x64-windows/share/ogre-next/FindRemotery.cmake
ogre-next:x64-windows: x64-windows/share/ogre-next/FindSDL2.cmake
ogre-next:x64-windows: x64-windows/share/ogre-next/MacroLogFeature.cmake
ogre-next:x64-windows: x64-windows/share/ogre-next/OgreAddTargets.cmake
ogre-next:x64-windows: x64-windows/share/ogre-next/OgreConfigTargets.cmake
ogre-next:x64-windows: x64-windows/share/ogre-next/OgreFindFrameworks.cmake
ogre-next:x64-windows: x64-windows/share/ogre-next/OgreGetVersion.cmake
ogre-next:x64-windows: x64-windows/share/ogre-next/PrecompiledHeader.cmake
ogre-next:x64-windows: x64-windows/share/ogre-next/PreprocessorUtils.cmake
ogre-next:x64-windows: x64-windows/share/ogre-next/VisualStudioUserFile.vcproj.user.in
ogre-next:x64-windows: x64-windows/share/ogre-next/VisualStudioUserFile.vcxproj.user.in
ogre-next:x64-windows: x64-windows/share/ogre-next/copyright
ogre-next:x64-windows: x64-windows/share/ogre-next/vcpkg.spdx.json
ogre-next:x64-windows: x64-windows/share/ogre-next/vcpkg_abi_info.txt

Can you verify it?
There is no lib/dll/pc file on windows64.

When I install ogre-next on windows, I didn't find the lib/pc file/dll
Also when I do on linux:
./vcpkg owns ogre-next
it not show the lib/dll/pc files. Is it ok?
> ./vcpkg owns ogre-next
ogre-next:x64-linux: x64-linux/share/ogre-next/FindDirectX.cmake
ogre-next:x64-linux: x64-linux/share/ogre-next/FindFreeImage.cmake
ogre-next:x64-linux: x64-linux/share/ogre-next/FindFreetype.cmake
ogre-next:x64-linux: x64-linux/share/ogre-next/FindOGRE.cmake
ogre-next:x64-linux: x64-linux/share/ogre-next/FindOpenGLES.cmake
ogre-next:x64-linux: x64-linux/share/ogre-next/FindOpenGLES2.cmake
ogre-next:x64-linux: x64-linux/share/ogre-next/FindPkgMacros.cmake
ogre-next:x64-linux: x64-linux/share/ogre-next/FindRapidjson.cmake
ogre-next:x64-linux: x64-linux/share/ogre-next/FindRemotery.cmake
ogre-next:x64-linux: x64-linux/share/ogre-next/FindSDL2.cmake
ogre-next:x64-linux: x64-linux/share/ogre-next/FindSoftimage.cmake
ogre-next:x64-linux: x64-linux/share/ogre-next/FindZLIB.cmake
ogre-next:x64-linux: x64-linux/share/ogre-next/FindZZip.cmake
ogre-next:x64-linux: x64-linux/share/ogre-next/MacroLogFeature.cmake
ogre-next:x64-linux: x64-linux/share/ogre-next/OgreAddTargets.cmake
ogre-next:x64-linux: x64-linux/share/ogre-next/OgreConfigTargets.cmake
ogre-next:x64-linux: x64-linux/share/ogre-next/OgreFindFrameworks.cmake
ogre-next:x64-linux: x64-linux/share/ogre-next/OgreGetVersion.cmake
ogre-next:x64-linux: x64-linux/share/ogre-next/PrecompiledHeader.cmake
ogre-next:x64-linux: x64-linux/share/ogre-next/PreprocessorUtils.cmake
ogre-next:x64-linux: x64-linux/share/ogre-next/copyright
ogre-next:x64-linux: x64-linux/share/ogre-next/vcpkg.spdx.json
ogre-next:x64-linux: x64-linux/share/ogre-next/vcpkg_abi_info.txt

@MonicaLiu0311 Did you try to install this port on x64-windows? Can you verify that it not install the pc/lib/dll for you?

fix:

on windows:

lib/Release -> lib
debug/lib/Debug -> debug/lib

Add features:

overlay
planar-reflections

@MonicaLiu0311 I change the port.
Can you review again?


Helmet looks bad if FOV is big enough

FOV varies with the headset. Might be a good idea to change the helmet's scale depending on FOV somehow.

Will probably be done together with #180

Helmet models use a special shader that makes then immune to FOV changes. Swapping to Default material breaks the textures (magenta).
Make an asset bundle with a full 360 helmet, and then figure out how to scale it proportionally to FOV.

Closed by #189


mkcert -install just hangs on macOS

On a fresh install of macOS Monterey (12.1) this happens
> mkcert -install
CA created
[nothing]

mkcert v1.4.3
Apple Silicon
Any idea what I can do to investigate what's going on?

Got it to work. Updated to macOS 12.2, after that I ran mkcert -install. It still stalled, but it seems like it installed successfully.
This seems related: https://developer.apple.com/forums/thread/671582


Post titles need more distinction

The post title looks no different then heading text in a post. If you have a heading as your first text in a post the post title matches it and it just looks odd.

Fixed in next release, thanks for reporting 😎


branch fails in 0.21.0

Example (react 0.14.x):
const modalWindow = ({
  theme,
}) => (
  <div className={theme.component}>
  </div>
);

export const modalWindowHOC = compose(
  themr('modalWindow', modalWindowStyles),
  branch(
    ({ visible }) => !!visible,
    v => v,
    renderNothing,
  ),
);

Errror:
warning.js?0260:45Warning: branch(modalWindow)(...): No `render` method found on the returned component instance: you may have forgotten to define `render`, returned null/false from a stateless component, or tried to render an element whose type is a function that isn't a React component

The problem that in react x 0.14 which I still use in production ;-) you can't return null from stateless components https://github.com/facebook/react/issues/4599


Fix :watcher_command_error that disables FR-FG Risteys from running locally

Running FR-FG Risteys locally by running mix phx.server doesn't work because of the below error
[error] Task #PID<0.585.0> started from RisteysWeb.Endpoint terminating ** (stop) :watcher_command_error     (phoenix 1.6.0) lib/phoenix/endpoint/watcher.ex:55: Phoenix.Endpoint.Watcher.watch/2     (elixir 1.12.2) lib/task/supervised.ex:90: Task.Supervised.invoke_mfa/2     (stdlib 3.15.2) proc_lib.erl:226: :proc_lib.init_p_do_apply/3 Function: &Phoenix.Endpoint.Watcher.watch/2     Args: ["node", ["node_modules/webpack/bin/webpack.js", "--mode", "development", "--watch-stdin", {:cd, "/Users/sarakuitunen/risteys/risteys_elixir/assets"}]]
Running the failing JavaScript script ./node_modules/webpack/bin/webpack.js --mode development --watch-stdin in /assets directory gives the following error:
dyld[6630]: Library not loaded: '/usr/local/opt/icu4c/lib/libicui18n.69.dylib'   Referenced from: '/usr/local/Cellar/node/16.6.2/bin/node'   Reason: tried: '/usr/local/opt/icu4c/lib/libicui18n.69.dylib' (no such file), '/usr/local/lib/libicui18n.69.dylib' (no such file), '/usr/lib/libicui18n.69.dylib' (no such file), '/usr/local/Cellar/icu4c/71.1/lib/libicui18n.69.dylib' (no such file), '/usr/local/lib/libicui18n.69.dylib' (no such file), '/usr/lib/libicui18n.69.dylib' (no such file) Abort trap: 6

Solved by brew reinstall icu4c


Unknown data type on 1909

Hi Anton,
first congratulations on this very creative work.

Field DATES: Component type or domain used not active or does not exist
Could not determine structure width of ZHAT_ST_HISTORY
Nametab for table ZHAT_ST_HISTORY cannot be generated
Row type ZHAT_ST_HISTORY is not active or does not exist
Field HISTORY: Table type ZHAT_TT_HISTORY is not active or does not exist
Table ZCHAT_ST_RESPONCE could not be activated
Table ZHAT_ST_HISTORY could not be activated
Table Type ZHAT_TT_HISTORY could not be activated
Return code..............: 8
Would it be possible to replace that component with a custom Z type for compatibility reasons ?
Thank you very much
Greetings,Attila

thank you for respond. I will fix it and notify you
чт, 20 трав. 2021, 22:47 користувач Attila Berencsi <
@.***> пише:

Hi Anton,
first congratulations on this very creative work.

Field DATES: Component type or domain used not active or does not exist
Could not determine structure width of ZHAT_ST_HISTORY
Nametab for table ZHAT_ST_HISTORY cannot be generated
Row type ZHAT_ST_HISTORY is not active or does not exist
Field HISTORY: Table type ZHAT_TT_HISTORY is not active or does not exist
Table ZCHAT_ST_RESPONCE could not be activated
Table ZHAT_ST_HISTORY could not be activated
Table Type ZHAT_TT_HISTORY could not be activated
Return code..............: 8
Would it be possible to replace that component with a custom Z types for
compatibility reasons ?
Thank you very much
Greetings,Attila
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/AntonSikidin/elitechat/issues/2, or unsubscribe
https://github.com/notifications/unsubscribe-auth/AG2SXGDWG7STQGHQLJSFTFTTOVRM5ANCNFSM45HXZMQA
.

fix with updete, try new wersion

Thanks Anton, installation successful.


Fix Ordering on WordLock (tsan detected)

I was writing some hand-rolled locks for a tutorial, and did some lightweight fuzzing of the locks under thread-sanitizer to check correctness. I used parking_lot::RawMutex as my "control group" to sanity-check my test suite, but it ended up detecting data races in WordLock.
Taking a look, the Orderings seem a bit too loose — lock_slow used Release in the cmpxchg_weak but needs at least Acquire semantics to acquire the lock (although just using Acquire did not appease TSan), and unlock_slow had a similar problem but reversed (although that code more obviously needs at least Acquire, and so makes sense that it needs AcqRel).
That said, I'm definitely not sure these are actually minimal orderings, but I wasn't able to reduce any individual ordering further without upsetting TSan. That said, there may also be a cleverer approach to this.

This is the code that detected the issue. I haven't minimized it, although its still pretty small. It uses cobb to perform the thread fuzzing, but cobb is all safe code (aside from a single function that isn't called in this test, and just does volatile reads/writes that are clearly sound) https://gist.github.com/thomcc/6ca2bef4b7526caeda06f4cceaabfe70

I've added a build.rs that detects tsan. An alternative way would be using a cargo feature, but this would be annoying to turn on (for example, if you only have a transitive dep that uses parking_lot, and only use nightly for builds under sanitizers or something).
If you don't like this way and prefer it be another feature, I can do that too.

Thanks!


Initialization of database and repositories

I apologize for bringing up another issue regarding initialization, but I want to ensure I fully understand the topic.
How I understand the system works now
Currently, we can start the server (e.g., by running npm run dev) and the server, based on the configuration, may create the database and repositories at startup. When doing so it would replace any existing database and/or repositories. Therefore, one should start the server once with a configuration that requests the creation of the database and repositories (setup configuration), then change the configuration to remove these options or have a second configuration file (standard configuration).
Typically, during system setup, one would start the server once with the setup configuration, manually verify that the database and repositories have been created, and then stop the server by pressing ctlr-c. Subsequently, the server would be started or restarted as needed using only the standard configuration.
Proposed changes
If I understand correctly, I am wondering if one of these two changes would be desirable and possible:
1. Conditional Creation Option
Have the possibility to specify in the configuration that we want one or two behaviors:

create the database or repositories, only if they do not exist already
create the database or repositories, even if they do not exist already, deleting them and recreating them
This could be done by adding a flag in the configuration of the database and thre repositories (onlyIfNeeded? keepExisting? retentionPolicy?)

This would remove the need for having two configurations and even for running the server once during the setup, just to ensure the creation of the database and the repositories is done. It would be done at the first normal execution, and never again (if the proper configuration is used).
2. Command Line Flags
Alternatively one could specify a flag on the command line called --setup-only. When the flag is specified, the server would exit after creating the database and the repositories. This would remove the need to kill the server. Killing the server "after a while" may be easy for a person to do, but it could be difficult to automatize (do we just use a timeout and hope that the database and repositories creation has finished by the time the timeout expire?). So introducing this flag, would simplify the automation of the setup step.
One could also add an option called --no-setup. When specified the creation of the database and repositories would be skipped, even if specified. If we had these two flags we could avoid having two separate configurations, avoid duplications.
Do you think any of these approaches would make sense?

Ad 1. Yes, I think it is a good idea to change the behavior to either overwrite an existing database/repository or do nothing if it already exists.
Ad 2. I like this as well. Alternatively we could have a completely separate 'admin server' that can only create/delete databases and/or repositories. This could them potentially run by a different user with different credentials from the 'normal' api's. Drawback is that it needs quite more setup, so I think it is best to go with your idea.

@ftomassetti This has been implemented using configuration files, can it be closed?  Or do we need more functionality?

@joswarmer this issue has been created after the introduction of the configuration files. In essence the problem is that currently in the configuration file we can only say to always create a repository and a database or to never create it, while I suppose the typical usage would be to define the configuration and have the repository and database created at the first run and then not been overriden at the second run. To achieve this currently we either have to modify the configuration between the first and the second run or keep two files. This is error prone and can cause people accidently override their databases

Thanks for explaining this.  Then this issue should stay and I propose we change the configuration file.


Design Backend Architecture

We need to design some kind of back end architecture using Rust. I'm leaning toward Rocket
Perhaps look into other frameworks?

Closed


Add run_constrained

This MR adds run_constrained requirements so that you can't attempt to install liblal-7.1.1 and lal-7.1.0.

Checklist

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

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


something broke

$ python connect_nodes.py
<EMAIL_ADDRESS>can't open file '/Users/matthewzipkin/Desktop/work/warnet/connect_nodes.py':
[Errno 2] No such file or directory

Hm, looks like you don't have @willcl-ark 's new changes for installing via pip. What I'd recommend:

Nuke your .venv file, if you have one with rm -rf .venv
Nuke your docker containers (whichever command you've been using)
pull main and run pip install -e . and then type warnet

ok works thanks


face mesh app output wrong mesh

Please make sure that this is a solution issue.
System information (Please provide as much relevant information as possible)

Have I written custom code (as opposed to using a stock example script provided in Mediapipe): NO
OS Platform and Distribution (e.g., Linux Ubuntu 16.04, Android 11, iOS 14.4): Android 10
MediaPipe version: latest
Bazel version:
Solution (e.g. FaceMesh, Pose, Holistic): FaceMesh
Programming Language and version ( e.g. C++, Python, Java):

Describe the expected behavior:
I git clone this repo, and use Android Studio to open C:\MachineLearning\mediapipe\mediapipe\examples\android\solutions, then i build the app, this is the output apk:
facemesh-debug.zip
then i install the app on my phone (XIAOMI 8 SE), it shows the mesh result as below :

By the way, how to mesure the FPS of model inference in the android example app, where to place what codes ? Thanks in advance ~

Hi @wwdok ,
Could you please share your code changes to investigate further on this issue.

@sureshdagooglecom Hi, i didn't change any code, is it convenient for you to use the latest code to build the face mesh android apk on your computer ?

Similar to https://github.com/google/mediapipe/issues/3326#issuecomment-1120087511, the issue is fixed in the latest android maven package.

@jiuqiant I rebuild the app, now it is normal. By the way, could you please tell me how to mesure the FPS of model inference in the android example app, where to place what codes ? I am not familiar with java

Hi @wwdok ,
This issue is corrected in the latest version (more recent versions) of MediaPipe.
you can check this closed issue https://github.com/google/mediapipe/issues/598 to check model FPS.


Adding unit tests and code coverage

This PR does the following.
Miscelaneous changes:

Added operator== to builtin matchers.
Added is_any_of to builtin matchers.
Fixed some warnings on -Wall -Wextra and /W4.
(internal) Added unit tests to test the testing framework :) (using doctest, in case snatch breaks and fails to report it to itself).
(internal) Added coverage check to CI.

Codecov Report

:exclamation: No coverage uploaded for pull request base (main@ac7178d). Click here to learn what that means.
The diff coverage is n/a.

Additional details and impacted files

@@           Coverage Diff           @@
##             main      #16   +/-   ##
=======================================
  Coverage        ?   27.51%
=======================================
  Files           ?        2
  Lines           ?      836
  Branches        ?        0
=======================================
  Hits            ?      230
  Misses          ?      606
  Partials        ?        0

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 ac7178d...411aa0e. Read the comment docs.


getAll never return on iOS if permission is denied

On iOS 10.2.1 (didn't test on other version), if we use the template:
"
Contacts.getAll((err, contacts) => {
if(err && err.type === 'permissionDenied'){
// x.x
} else {
console.log(contacts)
}
})
"
We in fact never exit the getAll call and never trigger the err.type='permissionDenied'
We didn't test that properly in previous versions, so I don't know if this is a regression or an old issue...

Thanks for the info, I also don't know if it's a regression.  This would be a good thing to submit as a first PR if you know how.

I am having an issue where getAll (and getAllWithoutPhotos) never returns, regardless of the permissions set. This is happening only on certain devices so far: 4s running IOS 8.1 and 6 running IOS 10.2.1. Here is the code  I am using to check:
 Contacts.checkPermission((err, permission) => {
   console.log(permission) // prints 'authorized'
   console.log("about to get contacts")
   Contacts.getAllWithoutPhotos((err, contacts) => {
     console.log("made it")  // never prints
   })
 })

Yes, apparently apple reported close to 100% conversion to iOS 9 or above, so we stopped supporting 8 and moved to the new contacts api.  It seems much faster and more stable now.

Are you able to test https://github.com/rt2zz/react-native-contacts/pull/157 - it has some improvements around the permissions handling.

@brianomchugh @bourgois  Are you able to test #157 - it has some improvements around the permissions handling.

Can we close this?

Yes! Thanks @npomfret


web application submission page

The back-end rest api is almost complete. However, there is no front-end to fill out scorecards. The basic flow of the page should be as follows:

user selects the scorecard they want to use
page sends a request to the rest api to get the scorecard
page renders scorecard and displays it to user

text fields for match number, robot number,etc
actual fields from the scorecard

user fills out scorecard over the course of the match
user hits submit button
page creates a result object and sends it to the rest api

the web application now has its own repository https://github.com/robocubs4205/cubscout-webapp


creating and editing resource got resource class error

when try to create and update the resource will have an error
Resource
BelongsTo::make('Preparation Type')
                ->rules('required'),

            NovaDependencyContainer::make([
                BelongsTo::make('Compound Type')
                    ->nullable(true)
                    ->hideFromIndex(),

                BelongsTo::make('Plant', 'plant', Plant::class)
                    ->nullable(true)
                    ->hideFromIndex(),

                BelongsTo::make('Product Type', 'product_type', ProductType::class)
                    ->nullable(true)
                    ->hideFromIndex(),
            ])->dependsOn('preparation_type.id', 1),

            NovaDependencyContainer::make([
                BelongsTo::make('Material')
                    ->searchable()
                    ->nullable(true)
                    ->hideFromIndex(),
            ])->dependsOn('preparation_type.id', 2),

            NovaDependencyContainer::make([
                BelongsTo::make('Material')
                    ->searchable()
                    ->nullable(true)
                    ->hideFromIndex(),
            ])->dependsOn('preparation_type.id', 3),

Model
public function preparation_type() : BelongsTo
    {
        return $this->belongsTo(PreparationType::class);
    }

Same problem

@seoperin Can you please make sure you are using the trait HasDependencies in your resource?
use Epartment\NovaDependencyContainer\HasDependencies;

class TheResource extends Resource {
   use HasDependencies;
}

Yes, i use this trait

@seoperin @anditsung Could you please try the following
in vendor/epartments/nova-dependency-container/src/HasDependency.php for the trait HasDependency, could you replace line 29
from
if($field->areDependenciesSatisfied($request)) { ...

to
$model = $this->model();
if($field->areDependenciesSatisfied($request) || $model->id === null) {

and tell me if this resolves the issue when creating a resource?

@wize-wiz yes, this solves the problem

@seoperin I also have no problems editing a resource or any other side effects. If so, I'll merge this change and close this issue if there aren't any other issues.

I ran into the same issue. Your solution seems to be fine. Could you merge it and tag it please? :)

Done v1.2.6


SSH doesn't use passphrase stored in keychain on MacOS Monterey, after following directions

Code of Conduct

[X] I have read and agree to the GitHub Docs project's Code of Conduct

What article on docs.github.com is affected?
https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent
What changes are you suggesting?
Adding your SSH key to the ssh-agent
After following the directions given in this section, to store the passphrase in keychain, I continued to be prompted for the passphrase on every git push. I am using MacOS 12.6.2.
After reading some forums on related issues on recent MacOS versions, I found that copying the command given at step 3(ssh-add --apple-use-keychain ~/.ssh/id_{% ifversion ghae %}rsa{% else %}ed25519{% endif %}) into ~/.zshrc gave correct behaviour.
Use case: Mac users encountering problems with SSH connections using a stored passphrase.
Expected outcome: a note to suggest a fix to this problem, if encountered.
I suggest adding to the note at step 3 that this extra step may be required, e.g.:

If you continue to be prompted for your passphrase, you may need to add the above command to your ~/.zshrc file (or .bashrc for bash).

Additional information
~/.ssh/config is as per the instructions given, with no other contents.

@oC-n Thanks for opening an issue and providing all the helpful context ✨
I'll get this triaged for review! :zap:

This is a safe/sane adjustment to make to the macOS docs 👍

@oC-n Thanks for raising this issue! You, or anyone else, are welcome to submit a PR with this fix ✨

Thanks Anne-Marie, and apologies for not getting the PR sorted myself - a
bit overwhelmed in a new job!
On Tue, 13 Jun 2023 at 08:11, Anne-Marie @.***> wrote:

Closed #23159 https://github.com/github/docs/issues/23159 as completed
via #24505 https://github.com/github/docs/pull/24505.
—
Reply to this email directly, view it on GitHub
https://github.com/github/docs/issues/23159#event-9511964257, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/ASHBZBD5YCSYWYJMEC5MD6DXLAHBNANCNFSM6AAAAAATYFNLVI
.
You are receiving this because you were mentioned.Message ID:
@.***>

https://33win00.com/


Disable comments

Added is_commentable to posts

Coverage increased (+0.07%) when pulling 972a938e08ac098e2ad47b7c91a319f05106436c on pbrudny:disable_comments into 59cd0bb3cd55a7e9981044423e22aed25fcfb567 on comfy:master.

Comments are gone in v.2.0. Using 3rd-party is preferable. Or extend it with your own commenting system.


[BUG] blox trap not starting

Acknowledgement of preliminary instructions

[X] I have read the preliminary instructions, and I am certain that my problem has not already been addressed.

What problem did you encounter?
blox trap not starting
the screenshot and log
screnshoot
Bloxstrap_20240504T180341Z.log

Known bug, see https://github.com/pizzaboxer/bloxstrap/wiki/Using-multiple-instances-always-forces-a-Roblox-upgrade


fix: properly mark type of arrays that are not modified by the librar…

…y as readonly
Fixes https://github.com/TanStack/table/discussions/3648
This is a new attempt after #4909 was closed.

I don't really understand why people want readonly added to the TanStack Table types. Is it necessary? Nice to have? I guess can see the case for nicely integrating data that was already marked as readonly from some state managers or graphql clients without needing to cast, but I don't understand the advantage for all of these other changes.

Most of the time when handing over an array you don't expect the function or the component that takes that array to be able to modify them. So you're actually thinking of a readonly array. One could think that it should be the default for all arrays in most code with the mutable arrays being the exception.
Here are two use cases that benefit of readonly array in addition to state managers and graphql clients:

Using as constto strong type quickly. In our code we regularly write static const values with the as const, this helps us restrict the type of the constant to its bare minimum. However this creates readonly arrays.

Stabilizing props: in order to improve performance, we recommend our developers to treat data as immutable. See this article.

If my proposal is a no-go for you, I can try to restrict to the bare minimum and restrict only the interface of TanStack's library.

The builds are not passing after these changes

@KevinVandy would this PR (or another PR with the same changes) be considered if the build was fixed?

Or, let's make the changes in the v9 alpha


EPG Guide display option?

I tried using the guide option that allows you to have the channel list the name of said channel instead of the items that are playing. However, listed in the EPG itself it shows the video files themselves and on music channels and certain other channels it gets quite chaotic. I have one person who is OCD that uses the guide only and this format is driving them nuts so i had to remove it. I do this by having the filler be listed instead and it remain black so it will show "No Information Available" in its place. I am attempting to see if there is an option where you name  a channel "80's Music Videos" and it shows that across the entire banner as the name instead of the small squares? I know of the one option that allows the channel when played to show that in the banner. but on the guide itself it still shows all the individual videos. any help is appreciated.

resolved with help from discord chat.


⚠ Bofrost.at has degraded performance

In ae11110, Bofrost.at (https://www.bofrost.at) experienced degraded performance:

HTTP code: 200
Response time: 1694 ms

Resolved: Bofrost.at performance has improved in 87574d6.


Swift 4.2 issue

Reusable/Sources/View/NibOwnerLoadable.swift:40:28: error: 'NSLayoutAttribute' has been renamed to 'NSLayoutConstraint.Attribute'
There's an error when compiling against Xcode 10 beta 6

Yeah, I had 4.0.2. Sorry!


capacity planning section added

Thanks for contributing to the Harness Developer Hub! Our code owners will review your submission.
Description

Please describe your changes: \ capacity planning section added
Jira/GitHub Issue numbers (if any): \ DBOPS-439
Preview links/images (Internal contributors only): __________________

PR lifecycle
We aim to merge PRs within one week or less, but delays happen sometimes.
If your PR is open longer than two weeks without any human activity, please tag a code owner in a comment.
PRs must meet these requirements to be merged:

[X] Successful preview build.
[X] Code owner review.
[X] No merge conflicts.
[X] Release notes/new features docs: Feature/version released to at least one prod environment.

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step behind the Harness VPN and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app. Current Draft URL is: https://673f73ef8f733c43ede4cb6a--harness-developer.netlify.app

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step behind the Harness VPN and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app. Current Draft URL is: https://6740b31bdba0e800f0e0a793--harness-developer.netlify.app


Help fix quodlibet! (Doesn't find icons)

The Quodlibet music player hasn't been building.
I got two of the 6 failing tests to pass
but the ones for icons still fail, and in fact adding doCheck = false and running it shows that the app has no icons.
Does anyone versed in gtk know why this is?

Motivation for this change
I like quodlibet and want it to work
Things done

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

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

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

hicolor-icon-theme does not really contain any icons, users are expected to choose an icon theme and install it globally (though some prefer to include Adwaita to make the icons work even for users without icon theme, see discussion on https://github.com/NixOS/nixpkgs/pull/43150.)
Not really sure why tray icon tests are failing and will not be able to debug anytime soon.

Looks like librsvg is missing or the gdk-pixbuf svg loader it contains.

It also complains that it can't import pyflakes and pycodestyle, however those are added to checkInputs. I wonder why that is.

You can pass --no-quality to test to skip them.

I suspect we should be wrapping the test with wrapGAppsHook before running them.
Also, passing --no-quality sounds like a reasonable idea (I assume those are just code quality checks, which shouldn't be relevant for us.
I'm also getting a ton of deprecation warnings, which I hope will go away with 1.13.0.

This was done in #77796 and can be closed.

safe


Package update: Freenet 1485

https://freenetproject.org/freenet-build-1485-released.html

Freenet has changed from the Ant build system to Gradle since this package was last updated.
http://downloads.freenetproject.org is now a dead link, at least on my system.
This will probably require quite a bit of effort to update.

This can be closed, once #200101 is merged.

Next time please add a fixes to the PR.