Relicense under dual MIT/Apache-2.0

This issue was automatically generated. Feel free to close without ceremony if
you do not agree with re-licensing or if it is not possible for other reasons.
Respond to @cmr with any questions or concerns, or pop over to
#rust-offtopic on IRC to discuss.
You're receiving this because someone (perhaps the project maintainer)
published a crates.io package with the license as "MIT" xor "Apache-2.0" and
the repository field pointing here.
TL;DR the Rust ecosystem is largely Apache-2.0. Being available under that
license is good for interoperation. The MIT license as an add-on can be nice
for GPLv2 projects to use your code.
Why?
The MIT license requires reproducing countless copies of the same copyright
header with different names in the copyright field, for every MIT library in
use. The Apache license does not have this drawback. However, this is not the
primary motivation for me creating these issues. The Apache license also has
protections from patent trolls and an explicit contribution licensing clause.
However, the Apache license is incompatible with GPLv2. This is why Rust is
dual-licensed as MIT/Apache (the "primary" license being Apache, MIT only for
GPLv2 compat), and doing so would be wise for this project. This also makes
this crate suitable for inclusion and unrestricted sharing in the Rust
standard distribution and other projects using dual MIT/Apache, such as my
personal ulterior motive, the Robigalia project.
Some ask, "Does this really apply to binary redistributions? Does MIT really
require reproducing the whole thing?" I'm not a lawyer, and I can't give legal
advice, but some Google Android apps include open source attributions using
this interpretation. Others also agree with
it.
But, again, the copyright notice redistribution is not the primary motivation
for the dual-licensing. It's stronger protections to licensees and better
interoperation with the wider Rust ecosystem.
How?
To do this, get explicit approval from each contributor of copyrightable work
(as not all contributions qualify for copyright, due to not being a "creative
work", e.g. a typo fix) and then add the following to your README:
## License

Licensed under either of

 * Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)
 * MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)

at your option.

### Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted
for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any
additional terms or conditions.

and in your license headers, if you have them, use the following boilerplate
(based on that used in Rust):
// Copyright 2016 glib Developers
//
// Licensed under the Apache License, Version 2.0, <LICENSE-APACHE or
// http://apache.org/licenses/LICENSE-2.0> or the MIT license <LICENSE-MIT or
// http://opensource.org/licenses/MIT>, at your option. This file may not be
// copied, modified, or distributed except according to those terms.

It's commonly asked whether license headers are required. I'm not comfortable
making an official recommendation either way, but the Apache license
recommends it in their appendix on how to use the license.
Be sure to add the relevant LICENSE-{MIT,APACHE} files. You can copy these
from the Rust repo for a plain-text
version.
And don't forget to update the license metadata in your Cargo.toml to:
license = "MIT OR Apache-2.0"

I'll be going through projects which agree to be relicensed and have approval
by the necessary contributors and doing this changes, so feel free to leave
the heavy lifting to me!
Contributor checkoff
To agree to relicensing, comment with :
I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.

Or, if you're a contributor, you can check the box in this repo next to your
name. My scripts will pick this exact phrase up and check your checkbox, but
I'll come through and manually review this issue later as well.

[ ] @GuillaumeGomez
[ ] @gkoz
[ ] @jeremyletang
[ ] @oakes
[ ] @mathijshenquet
[ ] @buster
[ ] @gsingh93
[ ] @vojtechkral
[ ] @bpbp-boop
[ ] @osa1
[ ] @dndanik
[x] @jgillich
[ ] @ptersilie
[ ] @SimonSapin
[ ] @TobiasBales
[ ] @Blei
[ ] @frewsxcv
[ ] @briankropf
[ ] @gekola
[ ] @nicokoch
[ ] @steveklabnik
[ ] @zploskey
[ ] @kennytm

I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.

For crates such as this I recommend splitting out a -sys crate if possible and keeping that with the same license as the library being wrapped, in this case, LGPL.

I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.

For crates such as this I recommend splitting out a -sys crate if possible and keeping that with the same license as the library being wrapped, in this case, LGPL.

This advice doesn't make any sense to me.

@gkoz anything I can help clarify?

(There's some more discussion about this here)

As far as I'm aware, anything LGPL you link statically into the binary will infect it making all the Apache/MIT effort moot.

That is more or less the case, and that is why it helps to have the -sys crate explicitly be licensed as LGPL. That way automated tools can know what licenses apply to a crate, which helps with compliance.

Do I understand it correctly that you don't consider it possible to license the sys crate under a more permissive license and that it must be LGPL because of the external library license? Or your point that the automated tools know about the external library's license?

I do consider it possible to license the sys crate under a more permissive license. In fact, I take back the recommendation for this crate - the obvious intented usecase with glib etc is dynamic linking. My point is to help automated tools, but with the LGPL and dynamic linking, it has downsides that are extremely negative (IMO).

I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.

I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.

I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.

I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.

I license past and future contributions under the dual MIT/Apache-2.0
license, allowing licensees to chose either at their option.
On Mon, Jan 11, 2016 at 10:45 AM, Daniel Zalevskiy<EMAIL_ADDRESS>
wrote:

I license past and future contributions under the dual MIT/Apache-2.0
license, allowing licensees to chose either at their option.
—
Reply to this email directly or view it on GitHub
https://github.com/gtk-rs/glib/issues/85#issuecomment-170649207.

I license past and future contributions under the dual MIT/Apache-2.0 license, allowing licensees to chose either at their option.


Video Frames Error

I've been trying different things for a few hours now to get my video to run, and I think it may be the video itself even though I just rendered it myself in Adobe. It's cropped appropriately at 1:1, an MP4, and I really don't know what to do now.
Is there maybe a preferred video format I should be using? I noticed other videos are MP4 that are in the model folder so I didn't know if that would be the case. Anyone able to give me advice? I've looked into other issues on here but none of them seemed to help me.
Here's the error:
RuntimeError                              Traceback (most recent call last)
/usr/local/lib/python3.6/dist-packages/imageio/plugins/ffmpeg.py in _read_frame_data(self)
   620                     raise RuntimeError(
--> 621                         "Frame is %i bytes, but expected %i." % (len(s), framesize)
   622                     )

RuntimeError: Frame is 0 bytes, but expected 12288.

During handling of the above exception, another exception occurred:

CannotReadFrameError                      Traceback (most recent call last)
5 frames
/usr/local/lib/python3.6/dist-packages/imageio/plugins/ffmpeg.py in _read_frame_data(self)
   626                 err2 = self._stderr_catcher.get_text(0.4)
   627                 fmt = "Could not read frame %i:\n%s\n=== stderr ===\n%s"
--> 628                 raise CannotReadFrameError(fmt % (self._pos, err1, err2))
   629             return s, is_new
   630

CannotReadFrameError: Could not read frame 1178:
Frame is 0 bytes, but expected 12288.
=== stderr ===
ffmpeg version 3.4.6-0ubuntu<IP_ADDRESS> Copyright (c) 2000-2019 the FFmpeg developers
 built with gcc 7 (Ubuntu 7.3.0-16ubuntu3)
 configuration: --prefix=/usr --extra-version=0ubuntu<IP_ADDRESS> --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-librsvg --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared
 libavutil      55. 78.100 / 55. 78.100
 libavcodec     57.107.100 / 57.107.100
 libavformat    57. 83.100 / 57. 83.100
 libavdevice    57. 10.100 / 57. 10.100
 libavfilter     6.107.100 /  6.107.100
 libavresample   3.  7.  0 /  3.  7.  0
 libswscale      4.  8.100 /  4.  8.100
 libswresample   2.  9.100 /  2.  9.100
 libpostproc    54.  7.100 / 54.  7.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/content/gdrive/My Drive/first-order-motion-model/DBnuggest_1.mp4':
 Metadata:
   major_brand     : mp42
   minor_version   : 0
   compatible_brands: mp42mp41
   creation_time   : 2020-07-28T17:25:57.000000Z
 Duration: 00:00:19.71, start: 0.000000, bitrate: 368 kb/s
   Stream #0:0(eng): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, smpte170m), 64x64, 186 kb/s, 60 fps, 60 tbr, 60k tbn, 120 tbc (default)
   Metadata:
     creation_time   : 2020-07-28T17:25:58.000000Z
     handler_name    : Alias Data Handler
     encoder         : AVC Coding
   Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 32000 Hz, mono, fltp, 158 kb/s (default)
   Metadata:
     creation_time   : 2020-07-28T17:25:58.000000Z
     handler_name    : Alias Data Handler

I HAVE been able to use other videos successfully, so that;s what's making me wonder if it's the video itself.

This is a bug in imageio, it fails to read last frame sometime. You could try to run ffmpeg -I video.mp4 -o out.mp4. Alternatively cover the reading procedure with try catch and save all frames exept last in to some list.

This is a bug in imageio, it fails to read last frame sometime. You could try to run ffmpeg -i video.mp4 out.mp4. Alternatively cover the reading procedure with try catch and save all frames exept last in to some list.

Ah okay. I should have also said I'm doing this strictly with the colab model. How would I go about the alt. method? I'm studying coding but I'm not too good at it myself yet haha.

In colab you should use '!'.
So execute '! ffmpeg -i video.mp4 out.mp4' in some cell. But change the path to the input video.

Okay, so it seemed to have ran. Do I just run the "Load driving video and source image" cell now? Tried to and I got the same result, I may be missing something.

Yes change the path to output from ffmpeg.

You can also replace reading of driving with this
    reader = imageio.get_reader(opt.driving_video)
    fps = reader.get_meta_data()['fps']
    driving_video = []
    try:
        for im in reader:
            driving_video.append(im)
    except RuntimeError:
        pass
    reader.close()

Sorry, I'm super slow! Would I replace this code driving_video = imageio.mimread('/content/gdrive/My Drive/first-order-motion-model/04.mp4') with the one you just posted?

Yes.

Okay, then I did do it right. Says this now after putting my video's path in between the brackets:
     10 source_image = imageio.imread('/content/gdrive/My Drive/first-order-motion-model/nickpfp.jpg')
---> 11 reader = imageio.get_reader(opt.driving_video)
     12 driving_video = ['/content/gdrive/My Drive/first-order-motion-model/04.mp4']
     13 try:

NameError: name 'opt' is not defined

In line 11 you should replace with the path to your driving video.

Feel like we're almost there. New set of errors.
AttributeError                            Traceback (most recent call last)
<ipython-input-3-2edab7cb756d> in <module>()
     21
     22 source_image = resize(source_image, (256, 256))[..., :3]
---> 23 driving_video = [resize(frame, (256, 256))[..., :3] for frame in driving_video]
     24
     25 def display(source, driving, generated=None):

1 frames
/usr/local/lib/python3.6/dist-packages/skimage/transform/_warps.py in resize(image, output_shape, order, mode, cval, clip, preserve_range, anti_aliasing, anti_aliasing_sigma)
     89     output_shape = tuple(output_shape)
     90     output_ndim = len(output_shape)
---> 91     input_shape = image.shape
     92     if output_ndim > image.ndim:
     93         # append dimensions to input_shape

AttributeError: 'str' object has no attribute 'shape'

Hmm, no you should replace argument of a function get_reader. get_reader('/...')

Again, sorry if I am slow when it comes to this, but the error has now changed.
AttributeError                            Traceback (most recent call last)
<ipython-input-5-f720c248a959> in <module>()
      9
     10 source_image = imageio.imread('/content/gdrive/My Drive/first-order-motion-model/nickpfp.jpg')
---> 11 reader = imageio.get_reader. get_reader('/content/gdrive/My Drive/first-order-motion-model/04.mp4')
     12 driving_video = ['/content/gdrive/My Drive/first-order-motion-model/damedamesource.mp4']
     13 try:

AttributeError: 'function' object has no attribute 'get_reader'

We'll get there!

Get_reader 2 times.

@AliaksandrSiarohin I run the command ffmpeg -i input.mp4 output.mp4. Still get the error couldnot read frame 1051 when running python crop-video.py --inp output.mp4.Could you tell me how to solve this error?Thanks.


[Enhancement] refactor and optimize iceberg connector on fe [stage 4]

What type of PR is this：

[ ] BugFix
[ ] Feature
[ ] Enhancement
[ ] Refactor
[ ] UT
[ ] Doc
[ ] Tool

Which issues of this PR fixes ：

Fixes #
https://github.com/StarRocks/starrocks/issues/18560
Problem Summary(Required) ：

add IcebergStatisticProvider in the IcebergMetdata.
remove getColumnStatisics on iceberg table during visiting join reorder. it can reduce iceberg planfiles once.
Adjust part of interface
IcebergTableStatisticCalculator will be removed in the next pr

Checklist:

[ ] I have added test cases for my bug fix or my new feature
[ ] This pr will affect users' behaviors
[ ] This pr needs user documentation (for new or modified features or behaviors)

[ ] I have added documentation for my new feature or new function

Bugfix cherry-pick branch check:

[ ] I have checked the version labels which the pr will be auto backported to target branch

[ ] 3.0
[ ] 2.5
[ ] 2.4
[ ] 2.3

run starrocks_admit_test

run starrocks_admit_test

run starrocks_fe_unittest

@Mergifyio backport branch-3.0


EOS development tools

When will you make the current version work?

EOS.IO Contract Development Tool is managed from the https://github.com/EOSIO/eosio.cdt repository.


xen-dom-mgmt: add ext memory regions stage 1 map and unmap

Add stage 1 mapping after stage 2 mapping, i.e. after add to phys map. We need it because memory mapping of ext regions has been deleted from xen regions drivers and we need to perform mapping right after add to phys map.
Related pull for zephyr: https://github.com/xen-troops/zephyr/pull/56.

added ack tag

+1
Acked-by: Oleksii Moisieiev<EMAIL_ADDRESS>

added acks


Possible syncing regression

I have noticed a possible syncing regression comparing master as of yesterday afternoon to tags/1.8.0.

node
blocks/second

tags/1.8.0
~450

master
~360

@CodiePP mentioned he's seen a performance regression in the nodes allocation rate that could be the cause:

I observed that the node's performance went down from 4 GB/s allocation rate (Release-1.8) to about 800 MB/s (Pre-Release-1.9) in EKG. This indicates that the node is not exploiting the computer's resources as aggressively as it did before. And thus, this will lead to reduced sync performance.

However, Buildkite has a nightly sync test which has not seen a drop in blocks/second averaging at ~450. One difference is that I've been testing staging and the Buildkite job is testing mainnet - I have a node running now to check this.

newest runs on commit 873a03098750d122a57c0fa17600f8de3d380281 show that with default RTS (which is using one process) results in transfer rate of 909 blocks/s and with RTS N2 (using two processes): 926 blocks/s.
that seems to be fine. :ok:

926 vs 909 is very disappointing. I would have expected a performance gain given that chainsync is CPU bound .

@ArturWieczorek  results:
Mar 26 20:07 00000.epoch
Mar 26 22:21 00181.epoch
Rate: ~486 bps
cardano-node: master latest
commit a3dcbd6107793f4072ba5bffbac530fdd4bbd615 HEAD -> master,
Merge: a94e789 4aa3f72
Author: iohk-bors[bot]<EMAIL_ADDRESS>Date:   Thu Mar 26 16:31:51 2020 +0000
Merge #728
728: Default dns relays r=disassembler a=disassembler

Looks like this issue was individual to my computer. I'll keep an eye out for it today but can close this issue.

How many times did you test this before opening the ticket? Just once or multiple times?


Package does not work with iOS

This package is only working with android. I have tried it simultaneously in both iOS and Android, it only displays in Android emulator/physical device.

Sorry, it works now. I do not know what happened but it is working now.


[Azure] Alternative Resources Cleanup

Hey team,
I'm having a hard time debugging IBM-Azure VPN connectivity due to Azure's plugin cleanup policy.
My team doesn't get privileges on the Azure subscription level, but rather each team gets ownership over an Azure resource group, hence creating/deleting resource groups isn't possible.
With that in mind, I can't terminate test resources efficiently, forced to delete resources one-by-one, in a specific order, waiting for child resources to delete before going forward with deleting their parent resource.
I'm not sure we can rely on future users/devs to:

Have full privileges over the entire subscription of their Azure account (to allow resource group creation/deletion).
Have a resource group for themselves. Test cleanup would delete other team member's resources.

I would appreciate if the Azure plugin could implement a cleanup function that strictly deletes Paraglider resources matching specified parameters, such as a namespace/region.
Thanks.

Discussed in standup today that I'll work on putting up code for tearing down each resource individually in Azure without deleting the resource group. We'll continue to brainstorm what's a better way to handle this (if there are any)


Allow custom settings of FlatButton or builder with no InkWell

There is no arguments to pass in the settings of FlatButton such as shape, border and elevation.
In addition, even if you use builder, the widget returned from the builder function is automatically wrapped with InkWell, preventing you from customising the handling of tap events.
I actually managed to make the ripple effect invisible by making splashColor and highlightColor transparent and wrap InkWell with another button, in an attempt to handle tap events on my own.
It achieved my desired look but with no more luck because there is no way of manually showing the picker dialog, as mentioned in #60.

+1 Those flutter apps which use Cupertino theme won't necessarily be using Material widgets, which is a requirement for InkWell.

Do you think that using a GestureDetector would be enough?

@imtoori
I don't think it is enough. Replacing InkWell with GestureDetector removes the ripple effect and makes it easier for developers to wrap it with a custom button, but it does not resolve the issue unless there is some way to call _showSelectionDialog() from the button.
Below are some ideas I've come up with, but there may be better solutions.

Adding the key argument to the constructor of CountryCodePicker so that methods in _CountryCodePickerState can be called from outside via the key passed in.
Adding a new argument like customBuilder to enable the widget returned from its function to be used as is without being wrapped with InkWell nor GestureDetector and to show the picker dialog from there.

With the last version I just did what it's written in your first point

Great! I was using v3.7 being unaware of the new version.

In that case, I'm fine personally with your idea of using GestureDetector although it does not seem like the best solution. Isn't it a breaking change for other developers who have been users since older versions?
It may be better to keep this issue open for a while to collect others' opinions/ideas.

Closing this
feel free to reopen it if you're still having issues


Implement linear solver using Kokkos data structures and LAPACK

This set of commits provides a wrapper for LAPACK's general solver using Kokkos::Views.
This would usually be just one commit, but many intermediate commits have be provided to demonstrate the TDD process used to arrive at this solution.
This code is not production ready.  It lacks guard rails to prevent using device memory or non-row-major matrices.  It also lacks size checking and error handling for in input system.  These should be added before merging into master to prevent segfault risk.

Thanks for adding the wrapper for LAPACK's general solver, @ddement. I will add the additional stuff necessary for this feature to be merged into main.


[RFC] Unfungle Triton Import Graph?

triton module imports are currently very circular; many modules import other modules while they are only partially initialized. The behavior of core.py, jit.py, and semantic.py are a particular example.
With some incremental work, I could unroll these modules into a strictly ordered graph; it could even be done without changing the appearance of the public API, introducing a graph of incremental declaration components, and re-exporting them in the appropriate modules to maintain compatibility.
this transformation would also help bring mypy scanning to triton

Yes I support that! I think it should be done inside of the triton-mlir branch though (unless it happens after the merge)

I've put some time into trying to take a stab at this on main; and the approach I've been pursuing is to unroll the entire lib into one very long module; and trying to get that module in a clean declaration order.
semantically, due to the construction order of python module imports, import graphs are forced to be equivalent to some ordered import stack; so as a general strategy, this is a good approach. specifically, triton has a lot of reflexive self-knowledge and meta-programming; and understanding where those points of reference are is complicated.
if I can get a clean single-module instance, or at least for everything that comes in with import triton; I can recover a satisfying declaration order, and that's a good starting point to plan a module heirarchy; which could be replayed (mechanically, not by merge tools) against the new target branch.

@ptillet @Jokeren re: the discussion about the utility of mypy
I, personally, am a strong proponent of full-mypy on all python projects.
It is a pain to move a project that isn't mypy-clean to a one that is; because complex codebases which weren't using mypy tend to use construction orders and type unions which don't have clean types, and work needs to be done to massage a codebase into compliance; not just adding type annotations, but in some places changing design decisions so that type annotations make sense.
A lot of the current code would be cleaner if constexpr (and possibly tensor) were generic classes with specialization types constexpr[int] is easy; but it's a harder pull for tensor, where you may want to also model polyhedral types, and I'm not sure python's up for that yet.
But, when a codebase is mypy-clean, you don't just get type checking, and you don't just get a lot of guardrails on code semantics; you also enable code indexing and completion and refactoring in strong IDEs (such as IntelliJ) which approach what they can do in Java.
The type annotations make the IDEs more powerful when working on the codebase, which in turn accelerates codebase development by cheapening refactors

I agree with all of that! Beyond type annotations, mypy will force us to follow good coding practices. This will also make code reviews easier.

Sounds good

I've got a flattend version up, as a first pass of the above strategy.

I've got a re-rolled version up for discussion:
https://github.com/openai/triton/pull/887
This is still not based upon the MLIR branch, but it sorts through the import order and demonstrates that mypy typing is tractable

Awesome! Thank you so much for this :) As I said in the PR, we should probably aim to do it first thing after triton-mlir is merged, but I'm super excited!

Here's the core spine of the order; I've omitted the __all__ statements, but they're important to get tools which import these libraries to perform well.
I did a lot trying to trackdown / squash mypy errors. I came to a few conclusions:

making JITFunction and constexpr generic was actually pretty easy.
clean mypy typing of the entire library is a reasonable goal. at present there are 28 outstanding errors.
the design of the dtype type heirarchy needs a little love; it's not intractable, but the changes need review and discussion.
the signature impact of parameters with type constexpr requires that unpacking them have type-support in the body of methods; but that can be made a free-op in jitted code by recognizing the unpacking function.

by pulling all non-impl methods out of the standard lib; the true core was reduced to about 3k LOC; and then the standard lib was able to be broken up into tractable submodules, mostly with their impl bodies co-located in the code.
I made no effort here to split the tests up; but that's an obvious next step in a real refactor, to align the tests with the sub-modules they test, to speed up iteration.
There are some packages (such as triton/runtime) that exist solely to maintain backwards compat with existing imports.
triton/__init__.py
from .utils import cdiv, next_power_of_2

from triton._C.libtriton.triton import ir

from .impl import (
    autotune,
    CompilationError,
    compile,
    CompiledKernel,
    Config,
    extern,
    heuristics,
    Heuristics,
    jit,
    JITFunction,
    KernelInterface,
    MockTensor,
    OutOfResources,
    reinterpret,
    TensorWrapper,
)

from . import language

from . import runtime
from . import testing
from . import ops

triton/impl/__init__.py
from .. import ir

from ..utils import MockTensor

from .base import TensorWrapper, reinterpret

# No @tr.jit() interface can be called until after .compiler is loaded;
# and .compiler depends upon the core stack.
from .jitlib import (
    extern,
    jit,
    JITFunction,
    KernelInterface,
)

# .compiler depends upon core.minimum and core.where
from .compiler import (
    CompilationError,
    compile,
    CompiledKernel,
    OutOfResources,
)

from .autotuner import (
    autotune,
    Config,
    heuristics,
    Heuristics,
)

triton/language/__init__.py
from ..impl.base import (
    _add,
    _and_,
    bfloat16,
    _binary_op_type_checking_impl,
    _bitcast,
    _bitwise_op_type_checking_impl,
    block_type,
    _bool_like,
    _broadcast_impl_shape,
    _broadcast_impl_shape,
    _broadcast_impl_value,
    _broadcast_impl_value,
    builtin,
    _cast,
    _check_ptr_type_impl,
    _computation_type_impl,
    constexpr,
    _constexpr_to_value,
    cvalue,
    dtype,
    _equal,
    _fdiv,
    float16,
    float32,
    float64,
    float8,
    _floordiv,
    _greater_equal,
    _greater_than,
    int1,
    int16,
    int32,
    int64,
    int8,
    _integer_promote_impl,
    _invert,
    ir,
    is_builtin,
    is_triton_tensor,
    _less_equal,
    _less_than,
    _lshr,
    _mod,
    _mul,
    _not_equal,
    _or_,
    pi32_t,
    pointer_type,
    reinterpret,
    _reshape,
    _shl,
    _sub,
    tensor,
    TensorWrapper,
    _to_tensor,
    _truediv,
    uint16,
    uint32,
    uint64,
    uint8,
    void,
    _where,
    _xor_,
)
from ..impl.core import (
    minimum,
    where,
)
from .meta import (
    _globaltimer,
    globaltimer,
    _clock,
    clock,
    debug_barrier,
    _program_id,
    program_id,
    _num_programs,
    num_programs,
    _multiple_of,
    multiple_of,
    _max_contiguous,
    max_contiguous,
)
from .constructors import (
    _arange,
    arange,
    _zeros,
    zeros,
    zeros_like,
    _cat,
    cat,
)
from .quantization import (
    _dequantize,
    dequantize,
)
from .broadcasting import (
    broadcast,
    broadcast_to,
)
from .transfer import (
    _load,
    load,
    _store,
    store,
)
from .structure import (
    reshape,
    ravel,
    swizzle2d,
)
from .matrix import (
    _dot,
    dot,
)
from .atomic import (
    _atomic_cas,
    atomic_cas,
    _atomic_xchg,
    atomic_xchg,
    _atomic_add,
    atomic_add,
    _atomic_max,
    atomic_max,
    _atomic_min,
    atomic_min,
    atomic_and,
    _atomic_or,
    atomic_or,
    _atomic_xor,
    atomic_xor,
)
from .math import (
    _umulhi,
    umulhi,
    fdiv,
    _exp,
    exp,
    _log,
    log,
    _cos,
    cos,
    _sin,
    sin,
    _sqrt,
    sqrt,
    abs,
    cdiv,
)
from .reductions import (
    _argmax,
    argmax,
    _argmin,
    argmin,
    _max,
    max,
    maximum,
    _min,
    min,
    _reduce_impl,
    _reduce_impl,
    sigmoid,
    softmax,
    _sum,
    sum,
    _xor_sum,
    _xor_sum,
    xor_sum,
)
from . import random
from .random import (
    pair_uniform_to_normal,
    philox,
    philox_impl,
    rand,
    rand4x,
    randint,
    randint4x,
    randn,
    randn4x,
    triton,
    uint32_to_uniform_float,
)
from . import libdevice

I've got an outstanding PR against triton-mlir which reorders the input graph. @ptillet has suggested that this is too much change to land before triton-mlir lands; so we're going to hold off on it.
That said, the core ideas are worth talking about:

extract the fundamental recursive core into one place
pull everything not needed by the recursive core into a stacked standard lib

this is intended to be enabling tech for threading mypy types through everything (since the definitions will now be visible for all the interfaces.
Additionally, I worked out how (in the other PR) to make the insides of @triton.builtin methods analyzable by mypy; with the small help of a cvalue(<constexpr>) special form handled by the complier.


updates in trackingNtuple for using in standalone tracking (e.g. mkFit or line segment tracking); ported from local devs in 10_4_0_patch1

I'm leaving this in a "Draft" stage until some minor validation.
Summary of changes relative to the upstream in TrackingNtuple

optional for simhits info:

can add OOT hits with includeOOT
can keep (secondary) electron simhits with keepEleSimHits
can save simhit momentum px,py,pz with saveSimHitsP3
can enable saving only the closest simhit based on significance sorting with simHitBySignificance

optional for seed details:

can save Cartesian 6x6 covariance with addSeedCartesianCov

added by default

bitmask of cluster masking used per iteration; configurable via clusterMasks
cluster charge per CM
cluster size
seed state parameters in global coordinates (x,y,z and px,py,pz)

config tools now have customiseTrackingNtupleHLT

Also, add TrackSimpleMerger which can concatenate a set of reco::Track collections.

now that the updated bin files confirm that the new ntuple works, I think that this PR can move on and be merged.
@makortel
this PR is mainly a rebase of developments in CMSSW_10_4_0_patch1_mkFit_X with code format added in the last commit.
please take a look and let me know if there are concerns to merge it

Looks ok at least for the purposes of this repo


Gateway Solution for (throttled) Networking

Opening this thread to discuss the goals for the upcoming Radius community grant related to researching solutions for a Bacalhau network gateway solution.
Goals:

Enable some portion of traffic ingress/egress traffic between the Bacalhau network and the open internet. This capability would unlock many workloads and use cases for Bacalhau.
Risk management of threats posed by open networking (e.g. botnet attacks).

Potential milestones:

Research existing efforts malicious content and malicious behavior by other PLN technologies (IPFS, Filecoin, etc.)
Research existing best practices among cloud providers to prevent use of their networks for botnet attacks (e.g. workload scanning, reputation, etc.).
Create a proof of concept for a Bacalhau network gateway based on the research. This prototype could be in the form of code (PR), architecture diagrams, high level solution design, etc.

Open Questions:

Which entity is best suited to determine which network traffic is approved and denied? PL, Bacalhau team, community moderation, etc.?
What are the mechanisms by such approval would occur? Eg. the Akash (though only 'Experimental') has a central authority issue IP Leases (https://docs.akash.network/other-resources/experimental/ip-leases) and all traffic goes through a gateway. Are there other approaches?
Are there benefits if the gateway solution is as decentralized, public, or trustless as the Filecoin network?

Lit Protocol would also get value from this type of solution for their own solution.

Closing this. Bacalhau has implemented a proxy networking solution: https://docs.bacalhau.org/next-steps/networking/


Fixes and Tweaks

This PR serves a number of functions:

Quality of Life: Add requirements.txt file for easier installation/testing
Quality of Life: Change default folder from "mBaratta96" to use the username of the local user
Quality of Life: Print help dialog when run with no args, as if -h were typed
Organization: Rename one of the get_data functions to display_data for clarity
Quality of Life: Added default values for config entries that support them
Bug Fix: Fixed HTML selector for Letterboxd filmId when adding to diary.
Quality of Life: Fixed/reworded some logging/output statements for clarity.

@mBaratta96 Let me know if you have any questions about any of the changes I made. I tried to lay them out clearly in small commits.

Hi there! Will review your commits next week. At the moment my days have been very full.
Nonetheless, thanks a lot for your interest and contirbution to the project!

No worries, and I apologize if there is a better way to submit changes in an easier-to-digest way. I have only just begun contributing to open source projects, and I don't necessarily know the etiquette. Let me know if you need anything from my end.
If you disagree with some of the "Quality of Life" changes, I am happy to revert any of them.
Your code here is awesome and very useful for some personal projects I have. I would love to see development continue regularly, and I would happy to contribute when I can.
P.S. I also have some future ideas for splitting up the CLI calls from the functions that interact with letterboxd, primarily so that you can supply payloads through other methods. I primarily use this code as a library and not as a CLI tool, and I think some small design decisions could make it more modular and usable from that angle.

@treysu This will surely make the project more usable to users besides me.
Thanks a lot for the contribution.
Unfortunately, my work schedule forbids me to dedicate as much time as I'd like to this project. So any suggestion is more than welcomed.


update to unicode 14.0

In Debian we have unicode-data updated to 14.0 and encountered some test errors.
This PR updates unicodedata to 14.0 and fixes the related tests.  Please review.

thanks! Hopefull we will also have the unicodedata2 backport module (on which fontTools.unicodedata depends) also updated to Unicode 14.0 soon https://github.com/fonttools/unicodedata2/issues/44


Is this normal?

Best.

The two node operators have blocked access from this webapp due to network issues. Try running the webapp locally by downloading the repo and opening index.html

when downloading the source and opening index.html my event log window is absolutely empty.
Best and thanks!

look at dependencies..  you have to download another zip

I made a release which includes all needed files: https://github.com/pRizz/iota-transaction-spammer-webapp/releases/download/1.0/iota-transaction-spammer-webapp.zip

Thanks! Working.


API to search through calls using matcher syntax

This is one of the two related issues that led me to submit #83.
I propose an API that applies a matcher (string|RegExp|function(url, opts)) to the whole list of calls, regardless of any configured routes or their names. I consider this behavior useful in composing assertions that aren't possible with calls(routeName) or called(routeName), such as:
// Assuming a new method: fetchMock.testCalls
fetchMock.mock('^http://example.com/');
fetch('http://example.com/?arg1=123').then(() => {
  // called() would return false for each of the following
  fetchMock.testCalls('http://example.com/?arg1=123'); // true
  fetchMock.testCalls('^http://example.com/?arg1='); // true
  fetchMock.testCalls(/arg1=\d+$/); // true
});

So basically, it would do what I had the impression called() and calls() should do, as described in #87.
#83 contains a proposed implementation in the form of callsMatching() and calledMatching() filterCalls() and testCalls().

Picking up from https://github.com/wheresrhys/fetch-mock/pull/83#issuecomment-209776377:

I don't particularly want to have two supported ways of checking for matched calls - that will add to the complexity of the api, and thus increase confusion when it's being used. So if your suggestion was adopted I see it being a major release

Could clearer and more distinct naming (e.g. filterCalls(), testCalls() as in the updated PR #83) help reduce confusion despite the larger API surface?

I'm afraid I'm against adding to the API unless this gets a few :+1:s

I've decided to close this - it's been a long time with no supporting comments. Thanks fro submitting though, and for highlighting the confusing nature of the docs


Rollerskate improvements

About the PR

This PR visually and statistically improves how Skates work.
Why / Balance

I didn't like how they worked.
Technical details

This increases the minimum default minimum speed by 3.0, and lowers the speed damage by 0.05. This also modifies one line of upstream code, to use TryParalyze instead of TryStun.
Media

[x] I have added screenshots/videos to this PR showcasing its changes ingame, or this PR does not require an ingame showcase

Changelog
:cl:

fix: Fixed fun!

Please give actual justification, not just “I don’t like it”. Why do the skates need to be faster and do less damage?
Also, you didn’t lower the damage by 0.05, you lowered it to 0.05, which I’m not a fan of. There should be consequences for flinging yourself into walls.

I don't think the skates should apply enough damage to send you into crit, unless you really try to, and with how sensitive the skates are for speed, I think it's a fair trade. As for the speed buff that's some random change I put in for no reason - if it's necessary I can revert it


⚠ Bofrost.de has degraded performance

In 609e35a, Bofrost.de (https://www.bofrost.de) experienced degraded performance:

HTTP code: 200
Response time: 722 ms

Resolved: Bofrost.de performance has improved in af64e7e.


Update marker denom regex to size 83

Description
Changes the default unrestricted denom size from 64 to 83.  This add the new size to the generated genesis file.
closes: #719

Before we can merge this PR, please make sure that all the following items have been
checked off. If any of the checklist items are not applicable, please leave them but
write a little note why.

[ ] Targeted PR against correct branch (see CONTRIBUTING.md)
[ ] Linked to Github issue with discussion and accepted design OR link to spec that describes this work.
[ ] Wrote unit and integration tests
[ ] Updated relevant documentation (docs/) or specification (x/<module>/spec/)
[ ] Added relevant godoc comments.
[ ] Added a relevant changelog entry to the Unreleased section in CHANGELOG.md
[ ] Re-reviewed Files changed in the Github PR explorer
[ ] Review Codecov Report in the comment section below once CI passes

Forcing this because the linter check is broken.


Build Category Routes

[x] GET all Categories

[x] GET by id

[x] POST/CREATE
/api/categories/

[x] PUTUPDATE
/api/categories/6

[x] DELETE
/api/categories/6

PR: #12


Appstudio update test-component-pac-tlpi

Pipelines as Code configuration proposal
To start the PipelineRun, add a new comment with content /ok-to-test
For more detailed information about running a PipelineRun, please refer to Pipelines as Code documentation Running the PipelineRun
To customize the proposed PipelineRuns after merge, please refer to Build Pipeline customization

Pipelines as Code CI/test-component-pac-tlpi-on-pull-request has successfully validated your commit.

StatusDurationName

✅ Succeeded
6 seconds
init

✅ Succeeded
15 seconds
clone-repository

✅ Succeeded
1 minute
build-container

✅ Succeeded
51 seconds
deprecated-base-image-check

✅ Succeeded
52 seconds
inspect-image

✅ Succeeded
4 minutes
clair-scan

✅ Succeeded
2 minutes
clamav-scan

✅ Succeeded
52 seconds
sbom-json-check

✅ Succeeded
27 seconds
label-check

✅ Succeeded
5 seconds
show-sbom

✅ Succeeded
8 seconds
show-summary

Pipelines as Code CI/test-component-pac-tlpi-on-pull-request has successfully validated your commit.

StatusDurationName

✅ Succeeded
10 seconds
init

✅ Succeeded
19 seconds
clone-repository

✅ Succeeded
27 seconds
build-container

✅ Succeeded
15 seconds
deprecated-base-image-check

✅ Succeeded
12 seconds
inspect-image

✅ Succeeded
11 seconds
clair-scan

✅ Succeeded
52 seconds
clamav-scan

✅ Succeeded
23 seconds
sbom-json-check

✅ Succeeded
11 seconds
label-check

✅ Succeeded
8 seconds
show-sbom

✅ Succeeded
7 seconds
show-summary


Let users have profiles with affiliations

This gives metadata that is useful to see traction

Related issue: #188. Maybe this is a duplicate?


Show notebook editor when opening the an ipynb again

For #8506

Codecov Report

Merging #8649 into master will increase coverage by <.01%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master    #8649      +/-   ##
==========================================
+ Coverage   59.11%   59.11%   +<.01%
==========================================
  Files         520      520
  Lines       23938    23938
  Branches     3870     3870
==========================================
+ Hits        14150    14152       +2
+ Misses       8869     8868       -1
+ Partials      919      918       -1

Impacted Files
Coverage Δ

...ascience/interactive-ipynb/nativeEditorProvider.ts
55.55% <100%> (+1.58%)
:arrow_up:

Continue to review full report at Codecov.

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


updated feature selection

Updated ML_classification.py to output multiclass scores, and the median/std_dev of per-class scores


'this' points to Window instead of directive object in 'link' function

Hi guys,
I'm trying to use TypeScript with AngularJS and I faced to some issues when I tried to use class for directive definition.
Inside 'link' function of directive, 'this' does not point to the current directive definition object. Instead, 'this' points to global 'Window'. So I can't fully use TypeScript classes with inheritance for directives, which may be very useful for code reuse.
What's the reason of such behavior?
Could this issue be fixed?
This plunker demonstrates the issue: http://plnkr.co/edit/lCH5zOUSHkLi0WQ7G4GX?p=preview .
Thanks.

Dupe of #8549
There's a PR https://github.com/angular/angular.js/pull/9306, but there were some reservations about performance, so we'll have to see about that.

Thanks @Narretz . Haven't found this issue. I think we can close this one as a duplicate.


CurrentDirectory doesn't work with shortcuts

Everything uses CurrentDirectory, but when people access the file via shortcuts, this fails.
It should either use the actual application directory, or write all files to appdata

Fixed in 3.1.7


JAMES-3756 - Update Delegate/get, DelegatedAccount/get - return DelegationId in response

Currently, the get method returns AccountId as an id of delegation in response.
=>
Update: use DelegationId, which is already (Same id as Delegate/Set method)

rebase master


Produce WASM JS bindings

leveraging the functionality provided by SSI SDK in JS/TS projects would be very helpful. We can produce JS bindings using syscall/js and compiling to WASM. I think it'd be awesome if we:

shipped the bindings as a consumable lib
included automated tests for said bindings that run in a headless browser
leveraged CI to automatically compile, package, and upload the bindings as an npm module

wondering if it makes most sense for the bindings to live in this repo or in a separate repo.

I did some tests around WASM today for personal understanding. WASM is SO cool! I love it. @mistermoe are there any big concerns around using WASM in production for this use case that needs to be brought to light?

Linking some stuff here on my research:

This is handled https://github.com/TBD54566975/ssi-sdk/tree/main/wasm


Gmail is having authentication problems. Some features may not work. Try  logging in  to fix the problem.

Gmail is having authentication problems. Some features may not work. Try  logging in  to fix the problem.
Screenshots (if appropriate):

Possible Solution
I think it is related to cookies
Your Environment
Mac OS Catalina

That happens if you're blocking cross-site cookies.

This happens due to an extension you are using. In my case, the extension was ModHeader which I use while working with rest API.
So, while using Gmail or other Google services, uncheck all 'Authorization token' in the ModHeader or other extension that you are using. See the attached picture to have a clear understanding.

This happens due to an extension you are using. In my case, the extension was ModHeader which I use while working with rest API.
So, while using Gmail or other Google services, uncheck all 'Authorization token' in the ModHeader or other extension that you are using. See the attached picture to have a clear understanding.


excel blade model fails to build

I am trying to use the ansys example with the excel blade example.
However, the shell_mesh_general command in the ansys_example will fail.

I think there is something wrong with the blade (excel) data being sent since most of the blade.geometry items appear to be  NoneType
exlname = 'blade'
blade.read_excel('example_data/'+exlname+'.xlsx')
log=setup_logging(exlname+'_ansys')
# create a shell model in ansys w/o adhesive
elementSize=0.4
mesh_data=shell_mesh_general(blade, forSolid=False, includeAdhesive=False, elementSize=elementSize)

Hi @mcMunich, please try running blade.update_blade() after blade.read_excel('example_data/'+exlname+'.xlsx'). This method should build the geometries that are missing as indicated by the error you shared. Really, this method should be called as part of the read_excel function, but it seems we left it out.

Something else went sideways with blade.update_blade()

I see, thanks for trying that. I was able to reproduce your issue. Unfortunately there is no easy fix. The main issue is that the read_excel function does not prepare the Blade object in the same way that read_yaml does, and it ends up producing an output that is incompatible with other parts of our code.
If you are really motivated to push this example through, you can manually update the attributes that are incompatible before running update_blade. For example running this code after read_excel should address the error you posted above, but there are more problems that come after that:
    # temp fix
    blade.definition.leband = [blade.definition.leband] * len(blade.definition.ispan)
    bladedefinition.teband = [blade.definition.teband] * len(blade.definition.ispan)

This is a notable bug, so I'll be sure to bring it to the attention of the more active maintainers.

Hello,
@mcMunich I was wondering if you managed to get the scripts to generate an Abaqus shell model using the excel data, as I am interested in using the NREL 5MW blade model from the excel?
Alternatively, @kbonney is there a .yaml file with the 61.5m blade data that you would be happy to share?
Many thanks

I don't know of a YAML for the 5MW blade, but @ecamare or @rclarke17 might.

Here's a yaml file for the NREL 5MW, no promises it will work with PyNuMAD though, it hasn't been tested.
https://github.com/WISDEM/WISDEM/blob/master/examples/02_reference_turbines/nrel5mw.yaml

Hi, @rclarke17 that's super, thanks very much.

Hi @rclarke17 ,
Unfortunately, the yaml file for the NREL 5MW does not work with PyNuMAD. I'm currently working my way though the debugging but I was wondering if you know of anyone who has already been through this and has a working ABAQUS shell model of the NREL 5MW turbine? Or, if there is another option to get this model up and running in ABAQUS?
Many thanks

嗨，不幸的是，NREL 5MW 的 yaml 文件无法与 PyNuMAD 一起使用。我目前正在进行调试，但我想知道您是否知道有人已经经历过这种情况并且拥有 NREL 5MW 涡轮机的工作 ABAQUS 壳体模型？或者，是否有其他选项可以在 ABAQUS 中启动并运行此模型？
非常感谢

I also need the abaqus input file for NREL5MW blades. Have you received it or make it later?


Feature Request: PalletColor component

I was working on the design of a component that represents the color palette of my style guide

It would be good to have a component as such inside the package docz, I would like to know if I could contribute with it

I would also want this. This makes it possible to implement a Design System with Docz, instead of just a component library.
Something like this:
https://docs.catalog.style/specimens
https://www.catalog.style/try

I think this will be useful too. Its quite common to showcase a color palette. I wonder if this could be implemented as a plugin instead of adding it to the module?


KM : segfault in km_fs_event_find when running longhaul test

running long haul test with KKM and found this crash.
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Core was generated by `server -port=15213 -v=false -f=mmap                        '.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  km_fs_event_find (fd=17, file=0x110d9f0, vcpu=<optimized out>) at km_filesys.c:1616
1616          if (event->fd == fd) {
[Current thread is 1 (Thread 0x7f76091d8640 (LWP 8911))]

there are multiple threads trying to delete event separate fd's but on the same file.
(gdb) bt #0  km_fs_event_find (fd=17, file=0x110d9f0, vcpu=<optimized out>) at km_filesys.c:1616 #1  km_fs_event_del (vcpu=<optimized out>, event=0x107fd413b9cc, guestfd=17, file=0x110d9f0) at km_filesys.c:1644 #2  km_fs_epoll_ctl (vcpu=<optimized out>, epfd=<optimized out>, op=2, fd=17, event=0x107fd413b9cc) at km_filesys.c:1681 #3  0x000000000041f452 in epoll_ctl_hcall (vcpu=<optimized out>, hc=<optimized out>, arg=0x107fd413b968) at km_hcalls.c:1230 #4  0x0000000000438f5e in hypercall (hc_ret=<synthetic pointer>, vcpu=0x7f75e8002410) at km_vcpu_run.c:450 #5  km_vcpu_run (vcpu=0x7f75e8002410) at km_vcpu_run.c:640 #6  0x000000000046c04f in start_thread () #7  0x0000000000501160 in clone3 () (gdb) thread 3 [Switching to thread 3 (Thread 0x7f7609250640 (LWP 8905))] #0  km_fs_event_find (fd=15, file=0x110d9f0, vcpu=<optimized out>) at km_filesys.c:1616 1616          if (event->fd == fd) { (gdb) bt #0  km_fs_event_find (fd=15, file=0x110d9f0, vcpu=<optimized out>) at km_filesys.c:1616 #1  km_fs_event_del (vcpu=<optimized out>, event=0x107fd471f9cc, guestfd=15, file=0x110d9f0) at km_filesys.c:1644 #2  km_fs_epoll_ctl (vcpu=<optimized out>, epfd=<optimized out>, op=2, fd=15, event=0x107fd471f9cc) at km_filesys.c:1681 #3  0x000000000041f452 in epoll_ctl_hcall (vcpu=<optimized out>, hc=<optimized out>, arg=0x107fd471f968) at km_hcalls.c:1230 #4  0x0000000000438f5e in hypercall (hc_ret=<synthetic pointer>, vcpu=0x7f7604031440) at km_vcpu_run.c:450 #5  km_vcpu_run (vcpu=0x7f7604031440) at km_vcpu_run.c:640 #6  0x000000000046c04f in start_thread () #7  0x0000000000501160 in clone3 () (gdb) thread 24 [Switching to thread 24 (Thread 0x7f7609174640 (LWP 8940))] #0  km_fs_event_find (fd=14, file=0x110d9f0, vcpu=<optimized out>) at km_filesys.c:1616 1616          if (event->fd == fd) { (gdb) bt #0  km_fs_event_find (fd=14, file=0x110d9f0, vcpu=<optimized out>) at km_filesys.c:1616 #1  km_fs_event_del (vcpu=<optimized out>, event=0x107fd471d9cc, guestfd=14, file=0x110d9f0) at km_filesys.c:1644 #2  km_fs_epoll_ctl (vcpu=<optimized out>, epfd=<optimized out>, op=2, fd=14, event=0x107fd471d9cc) at km_filesys.c:1681 #3  0x000000000041f452 in epoll_ctl_hcall (vcpu=<optimized out>, hc=<optimized out>, arg=0x107fd471d968) at km_hcalls.c:1230 #4  0x0000000000438f5e in hypercall (hc_ret=<synthetic pointer>, vcpu=0x7f75e8003cc0) at km_vcpu_run.c:450 #5  km_vcpu_run (vcpu=0x7f75e8003cc0) at km_vcpu_run.c:640 #6  0x000000000046c04f in start_thread () #7  0x0000000000501160 in clone3 () (gdb)

km.output.tar.gz

Probably need to replace TAILQ_FOREACH with TAILQ_FOREACH_SAFE for event list walks in km_filsys.c.


How to quit the cage?

I've run cage bash in a TTY and got a black screen with cursor.
How to get back to terminal? :D
I am using this build https://gitlab.archlinux.org/archlinux/packaging/packages/cage/-/blob/main/PKGBUILD?ref_type=heads and Alt+Esc doesn't work.

You can use ESC key if Cage is built with DEBUG flag.
Otherwise, Cage will also terminate when the primary client quits.
One more way to exit, if you have started Cage with -s option allowing VT switching, switch to an other virtual terminal typically using CTRL+ALT+F<1..7> and kill Cage from there.

Otherwise, Cage will also terminate when the primary client quits.

It doesn't seem that Bash is receiving any input. Otherwise Ctrl+D would make it quit.
I logged in remotely through SSH and killed the bash process.

It doesn't seem that Bash is receiving any input. Otherwise Ctrl+D would make it quit.

This is an (other) issue.

Oh, I understand something (just) now. Why are you launching Bash with Cage? Bash is not supposed to be a Wayland client, is even not a graphical terminal emulator. Consequently, it is totally expected to not receive input. If you want to launch a Wayland graphical terminal emulator, use weston-terminal, foot or Alacritty for example. There is a ton of other choices too.

Why are you launching Bash with Cage?

I though that if I run bash in case, all other processes run from this bash will get "caged" automatically, so I don't have to prefix each one (https://github.com/cage-kiosk/cage/issues/374).

Consequently, it is totally expected to not receive input

I don't understand why it doesn't receive output, and why it is expected. I expect it to receive output, because I used to operate it even with a broken screen.

Once started, Cage receives input and send them to the focused Wayland client. Bash is not a Wayland client. As I said it above, try a graphical terminal emulator instead e.g. foot which will run Bash as a shell command interpreter if you want. It will receive input and will quit with CTRL+D. Do not confuse shell and terminal.

@joggee-fr does cage know if the started process is a Wayland client? Where does it send input if there is no client at all?

Cage does not know about started child process to be a Wayland / X11 client or not and it does not care.
If no client has registered to receive input, Cage does not send input to anyone. Simple.

I'm going to close this because it's not actionable.


Bug with partial wildcards

> mm.isMatch('../test-fixtures/add.txt', '../test-fixtures/**/a*.txt')
true
> mm.isMatch('../test-fixtures/add.txt', '../test-*/**/a*.txt')
false
> mm.isMatch('../test-fixtures/subdir/subsub/a.txt', '../test-*/**/a*.txt')
false
> mm.isMatch('../test-fixtures/subdir/subsub/ab.txt', '../test-*/**/a*.txt')
true

Realized this is the cause of a few newly failing tests in chokidar

Looks like it's specific to the globstar occurring right after the partial (tailing) wildard - the */** part.
> mm.makeRe('../test-*/**/a*.txt')
/^(?:..\/test-(?!\.)(?=.)[^\/]*?\/.*\/a(?!\.)(?=.)[^\/]*?\.txt)$/
> mm.makeRe('../test-fixtures/**/a*.txt')
/^(?:(?:..\/test-fixtures\/a(?!\.)(?=.)[^\/]*?\.txt|..\/test-fixtures\/.*\/a(?!\.)(?=.)[^\/]*?\.txt))$/
> mm.makeRe('../test-*tures/**/a*.txt')
/^(?:(?:..\/test-(?!\.)(?=.)[^\/]*?tures\/a(?!\.)(?=.)[^\/]*?\.txt|..\/test-(?!\.)(?=.)[^\/]*?tures\/.*\/a(?!\.)(?=.)[^\/]*?\.txt))$/
> mm.isMatch('../test-fixtures/add.txt', '../test-*/**/a*.txt')
false
> mm.isMatch('../test-fixtures/add.txt', '../test-*tures/**/a*.txt')
true

Been digging into this. Focusing on this line atm https://github.com/jonschlinkert/micromatch/blob/c007899ae1e288310cc0c43d5d57faf6d7ec671a/lib/expand.js#L138
Appears to be where the globstar handling fails, probably because of the \w

Ok it's actually the \ws down in https://github.com/jonschlinkert/micromatch/blob/c007899ae1e288310cc0c43d5d57faf6d7ec671a/lib/expand.js#L284-L294
Replacing them with [^\/] fixes the issue. Now to try it against the rest of the test suite and write a new test...

The fix described in the last comment did not fully fix the issue. There seems to be a secondary problem with partial wildcard matches after a globstar as well.
> mm.isMatch('a/b.txt', '**/*.txt')
true
> mm.isMatch('a/b.txt', '**/b.txt')
true
> mm.isMatch('a/b.txt', '**/b*.txt')
false
> mm.isMatch('a/bc.txt', '**/b*.txt')
true

sorry I've been offline all day. just reading over this now

Was just beginning to prepare a branch and PR

did you figure out which regex was causing it?

crazy that this pattern wouldn't be anywhere in the unit tests...

I have figured out half of the issue so far - with the optionalGlobstar function. Although it points to an assumption that may need to be adjusted elsewhere too regarding using \w to indicate path part boundaries

Ok, I can get it the rest of the way. Do you want to do the pr still?

Sorry you had to deal with this.

Yeah I'll get the PR started in a minute, but on a branch here so you'll be able to keep pushing commits to it and finish up.

Sorry you had to deal with this

No worries. It was an opportunity to get acquainted with how this thing works

ah, wait, this is the one that's causing the issue, right?
> mm.isMatch('a/b.txt', '**/b*.txt')
false

If so, I can fix that, but it was intentional, since that's how the specification is written, but it's not how minimatch works. I like how minimatch works for this - so we can change it

Yeah I'll get the PR started in a minute, but on a branch here so you'll be able to keep pushing commits to it and finish up.

great, thanks!

I'm looking for that spec, it was either wildmatch (used by git) or bash. no matter though since we're changing it

That's the part I hadn't solved yet.
This is a separate problem as well (which I have solved)
mm.isMatch('a/b-c/z.js', 'a/b-*/**/z.js')

ok, great.

@es128 would you mind pushing up some failing unit tests that describe all the failing patterns? Maybe just create a section right here and name it something like issue #15?

ha, well you might have already done it. and that's a better place too probably

Yeah I tried to isolate them to expose the observed issues (and potential related ones).
But I was mainly focusing on the use case that I started with - I suspect there are more holes that can be poked. Would take a close look at any regex that uses \w

looks like they're all they same issue.

Would take a close look at any regex that uses \w

If it makes sense to change all boundaries to use slashes instead of word characters. I'll try to get this one fixed then we can go from there and decide where else we want to depart from spec

btw, one thing that might not be immediately obvious in expand.js is how I'm using glob.repl versus replace. they're they same except replace also does escaping on the patterns so we don't continue to replace ? and * characters throughout parsing

That did confuse me briefly when I was monitoring the value of pattern instead of glob.pattern

quick glance, there are only four places using \w.

one is for drive letters \w:
two are dotfile related

but the other we might be able to get rid of

did you notice the track option?

it might not be documented...

Sorry AFK at this point. But no, didn't notice it
On Thu, Mar 26, 2015 at 5:36 PM Jon Schlinkert<EMAIL_ADDRESS>wrote:

it might not be documented...
—
Reply to this email directly or view it on GitHub
https://github.com/jonschlinkert/micromatch/issues/15#issuecomment-86727780
.

no prob. I'm on it

I have a fix. I'll be pushing it up in a bit after testing more

I'm still working on the fix. It's not the regex or getting to work that's a problem, it's the spec and inconsistencies with minimatch (or rather, minimatch's inconsistencies), and I want to make sure I'm not missing something before I push this up.  In the meantime, I pushed up a patch with your fix.

meant to just comment....

Alright. The publish wasn't necessary - the patch I had committed wasn't enough to make the chokidar tests pass. But no worries, looking forward to your the fixes you're polishing up.

k, thx. just wanted to show this, here is one of the many examples of inconsistencies with minimatch:
var minimatch = require('minimatch');
console.log(minimatch('foo/baz/bar', 'foo/**/**/bar'))
//=> true
console.log(minimatch.makeRe('foo/**/**/bar').test('foo/baz/bar'))
//=> false

This, and gaps in the spec, are what made this a pita in the beginning

for the heck of it, here's another one for you. Run the following:
var minimatch = require('minimatch');
var micromatch = require('./');

console.log('micromatch:')
console.log(micromatch.makeRe('**/z*.js'))
console.log(micromatch.isMatch('z.js', '**/z*.js'))
console.log(micromatch.makeRe('**/z*.js').test('z.js'))

console.log()
console.log('----------')
console.log()

console.log('minimatch:')
console.log(minimatch.makeRe('**/z*.js'))
console.log(minimatch('z.js', '**/z*.js'))
console.log(minimatch.makeRe('**/z*.js').test('z.js'))

Outputs:
micromatch:
/^(?:(^|.+\/)(?=.)z[^/]*?\.js)$/
true
true

----------

minimatch:
/^(?:(?:(?!(?:\/|^)\.).)*?\/(?=.)z[^/]*?\.js)$/
true
false

console.log(micromatch.makeRe('**/z*.js').test('z.js'))

damn, this is dramatically bad.

good grief, please lighten up the tone a little. that doesn't help. Try posting a proposed solution instead to encourage discussion and collaboration to solve the problem.
None of these patterns is too difficult to implement. of course we'll have some things that didn't get tested:

including some seemingly obvious ones at first.  but at the end of the day:
we would have to make 150 patches like the one we did this past week for normalizing file paths to make micromatch as slow as minimatch.
the code here isn't perfect (yet) but it passes more tests than minimatch
the code is far more maintainable than minimatch, lending itself to be more reliable over the long run

why focus on a snippet of code?

The code in the quote is modified from what was posted earlier in the thread. That version evaluates as false, which makes sense. The original version started with a globstar, and it evaluates as true (console.log(micromatch.makeRe('**/z*.js').test('z.js'))). Both cases currently behave exactly as I'd expect them to.

yeah I was just going to say, I just tested it and the code produces what I would expect:
console.log(micromatch.makeRe('*/z.js').test('z.js'))
//=> false

@tunnckoCore is there a reason that should evaluate to true?

is there a reason that should evaluate to true?

no, exactly what I mean. it should stay false.

there's no logic to be true and also here
 mm.isMatch('a/b-c/z.js', 'a/b-*/**/z.js').should.be.true;

that result is correct. /**/ may also be evaluated as /

and /**/**/**/**/**/**/**/**/**/**/**/**/**/** may also be evaluate as /

@tunnckoCore is it possible that you misread the example above where minimatch fails, thinking it was this library?

this one? no.
idk, sorry for the tone around, but Im just not okey with the added tests and think that they should be false.

okey if we back to this comment I understand that the problem was that this one
> mm.isMatch('a/b.txt', '**/b*.txt')
false

returns false?

Seems like you simply disagree with how globstar is meant to work.
Except this one already existed before and you didn't take issue with it.
The glob spec and minimatch both also agree that globstar means 0 or more subdirs, not 1 or more

Except this one already existed before and you didn't take issue with it.

yea I notice that.

the only one that looks wrong to me is console.log(micromatch.isMatch('z.js', '**/z*.js')); I can't see how that would be correct.

That's right.
mm.isMatch('a/b.txt', '**/b*.txt')

should be true.

but that's different since the path to match against has a slash. technically you should have to define matchBase to only match on the basename

hmmm

matchBase to only match on the basename

exactly

can't see how that would be correct.

Im not saying that.

wait a sec
> mm.isMatch('z.js', '**/z*.js')
true

looks right to me. The globstar is 0 or more subdirs, and the wildcard adjoined with a (non-separator) char is 0 or more chars.

should be true.

I dont know why it should be, but this is wrong behavior for me.

just... intuition?
the globstar part or the zero-width wildcard part - which seems wrong to you?

the thing that makes this seemingly straightforward is that there are use cases where you are both correct. but it's not so "exact". the specification differs based on accompanying patterns.

like this. the following result is correct. I think we would all agree with this, no?
console.log(micromatch.isMatch('z.js', '**/*.js'));
//=> true

hm, I dont thinks so. But want to mention that I didn't read the spec. Im not spec specialist.

Puts this comment in a very different light

I didn't memorize the spec(s) yet, but I did read them. Bash 4.3 and wildmatch (used by git). They follow the same specifications for most cases, but there are holes in both, and differences.
How about if I come back later with some spec details so that if we continue this discussion we can do so around some hard data?

http://man7.org/linux/man-pages/man7/glob.7.html is far from comprehensive - but it is very clear about a wildcard * character being able to match 0 (empty string) or more characters

its simple.. on bash 4.1
GNU bash, version 4.1.2(1)-release (i386-redhat-linux-gnu)

i did some tests on the file system
just created following structure
a/b.cs
a/k.php
a/z.js
d.js
e.php
z.js

and this ls -al **/*.js matches only a/z.js

so this one
console.log(micromatch.isMatch('z.js', '**/*.js'));
//=> true

should be false

bash 4.1

This follows Bash 4.3.
See:

https://github.com/jonschlinkert/micromatch/blob/master/test/bash.js#L20 (this is complete, except for unit tests that had bash variables or patterns that are irrelevant in node. minimatch does not pass all of these, micromatch does)
https://github.com/jonschlinkert/micromatch/blob/master/test/braces.js#L65 (even though the attribution comment is on line 65, virtually all of those tests are derived from wildmatch)

add more subdirs: a/b/c/d/e.js
does it match?

should be false

You're making falsey assumptions about the spec.

and don't point out the extglob wildmatch tests lol, that's not even officially supported here yet (nor by  minimatch), but this still passes most of them.

Here's another reference explaining how globstars are supposed to work, which is consistent with how micromatch currently behaves:
http://www.gnu.org/software/bash/manual/bashref.html#The-Shopt-Builtin-1

that's what I was just reading over, thx.

does it match?

actually nope, keep matching only a/z.js

eeeexactly

If the pattern is followed by a ‘/’, only directories and subdirectories match.

This is the part of the spec I was focused on with example above. Minimatch does this, and micromatch does as well. However, like every specification, there are exceptions to this rule. It doesn't apply to every pattern in the specification.

okay, here is micromatch vs minimatch for all of the patterns in the section we've been discussing.
Both libraries yield the same result for all of the following:

console.log(micromatch.isMatch('a/b/c/z.js', '*.js'));
//=> false
console.log(micromatch.isMatch('a/b/z.js', '*.js'));
//=> false
console.log(micromatch.isMatch('a/z.js', '*.js'));
//=> false
console.log(micromatch.isMatch('a/z.js', 'a/b/**/*.js'));
//=> false
console.log(micromatch.isMatch('z.js', 'a/b/**/*.js'));
//=> false

console.log(micromatch.isMatch('a/b-c/d/e/z.js', 'a/b-*/**/z.js'));
//=> true
console.log(micromatch.isMatch('a/b-c/z.js', 'a/b-*/**/z.js'));
//=> true
console.log(micromatch.isMatch('a/b/c/d/e/z.js', 'a/b/**/*.js'));
//=> true
console.log(micromatch.isMatch('a/b/c/d/z.js', 'a/b/**/*.js'));
//=> true
console.log(micromatch.isMatch('a/b/c/z.js', '**/*.js'));
//=> true
console.log(micromatch.isMatch('a/b/c/z.js', 'a/b/**/*.js'));
//=> true
console.log(micromatch.isMatch('a/b/c/z.js', 'a/b/c**/*.js'));
//=> true
console.log(micromatch.isMatch('a/b/c/z.js', 'a/b/c/**/*.js'));
//=> true
console.log(micromatch.isMatch('a/b/z.js', '**/*.js'));
//=> true
console.log(micromatch.isMatch('a/b/z.js', 'a/b/**/*.js'));
//=> true
console.log(micromatch.isMatch('a/z.js', '**/*.js'));
//=> true
console.log(micromatch.isMatch('z.js', '**/*.js'));
//=> true
console.log(micromatch.isMatch('z.js', '**/z*'));
//=> true
console.log(micromatch.isMatch('z.js', '*.js'));
//=> true

However, results differ on the following:
// minimatch
console.log(minimatch.makeRe('**/z*.js').test('z.js'));
//=> false
console.log(minimatch('z.js', '**/z*.js'));
//=> true

// micromatch
console.log(micromatch.isMatch('z.js', '**/z*.js'));
//=> false
console.log(micromatch.makeRe('**/z*.js').test('z.js'));
//=> false

I interpret that to mean the difference between path/to/** and path/to/**/.
I don't see that as at odds with path/to/**/*.js matching path/to/this.js

I don't see that as at odds with path/to/**/*.js matching path/to/this.js

no you're right. that would be a match.

oh interesting, turns out github comments drops a * when there are two in a quote

yeah I just saw that too lol. I had to edit and add backticks

Why are you getting different results?
> mm.isMatch('z.js', '**/z*.js')
true
> mm.makeRe('**/z*.js').test('z.js')
true

not with micromatch. minimatch produces a different answer between the two methods

you show false above? just a copypasta mistake maybe?

oh, wait. I think I missed the point. yeah one sec

wanted to double check. yes you're correct. I just didn't update the result in the comments before I pasted. seems important to do lol

ok, corrected

I'm thinking we're in good shape for now. so far, everything seems to be consistent with the spec.

ok yeah... we have beat this to death
for every example that's been discussed, micromatch's current behavior is correct, and the tests are appropriate for keeping it that way
@tunnckoCore I hope satisfactory proof has been provided for you. If not, I'm sorry. But I, for one, am done here.

haha, okey thanks guys. I dont like the results, but okey.

For reference, if you want a pattern that says one or more subdirs (instead of 0 or more), use /*/**

but .. doh. I cant understand why this is true (as shown in examples)
console.log(micromatch.isMatch('z.js', '**/z*.js'));
//=> true

and this is false
console.log(micromatch.isMatch('a/z.js', 'a/z*.js'));
//=> false

ah you're right on this one, you've spotted a bug. Second example should be true

doh, noooo, opposite :D

first is absolutely wrong for me. and think it, if it have ability to talk it would say "a want dir and something starting with z"

nope, sorry - that's just is not how it's supposed to be. If you want that it would be */z*.js. Or if you want any number (1 or more) of subdirs it's */**/z*.js

If you want that it would be /z.js

what?

"a want dir and something starting with z"

to express that as a glob: */z*
or if you meant a javascript file */z*.js
one star instead of two. ** means zero or more subdirs. This is very well established at this point.

so one star means one or more? lol

one star means zero or more characters. In the context of being the only thing between path separators, it means exactly one dir.

var micromatch = require('micromatch');

var paths = [
  'd.js',
  'e.php',
  'z.js',
  'a/b.cs',
  'a/k.php',
  'a/z.js',
  'a/b/h.js',
  'a/b/c/z.js'
];

console.log(micromatch.isMatch('z.js', '**/z*.js'));
//=> true
console.log(micromatch.isMatch('a/z.js', 'a/z*.js'));
//=> false

console.log(micromatch(paths, '**/z*.js'));
//=> [ 'z.js', 'a/z.js', 'a/b/c/z.js' ]
console.log(micromatch(paths, '*/z*.js'));
//=> []
console.log(micromatch(paths, '*/*.js'));
//=> [ 'a/z.js' ]
console.log(micromatch(paths, '**/*.js'));
//=> [ 'd.js', 'z.js', 'a/z.js', 'a/b/h.js', 'a/b/c/z.js' ]
console.log(micromatch(paths, '*z*.js'));
//=> [ 'z.js' ]
console.log(micromatch(paths, '**z*.js'));
//=> [ 'z.js', 'a/z.js', 'a/b/c/z.js' ]

You've identified one bug and represented it twice in these examples:
console.log(micromatch.isMatch('a/z.js', 'a/z*.js'));
//=> should be true
console.log(micromatch(paths, '*/z*.js'));
//=> should be [ 'a/z.js' ]

And then potentially one more with that last example, although it's a more academic case that wouldn't be found among anyone's legitimate use cases.

and multimatch
// multimatch

console.log(multimatch(paths, '**/z*.js'));
//=> [ 'z.js', 'a/z.js', 'a/b/c/z.js' ]
console.log(multimatch(paths, '*/z*.js'));
//=> [ 'a/z.js' ]
console.log(multimatch(paths, '*/*.js'));
//=> [ 'a/z.js' ]
console.log(multimatch(paths, '**/*.js'));
//=> [ 'd.js', 'z.js', 'a/z.js', 'a/b/h.js', 'a/b/c/z.js' ]
console.log(multimatch(paths, '*z*.js'));
//=> [ 'z.js' ]
console.log(multimatch(paths, '**z*.js'));
//=> [ 'z.js' ]

@tunnckoCore can I just ask why you're doing this? you said you don't use this, but you're trying your best to find bugs - which IMO is fine b/c it helps us, but I don't get the impression you're pointing out flaws to try to be helpful here.

b/c I will use it, but it looks wrong to me.
nevermind

Yeah we're just going to have to move on.
@tunnckoCore you've made your point that you disagree with how globstar is intended to work as agreed upon in every spec and implementation we can find, but that's how it is (and it isn't an arbitrary decision by @jonschlinkert nor I that you can talk us out of). I'd suggest you either adjust your understanding or just refrain from using globstar functionality in your glob patterns.
Your (constructive) feedback continues to be welcome (at least as far as I'm concerned), and thank you for helping to uncover two new bugs.


Make doctests failable

Redo of #12 on a branch instead of a fork.
P.S. You should have perms on this repo now, @pjz.

!m @pjz


how to bind the data to the controller

Please read documentation first and be more specific in your question.


Link to docs for uploading WM ext public key to Fynbos or Gatehub wallets

Update the Guides section of the WM docs with a step-by-step guide for uploading the WM extension's public key to each of the compatible digital wallets:

Fynbos
Gatehub

The goals is to have a "learn more" link on the UI of the extension to the docs.

To do: ask Tech. Writing team

Created ticket https://github.com/WICG/webmonetization/issues/459 and assigned to the Tech Writing team.

Melissa aims to start after 2 Aug (if we're confident that no further UI changes are planned), and is comfortable that the doc update will be ready on/before the 13 Aug beta release.

The Tech. Writing team has been working on the docs.
We will sync-up on the docs release in conjunction with the public beta release.

@tselit is this ticket related https://github.com/interledger/web-monetization-extension/issues/676 ? Can we combine the 2?


Is it possible to specify the concurrency level of produce requests with idempotent disabled?

Not currently, what's the use case for this? I had this as an option for a brief period of time, but I removed the option before a minor release.
This is the commit that introduced the option: 229f9da2906dce9813c4ad9d93385712fd95bd01
This is the commit that removed the option: d1ba10360f457b4007cb2910bc23fc37a07b05cd

This is for cases that require high throughput and can tolerate data duplication/loss to some extend.
But seems that higher level of producer concurrency (than default 1) is not very useful according to the comment of your commit (https://github.com/twmb/franz-go/commit/d1ba10360f457b4007cb2910bc23fc37a07b05cd), could you elaborate on that? It's a bit counterintuitive TBH.

More than 1 can be beneficial, but more than 5 likely isn't, so the thought I have here is you might as well enable idempotency while reaping the benefit of 5 concurrent requests.
Note Jay Kreps's comment in this thread (his first comment): https://issues.apache.org/jira/browse/KAFKA-5494,
as well as the max.in.flight analysis in this wiki page: https://cwiki.apache.org/confluence/display/KAFKA/An+analysis+of+the+impact+of+max.in.flight.requests.per.connection+and+acks+on+Producer+performance
The main takeaway is that more than 2 in flight may actually not be too beneficial, but part of me wonders if that's due to inefficiencies within the Java implementation. This Go client actually limits at 4 in flight due with idempotency to a race around the upgrading from 1 to "5", but I could do some things to make it 5 as well.
What do you think about the above analysis & issue discussion? Is it still worth adding an option to allow more than 1 for non-idempotent production? (I'm somewhat hoping to push everything towards idempotency)

The analysis seems solid. Thanks for the detailed explanation 👍
I think it makes sense to enable idempotency by default if it's a strict win in terms of performance (assume performance overhead of the cluster is trivial here).
Minor suggestions:

Update doc/comment of DisableIdempotentWrite to reflect the performance implications.
Update default concurrency level to 2 when idempotent disabled to increase throughput.

Idempotency isn't necessarily a strict win in terms of performance, but there is no loss. Kafka 3.0 is enabling idempotency by default as well: https://cwiki.apache.org/confluence/display/KAFKA/KIP-679%3A+Producer+will+enable+the+strongest+delivery+guarantee+by+default
I can update the doc on DisableIdempotentWrite, however I'm not sure about defaulting to 2 when idempotency is disabled -- this may result in more out of order records than people expect.

this may result in more out of order records than people expect.

You are right. Then maybe it's better to leave the options to the users? Since they should know what they are doing (different tradeoffs in different scenarios) if they decide to stay away from the default configuration.

Reintroduced here https://github.com/twmb/franz-go/commit/cd53e97174e9a9d82f2832019935921d19ac8d8d
with a more tedious name and more docs indicating it shouldn't really be used,
this will be in v1.4.

Sorry about the delay -- v1.4 should be this week. I think there's one more thing to add to it. I'll reopen this for now so that it can be properly closed when v1.4 is released (now that I have a v1.4 tracking issue).

The option now exists in v1.4


Cannot open / launch / debug multiple subprojects in same workspace

VSCode Version: Code - Insiders 1.17.0-insider (f7962f0682a76516df51de4856f8ccc5d8ad578a, 2017-09-20T05:24:33.599Z)
OS Version: Windows_NT x64 10.0.15063
Extensions:

Extension
Author (truncated)
Version

better-toml
bun
0.3.1

debugger-for-chrome
msj
3.3.0

vscode-docker
Pet
0.0.18

perforce
sle
2.2.1

tslint-tmp-multiroot-compat
sqs
0.17.0

autoimport
ste
1.2.2

Trying to launch with attached debugger via Code.
Not sure if it is even possible/feasible to so do from a single window - didn't bother trying.  Attempting to open two vscode windows for side by side debugging of two submodules/executables of a larger project.
launch and debug parameters for both are stored in the workspace's launch.cfg
Opening a new vscode window, then trying to reopen the same workspace results in the original workspace being pushed to front, leaving the new vscode in the 'no-open-workspace' state

Steps to Reproduce:
1.Open workspace
2.Open new window
3. open the same workspace (via recent or direct to file)

Reproduces without extensions: Yes

Please use our multi folder support. Debugging is supported for that case
More about multi folder vscode you can find out by googling around

Investigating further, I do see the multi-executable debugging process.  I don't think this is related to the multi-workspace view, though.  This technically does what I need, but could behave much better.   Ie: output for all processes are routed to the same debug console window, rather than operating like the output or terminal windows, with the ability to swap between channels.
Alternately, I would like to have multiple windows of the same workspace (folder view or workspace file) open at the same time.   Current workaround is to load once in vscode and once in insiders.  Various other tabbed-window applications (browsers, text editors, IDEs) provide this functionality.  Perhaps even with an 'ask to use existing window' dialog
workbench.editor.revealIfOpen seems vaguely relevant, but is set to false.

fwiw- after working with it today, debugging multiple processes in the same window just has too many issues to actually be usable.

@vrachels thanks for providing feeback. If you could distill those "too many issues" into seperate nice reproducable issues and file them on GitHub that would be great. Since that would help us improve that experience. Thanks


Make the nav logo link

Purpose

The purpose of this PR is to fix #355
Goals

Adding a correct link to the a href attribute in navbar.html
Approach

I put the suitable link to the navbar.html/a href attribute.
Screenshots

Preview Link
https://yoshitha-sack.github.io/sack-site/
Checklist

[x] This PR doesn't commit any keys, passwords, tokens, usernames, or other secrets.
[ ] I have read and understood the development best practices guidelines
[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[ ] I have commented my code, particularly in hard-to-understand areas
[x] I have made corresponding changes to the documentation

Related PRs

Test environment

Learning

@Piumal1999

Done now is it ok


Generated Duplicate License Comment In Bundle

In webpack 4, I notice duplicate license comments in the bundle. I think it will be nice to show only once instead of multiple times. And also this makes the bundle size bigger.
Picture below is jQuery.

Picture below is CKEditor 5 Custom Build.

Bug in uglify-es, can't be fixed, please switch to https://github.com/webpack-contrib/terser-webpack-plugin

Bug in uglify-es, can't be fixed

That's incorrect. The uglify/terser API provides full control over which comments are emitted.
$ cat dedupe_comments.js
var minify = require("uglify-es").minify;
var code = "/*A*/ /*A*/ foo(); /*B*/ /*A*/ /*B*/ bar(); /*C*/ /*A*/ /*C*/ baz(); /*D*/ /*B*/";
var m = Object(null);
var result = minify(code, {
    output: {
        comments: function(ignore, token) {
            var comment = token.value;
            if (comment == null || m[comment]) return false;
            m[comment] = 1;
            return true;
        }
    }
});
console.log("original:\n" + code);
console.log("\nminified:\n" + result.code);

$ node dedupe_comments.js
original:
/*A*/ /*A*/ foo(); /*B*/ /*A*/ /*B*/ bar(); /*C*/ /*A*/ /*C*/ baz(); /*D*/ /*B*/

minified:
/*A*/foo(),/*B*/bar(),/*C*/baz();/*D*/

This is just an example. An actual comment deduper may want to ignore leading and trailing whitespace.

please switch to https://github.com/webpack-contrib/terser-webpack-plugin

By all means, but be aware that the comment handling code in terser is the same as uglify-es.

@taroee can you create minimum reproducible test repo?

Should be fixed in terser and uglify plugin, PR already exists and will be merged in near future, thanks

@evilebottnawi would you mind referencing the PRs so we could follow up ? Thank you


Question: Possibilities with local state.

I've finally learned enough FUNCUI to get working what I wanted.

The text parsing error in my current example does not have to be stored in the global state store. It is local to the textbox view and is reset if the the outer global state changes. So we can think of it as a temporary local program that gets a job done and then is discarded.
Some pre-comments.  A Redux<'a> at it's most basic is an object with Get and Set members. It is a merging of state and dispatch. When you call Set a message is dispatched to update the data that this redux points to. With that understanding we can look at the example.
The example demonstrates the capability of a new subclass of HostControl called LocalStateControl. I took the code from LazyView and added the ability for the view to have it's own local state with a lifetime not greater than when a difference is detected in the incoming outer state.
The original code is at
https://github.com/bradphelan/FUNCUI.Samples/blob/master/src/Examples/ValidatingTextBoxApp/Main.fs
namespace BGS

open Avalonia.FuncUI.DSL
open XTargets.Elmish
open System
open Avalonia.Controls
open Avalonia.Layout
open FSharpx
open Avalonia
open Avalonia.FuncUI.Types

module Data =

    // Create a simple model with two int fields
    type Item = {
        value0: int
        value1: int
    } with
        // Provide lenses for focusing on seperate fields
        static member value0' = (fun o->o.value0),(fun v o -> {o with value0 = v})
        static member value1' = (fun o->o.value1),(fun v o -> {o with value1 = v})

        // Provide an initializer
        static member init = { value0 = 0; value1 = 1 }

module ItemView =

    // the view recieves a `Redux` or a pointer to the data it needs to
    // render and update. The `Redux` object has Get and Set methods.
    // Calling `Set` fires the dispatcher with a message that knows
    // how to do the update on the root data.
    let view (item:Redux<Data.Item>) =

        // Get a redux for each sub property by using the lens combinators
        let value0:Redux<int> = (item >-> Data.Item.value0')
        let value1:Redux<int> = (item >-> Data.Item.value1')

        // Generate a form field for a specific property
        let inline formField label (value:Redux<int>)  =
            StackPanel.create [
                StackPanel.orientation Orientation.Horizontal
                StackPanel.children [

                    TextBlock.create [
                        TextBlock.text label
                        TextBlock.width 150.0
                    ]

                    LocalStateView.create [

                        // Set state so that the patch algorithm knows to rerender if the value changes
                        LocalStateView.state value.Get

                        // Set the view function for rendering. The view function should
                        // take 1 parameter being a Redux<'a> when 'a : equality. In this
                        // case we want the errHandler to be our local state and we
                        // want `string option` though it could be almost anything we want
                        LocalStateView.viewFunc ( fun (errHandler:Redux<string option>) ->
                            TextBox.create [
                                // Render the current value for the text
                                TextBox.text (string value.Get)
                                // Convert the Redux<int> to Redux<string> via a two way value converter.
                                // The setter of a Redux<string option> is passed to collect any parsing
                                // errors. Notice that `errHandler` is the local state that is passed
                                // into the view. It doesn't not propagate out of this view. It will
                                // always be reset to the default value if the state propery is updated
                                let stringValue:Redux<string> = value.Convert ValueConverters.StringToInt32 errHandler.Set

                                // Bind the Set and Get methods of the stringValue to the TextBox. See bindText
                                yield! stringValue |> TextBox.bindText

                                // Collect the current parse errors and store them in the errors field
                                // of the textbox
                                let parseErrors =
                                    errHandler.Get
                                    |> Option.toArray
                                    |> Seq.cast<obj>
                                TextBox.errors parseErrors

                                TextBox.width 150.0
                            ] :> IView

                        )
                    ]

                ]
            ]

        StackPanel.create [
            StackPanel.orientation Orientation.Vertical
            StackPanel.children [
                formField "Value 0" value0
                formField "Value 1" value1
            ]
        ]

Yeah, there should be something like this.

I think this is somewhat related to the #68 prototype @JaggerJo recently it might be worth checking @bradphelan 😁

@bradphelan this is (beyond a gazillion other things) finally possible after this PR https://github.com/fsprojects/Avalonia.FuncUI/pull/179 is merged!


Support for third-party terminal applications

I'd like to see an option to support using non-system native terminal applications (such as Termius) instead of Terminal when launching connections to VMs from the GUI.
I can open a local terminal window in Termius and then I can 'ssh orb' from there to the default VM as a workaround, but it would be nice to be able to double-click on a VM from the GUI list and connect using my preferred terminal application.

Third-party terminals are already used by OrbStack if they support the standard scheme of opening .sh files to run scripts.

Can confirm, I can double click VMs and it opens Warp, not the default terminal. Same applies to the debug shell for containers.

Probably related to #1509 since the use of third-party terminals has stopped working for some.


File events are not working

VSCode Version: 1.20.0
OS Version: macOS 10.13.3

Steps to Reproduce:

Make a change in a file in the repo and save.
Check the 'Changes' pane of the Source Control, the changes are not listed
Hit the Synchronize Changes for the repo
Changes would appear

This started to manifest itself after updating to January 2018 release.

I am seeing the same behaviour.

It seems that file events aren't working.
What is your workspace configuration? You just opened a folder with Code?
If you make file system changes outside of Code (eg delete a file), does Code's explorer update its state accordingly?

Thank for the reply.
1- No! I have created and saved a Code workspace and have multiple folders in it.
2- No! Code does not realize filesystem changes made outside of its environment unless I manually refresh the workspace (from 'Explorer' pane)

Update:
I rebooted my computer and the the problem was fixed. I cannot confirm whether or not it was the system reboot or Code being restarted that fixed the problem, but I can confirm that the fix came before updating to the latest release (1.20.1).


Allow translating the "x of y" in the grid's footer

The grid's footer contains the text "1 - x of y" indicating the position of datasets on the current page.
For l10n purposes, it would be good if that text could be translated.

Hello @tobbi
I have planned feature for support translations of static texts. I will focus on it in very near future


Split up codebase into multiple repos

I would like to use the Types on the Client too.

Suggesting spaceapi_types as the name.

This is a follow-up of #26.

As we're mostly finished with initial development now, we could indeed split up the codebase into separate repos that are published on crates.io.
The process to update something in the spaceapi module would then be:

Create a PR to the spaceapi crate
Merge the PR
Prepare a release
Update the version number in Cargo.toml of the server implementation
Release and deploy new version.

A bit more complex, but should allow us to work on the separate parts in parallel.
My suggestion for the crate and repo names:

spaceapi-types
spaceapi-server
spaceapi-coredump (not published on crates.io)

For the release, I'd set the version everywhere to 0.1.0, symbolizing the first (not yet stabilized) release.
@rnestler what do you think of this?

Also, people like @dns2utf8 can use the spaceapi-types crate to deserialize the api response.

I wouldn't call it spaceapi-types but just spaceapi-rs or something the like. Because its not only the types but also serialisation/de-serialisation code.

In that case just spaceapi, if it's a package on crates.io it's obvious that it's written in Rust.

Whats the convention in the rust community for repo names vs crate names? I had the impression that lots of github repo had the -rs suffix but the crates hadn't

We could do that. But do you think it adds any value?

I think there are a lot of spaceapi repos on github which have nothing to do with rust.

Alright:

spaceapi / spaceapi-rs
spaceapi-server / spaceapi-server-rs
spaceapi-coredump-rs

We could also call the last repo coredump-status instead.

All in favor?

:+1:

Great. We first need to close #71, #72, #73 though.

Wohoo! First crate is live.
https://crates.io/crates/spaceapi
https://github.com/coredump-ch/spaceapi-rs

Awesome! :smile: :sparkles:

Thanks :+1:

Should I start with the split of spaceapi-server-rs? @dbrgn could you give me some pointers on how to do it?

@rnestler I already started with that yesterday. What would help more would be to do review #77 and to take a look at #55.

Btw, this is how I did it: https://help.github.com/articles/splitting-a-subfolder-out-into-a-new-repository/

Wohoo!
https://crates.io/crates/spaceapi-server
https://github.com/coredump-ch/spaceapi-server-rs

@dbrgn There is an issue with the link to the documentation on crates.io

The documentation is at spaceapi-server/spaceapi_server/index.html but the link on crates.io points to spaceapi-server/spaceapi-server/index.html

And on https://crates.io/crates/spaceapi there is no documentation link at all.

Hm, as far as I know there's no way to update crate information after it has been published.
Should we simply fix and publish 0.1.1 for both?

I think the crates.io link is correct, since the crate is named spaceapi-server. But the documentation seems to be generated at the wrong place.

No, the package is called spaceapi-server but the crate is called spaceapi_server. It was just a mistake on my side.
I'll republish both.

So the remaining thing is the rename of this repo. Proposals:

status
coredump-status
spaceapi-status
coredump-spaceapi-status
spaceapi-coredump
All of the above with a 'rs' suffix

I'm for status :)

spaceapi-server update is released. https://crates.io/crates/spaceapi-server


haskell-language-server: Use hackage version and cleanup

This is my alternative to #111603.
\cc @GuillaumeDesforges @Lucus16
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
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 nixpkgs-review --run "nixpkgs-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)
[ ] Ensured that relevant documentation is up to date
[x] Fits CONTRIBUTING.md.


Linux: No such file or directory: 'baserom.us.z64'

i do have baserom.us.z64 at /sm64, yet i get this error

Do you still need help?

you put it in the wrong directory, not root, in the cloned directory


Add a local database table for saving trip data

We need a table for storing all bike trip related data and another one for logging.
Since we do not care about realtime changes for now, should we use the vanilla sqlite database helper or an ORM?
We might need realtime changes in the future so I will go with Room database.

I will try to mimic <key: String, value:Any> pair kind of storage with sqlite; an idea I got from another project. This helps to reduce the number of fields for each type of data in a table. This is experimental though.
The construct goes like this:
// Kotlin
interface LocalStore{
  fun put(key: String, value: Any)
  fun <T: Any> get(key: String, clazz: KClass<T>) : T
}

The value or T should be an object that is serializable with either Gson or Kotlin Serialization.

I will try to mimic <key: String, value:Any> pair kind of storage with sqlite; an idea I got from another project. This helps to reduce the number of fields for each type of data in a table. This is experimental though.
The construct goes like this:
// Kotlin
interface LocalStore{
  fun put(key: String, value: Any)
  fun <T: Any> get(key: String, clazz: KClass<T>) : T
}

The value or T should be an object that is serializable with either Gson or Kotlin Serialization.