PPQ  installtion error: TypeError: Descriptors cannot be created directly. If this call came from a _pb2.py file, your generated code is out of date and must be regenerated with protoc >= 3.19.0.

Hi there,
As a beginner learning about quantization, I encountered an error related to protobuf while installing PPQ. I resolved it by downgrading protobuf using the command pip install protobuf==3.20.*. I'm curious to know if there are any implicit consequences of completing the installation in this way. Here is the detailed error information:
(ppq) jarvis@zephyrus:~/Projects/ppq$ python setup.py install
/home/jarvis/Projects/ppq/ppq/__init__.py:10: UserWarning: You are importing ppq within its own root folder (/home/jarvis/Projects/ppq).
  warnings.warn(message.format(os.getcwd()))

      ____  ____  __   ____                    __              __
     / __ \/ __ \/ /  / __ \__  ______ _____  / /_____  ____  / /
    / /_/ / /_/ / /  / / / / / / / __ `/ __ \/ __/ __ \/ __ \/ /
   / ____/ ____/ /__/ /_/ / /_/ / /_/ / / / / /_/ /_/ / /_/ / /
  /_/   /_/   /_____\___\_\__,_/\__,_/_/ /_/\__/\____/\____/_/

Traceback (most recent call last):
  File "setup.py", line 2, in <module>
    from ppq.core import PPQ_CONFIG
  File "/home/jarvis/Projects/ppq/ppq/__init__.py", line 13, in <module>
    from ppq.api.setting import (ActivationQuantizationSetting, DispatchingTable,
  File "/home/jarvis/Projects/ppq/ppq/api/__init__.py", line 1, in <module>
    from ppq.lib import (register_calibration_observer, register_network_exporter,
  File "/home/jarvis/Projects/ppq/ppq/lib/__init__.py", line 44, in <module>
    from .extension import (register_calibration_observer,
  File "/home/jarvis/Projects/ppq/ppq/lib/extension.py", line 7, in <module>
    from .common import __EXPORTERS__, __PARSERS__, __QUANTIZER_COLLECTION__
  File "/home/jarvis/Projects/ppq/ppq/lib/common.py", line 2, in <module>
    from ppq.parser import (AscendExporter, CaffeExporter, CaffeParser,
  File "/home/jarvis/Projects/ppq/ppq/parser/__init__.py", line 4, in <module>
    from .caffe_exporter import (CaffeExporter, PPLDSPCaffeExporter,
  File "/home/jarvis/Projects/ppq/ppq/parser/caffe_exporter.py", line 15, in <module>
    from .caffe import ppl_caffe_pb2
  File "/home/jarvis/Projects/ppq/ppq/parser/caffe/ppl_caffe_pb2.py", line 31, in <module>
    _descriptor.EnumValueDescriptor(
  File "/home/jarvis/miniconda3/envs/ppq/lib/python3.8/site-packages/google/protobuf/descriptor.py", line 789, in __new__
    _message.Message._CheckCalledFromGeneratedFile()
TypeError: Descriptors cannot be created directly.
If this call came from a _pb2.py file, your generated code is out of date and must be regenerated with protoc >= 3.19.0.
If you cannot immediately regenerate your protos, some other possible workarounds are:
 1. Downgrade the protobuf package to 3.20.x or lower.
 2. Set PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python (but this will use pure-Python parsing and will be much slower).

More information: https://developers.google.com/protocol-buffers/docs/news/2022-05-06#python-updates

I would like to understand if there might be any unintended side effects or results from using the downgrade approach in this situation. Thank you for your assistance!

出现上述问题的原因是PPQ在过去支持过很多公司内部的 caffe 模型，这些 caffe 模型历史久远，它们使用 protobuf3 进行序列化。
因此 PPQ 的 caffe_exporter 需要引用 protobuf3。
解决问题的方法很简单，您注意到报错位于
File "/home/jarvis/Projects/ppq/ppq/parser/caffe_exporter.py", line 15, in
from .caffe import ppl_caffe_pb2
请将其直接修改成
try:
    from .caffe import ppl_caffe_pb2
except Exception as e:
    pass

上述修改将直接屏蔽掉 protobuf3 的引用，它只在导出 caffe model 时起作用，在下一个 ppq 的版本中我们也将如此更新。

修改后任然报错

出现上述问题的原因是PPQ在过去支持过很多公司内部的 caffe 模型，这些 caffe 模型历史久远，它们使用 protobuf3 进行序列化。 因此 PPQ 的 caffe_exporter 需要引用 protobuf3。
解决问题的方法很简单，您注意到报错位于 File "/home/jarvis/Projects/ppq/ppq/parser/caffe_exporter.py", line 15, in from .caffe import ppl_caffe_pb2
请将其直接修改成
try:
    from .caffe import ppl_caffe_pb2
except Exception as e:
    pass

上述修改将直接屏蔽掉 protobuf3 的引用，它只在导出 caffe model 时起作用，在下一个 ppq 的版本中我们也将如此更新。

you need a lower vesion of onnx.
it works for me pip install onnx==1.13.0


Cannot read properties of undefined (reading 'style') bug for touch scroll zone

Expected behavior and actual behavior.

Steps to reproduce the problem.
To reproduce the error, go to Scroll to a Cell example in the doc and try dragging the touch scroll zone instead of just clicking it.

Yikes! That's unfortunate — I don't have a touch device, would you by any chance be able to include a stack trace?


PubSubClient Issues (and fixes)

Couple of comments from someone who has just recently been able to get this client to work with an ESP32. Perhaps a README update might be helpful for others?
I ran into 2 issues which were resolved by PubSubClient fixes...

In the README for Google Cloud IoT JWT, it says to comment out line 266 of the PubSubClient.cpp. That line is now actually line 272; might be better to say which code needs to be commented out

I was receiving a very frustrating error in my device info in IOT Core - "mqtt: SERVER: The connection was closed because MQTT keep-alive check failed.". I updated the MQTT_KEEPALIVE in PubSubClient.h, however that didn't help. It turns out the non-intuitive root cause was that my MQTT payload was too big... updating the MQTT_MAX_PACKET_SIZE from 128 to 256 solved the problem.

Thank you for the errata.  I'll try and update the docs and library soon.

This should be fixed now, I'll be releasing a new version soon.


not support springmvc [server.servlet.context-path]

Please answer these questions before submitting your issue.

Why do you submit this issue?
[ ] Bug

Bug

Which version of SkyWalking, OS and JRE?
7.0.x
What happen?

because skywalking override getRequestURL method by recursive annotaion, not support springmvc configration param [server.servlet.context-path], cause skywalking-oap search endpoint question；
if request return before controller method, like web filter,springboot interceptor，it will has the different endpoint。
public class RequestMappingMethodInterceptor extends AbstractMethodInterceptor {
    @Override
    public String getRequestURL(Method method) {
        return ParsePathUtil.recursiveParseMethodAnnotaion(method, m -> {
            String requestURL = null;
            RequestMapping methodRequestMapping = AnnotationUtils.getAnnotation(m, RequestMapping.class);
            if (methodRequestMapping != null) {
                if (methodRequestMapping.value().length > 0) {
                    requestURL = methodRequestMapping.value()[0];
                } else if (methodRequestMapping.path().length > 0) {
                    requestURL = methodRequestMapping.path()[0];
                }
            }
            return requestURL;
        });
    }
}

     if (Config.Plugin.SpringMVC.USE_QUALIFIED_NAME_AS_ENDPOINT_NAME) {
            operationName = MethodUtil.generateOperationName(method);
        } else {
            EnhanceRequireObjectCache pathMappingCache = (EnhanceRequireObjectCache) objInst.getSkyWalkingDynamicField();
            String requestURL = pathMappingCache.findPathMapping(method);
            if (requestURL == null) {
                requestURL = getRequestURL(method);
                pathMappingCache.addPathMapping(method, requestURL);
                requestURL = getAcceptedMethodTypes(method) + pathMappingCache.findPathMapping(method);
            }
            operationName = requestURL;
        }

I would like to work on this issue!! Is there a chat forum where we can discuss??

@vgtom Welcome. I also noticed you have found the slack room. So, the mail list is the most official discussion in the Apache, if you just need quick discussion, slack and github issue are both fine. :)

is it possible to have a quick hangout/webex/zoom session to explain the code structure?

@vgtom Usually we don't have such a session, because it could overload me easily. If you have any questions, feel free to ask me here or on the slack/mail list.

@vgtom If you have subscribed to our dev mail list, I just send the invitation about that, we have a bi-weekly online meeting tomorrow night 0830 PM UTC+8 TZ. If you have any question, welcome to join. There are many discussion there in Mandarin, due to many of our users are, but feel free to use English, I will be there.

@wu-sheng ...ok i will try to join the meeting tomorrow at  0830 PM UTC+8 TZ...but i just started here and would have been nice if someone cud have guided me on the code structure or some videos perhaps...

i have read the source code of Skwalking  for a while and i have made some comments on that,may be i can help you ,

I have the same confuse. How to change the context path of skywalking-ui?

I have the same confuse. How to change the context path of skywalking-ui?

Off topic.


need a C++ equiv for mraa_get_default_i2c_bus

This was implemented by commit 1015beec4705f, so closing this one.


⚠ Bofrost.es has degraded performance

In 347b7c6, Bofrost.es (https://www.bofrost.es) experienced degraded performance:

HTTP code: 200
Response time: 1710 ms

Resolved: Bofrost.es performance has improved in 3a1b17d after 13 minutes.


Both randomizers use forward slashes, which don't work on Windows

Paths on Windows use backward slashes, not forward ones. This results in the resource randomizer working only partially and the data randomizer not working at all.

Windows is not picky on slashes. I don't know about Windows 10(not an autist, sorry), but in Windows 7 it is so.

Well, I just checked. Under Windows 10, the randomizer doesn't recognize paths with forward slashes in them and, as a result, simply treats the folders as empty.
Here is a "result" of me running the Datapack Randomizer on Win10 without any commandline arguments. (I tested it by changing the slashes to escaped backslashes, and it worked just fine.)
random_data.zip

working on a patch rn

Hopefully fixed by https://github.com/noellekiq/minecraft-randomiser/commit/b44dc7ad879fd9d0ff30249d41ad1a502c891614 and https://github.com/noellekiq/minecraft-randomiser/commit/f4d1966cf82249a03ea744b4049272e4d695f9cb, if it's still broke then something else is wrong


feat: Update verifier version in GHA installer

This is part of the release tests in https://github.com/slsa-framework/slsa-verifier/blob/main/RELEASE.md#dry-run to verify that the Action installer works.
A follow up PR will be sent prior to release to update to v2.5.0

@kpk47 Can you please verify the hash used in this PR using the same process as what's described in https://github.com/slsa-framework/slsa-verifier/pull/748?
For audibility, I would like to keep a record that we've looked at them

I checked the digests. LGTM

Thanks. Lets wait overnight to validate that e2e tests pass. Then I'll update the release and mark it as latest release.


Update how-to-create-test-certificates.md

I have updated the verbiage of the article for certificate creation and usage on Windows for more clarity.

@neerajks77 : Thanks for your contribution! The author(s) have been notified to review your proposed change.

@neerajks77 : Thanks for your contribution! The author(s) have been notified to review your proposed change.

Thank you
#sign-off

@ktoliver : Thanks for your contribution! The author(s) have been notified to review your proposed change.

@ktoliver : Thanks for your contribution! The author(s) have been notified to review your proposed change.


Fixed MDM WMI Bridge Provider link

Corrected broken link for MDM WMI Bridge Provider
Old Link: https://msdnstage.redmond.corp.microsoft.com/en-us/library/windows/desktop/dn905224(v=vs.85).aspx
New Link (Proposed): https://msdn.microsoft.com/library/windows/hardware/dn905224

Looks good. Go ahead and approve.


[Question] position stream's events are discrete

Explanation:
I have implemented a slider in my application to control the position of an audio file being played by the media player. As the media plays, the slider's value changes to reflect the current position in the audio file. However, I am encountering an issue where the slider position does not always reach the maximum value, which corresponds to the total duration of the audio file.
This behavior is inconsistent and prevents the slider from accurately representing the audio's progress. I have tried multiple audio files and the issue persists. I am seeking assistance in resolving this problem or any suggestions on what might be causing the position to not reach the maximum value of the slider.
Code:
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:media_kit/media_kit.dart';

// Declare necessary providers and states here

class _AudioPlayerControler extends StatefulWidget {
  @override
  State<StatefulWidget> createState() => _AudioPlayerControlerState();
}

class _AudioPlayerControlerState extends State<_AudioPlayerControler> {
  Player player = Player();
  bool seeking = false;

  List<StreamSubscription> _subscriptions = [];

  @override
  void initState() {
    super.initState();

    player.open(
      Playlist([
        Media(
          // Provide the path to the audio file here
        ),
      ]),
      play: false,
    );

    _subscriptions.addAll([
      player.streams.position.listen((event) {
        if (!seeking) {
          // Update position state here
          final duration = // Get the total duration
          double percentage =
              (event.inMilliseconds / duration.inMilliseconds) * 100;
          print(
              "Position: ${event.inMilliseconds}, Duration: ${duration.inMilliseconds}, Percentage: $percentage");
        }
      }),
      // Other subscriptions
    ]);
  }

  @override
  void dispose() {
    super.dispose();
    player.dispose();

    for (final sub in _subscriptions) {
      sub.cancel();
    }
  }

  @override
  Widget build(BuildContext context) {
    final position = // Get the position state
    final duration = // Get the duration state

    return Row(
      children: [
        IconButton(
          onPressed: () {
            // Play or pause logic
          },
          icon: // Use appropriate icon
        ),
        Expanded(
          child: Slider(
            min: 0.0,
            max: 100.0,
            value: duration.inMilliseconds > 0
                ? position.inMilliseconds.toDouble() /
                    duration.inMilliseconds.toDouble() *
                    100
                : 0.0,
            onChangeStart: (e) {
              seeking = true;
            },
            onChanged: position.inMilliseconds > 0
                ? (e) {
                    // Update position state here
                  }
                : null,
            onChangeEnd: (e) {
              seeking = false;
              player.seek(Duration(
                  milliseconds: (e / 100 * duration.inMilliseconds).toInt()));
            },
          ),
        ),
      ],
    );
  }
}

As you can see we have this print to observe the log
      player.streams.position.listen((event) {
        if (mounted && !seeking) {
          ref.read(_positionProvider.notifier).state = event;
          final duration = ref.watch(_durationProvider);
          double percentage =
              (event.inMilliseconds / duration.inMilliseconds) * 100;
          print(
              "Position: ${event.inMilliseconds}, Duration: ${duration.inMilliseconds}, Percentage: $percentage");
        }
      }),

The last output of print is
flutter: Position: 1087, Duration: 1410, Percentage: 77.09219858156028

As you can see the Position does not reach the duration which has the percentage of 77%

WAI

You need callbacks for every millisecond of a 1 second file... Do you know how computers work & performance?

You need callbacks for every millisecond of a 1 second file... Do you know how computers work & performance?
If you need that degree of smooth-ness, you can manually interpolate the values using AnimationController etc.
The media stream itself is decoded in chunks. These streams are provided to reflect the position updates in UI & make seek-bar etc. functional. If you are displaying an animated content of a second or two, why not use Animated WebP or GIF instead?

I think animation controller is not connected in my problem:
Watch the video attach link below:
Issue with Duration
Focus on the slider aside of play buttons, as you can observe that the slider cant reach the maximum. And also I already provide the code:

You can try to enable this:
https://mpv.io/manual/stable/#command-interface-audio-pts

Can't really see it happen anymore. No further reports received.


Aurora doesn't hook into the Corsair Utility Engine SDK

What are you experiencing an issue with?

[x] Aurora
[ ] Aurora supported game, (Fill in the game)
[ ] Aurora Wrapper
[ ] Aurora Profile
[x] Aurora supported device, (Fill in problematic devices)
[ ] Aurora Scripts
[ ] Aurora Updater
[x] Aurora Lighting issue
[ ] Other, (Fill in another issue here)

What kind of an issue is it?

[ ] Crash
[ ] Performance problems
[ ] Visual bug
[ ] Localization issue
[ ] Enhancement suggestion
[x] Device issue
[ ] Other, (Fill in another type of issue here)

Expected behavior:
Explain here what should happen.
Aurora should use the CUE SDK to display lighting effects
Actual behavior:
Explain here what happened instead.
Aurora fails to hook, preventing lighting effects from being displayed.
How often does this problem occur?

This problem occurs... (Every time)
Please describe the steps to reproduce this issue:
The issue can be reproduced by doing following steps:

Starting Aurora
Going to Device Manager under Settings
Clicking Start on the Corsair devices section

What is the version of Aurora you are experiencing this issue with?

My version is... (beta v0.6.1-dev4-314)
Does the previous version of Aurora have this issue?
The previous version, (Fill in the version here), did/did not have this issue.
Admittedly, have not tried other versions, but other versions had other issues (such as producing mouse lag in Overwatch, if I remember correctly).
Please include any logs, screenshots, or files that are related to this issue:

https://pastebin.com/VGgt65YD
And yes, I made sure CUE SDK was enabled in the Corsair Utility Engine.

Which version of CUE are you running? According to the latest changelog of CUE.NET, CUE 1 is no longer supported with the version of the SDK that is included.

I'm on CUE 2, but I tried CUE 3 as well. Neither worked.
Tried the latest build, still not working, unfortunately.

Any updates to speak of?

@GreenGhost21 I don't know what's wrong, do you have anything potentially helpful in your log? Also, what exact version of CUE are you using? It's working perfectly for me with this build and CUE 3.2.87

Huh. Now it works for some weird reason. How odd.
I do have an issue with the Clevo Keyboard flickering (and possibly an issue with Overwatch + Aurora lagging the mouse), but I'll worry about those issues another time.


Compression removes Video

Describe the bug
First of all nice work with this Project I love it.
I am currently tinkering around with ffmpeg on mobile and added your Project to mine to use the easy queries.
I noticed that the compression fails some times and got outside filming a few videos to test with your App.
When you try to compress a self filmed video it removes the video while compression and only gives a a sound file.
To Reproduce
Steps to reproduce the behavior:

Go to Compress a Video
Do a Compression
It returns successfully
In Android..data..app..Output is just a sound file

Expected behavior
A Video File.
Smartphone (please complete the following information):

Device: [Samsung Galaxy S7 Edge]
OS: [Android 8.0.0]

Additional context
no changes to the video just filmed, and a try to compress

Can you please verify extension of  compressed output file and also verify  the output on other video application like VLC, MXPlayer etc...

Input file was "20210419_183953.mp4" ,  output file was "Output1618902220.mp4"
VLC Input(H264 - MPEG-4 AVC, 3840x2160, 29,980fps)
VLC Output(MPEG-4, 3840,2160, 25,000fps)
PS: I compressed it several times in a Row today and a few could be started with VLC a few had the same issue as before.

Please use this function for create query and let me know it is working or not, if it is work then I'll update it soon.
fun compressor(inputVideo: String, width: Int?, height: Int?, outputVideo: String): Array {
Common.getFrameRate(inputVideo)
val inputs: ArrayList = ArrayList()
inputs.apply {
add("-y")
add("-i")
add(inputVideo)
add("-s")
add("${width}x${height}")
add("-ac")
add("2")
add("-ar")
add("22050")
add("-preset")
add("ultrafast")
add(outputVideo)
}
return inputs.toArray(arrayOfNulls(inputs.size))
}


Tracker json fix

These changes should fix the problems seen on the tracker page.

Looks good -- one nit to fix in the ivy.xml.


kprobe: getting random values in arguments

Hi,
I'm trying to instrument the kill syscall using kprobe. But, I'm getting some random values in place of the pid and signal that is used while execution.
killsnoop.bpf.c
#include <linux/bpf.h>
#include <bpf/bpf_helpers.h>
#include <bpf/bpf_tracing.h>
#include <bpf/bpf_core_read.h>
#include <sys/types.h>

#include "killsnoop.h"
#include "bpf_misc.h"

struct val_t {
    __u32 uid;
    __u32 pid;
    int sig;
    int tpid;
    char comm[TASK_COMM_LEN];
};

struct data_t {
    __u64 ts;
    __u32 uid;
    __u32 pid;
    int tpid;
    int sig;
    int ret;
    char comm[TASK_COMM_LEN];
};

struct {
    __uint(type, BPF_MAP_TYPE_HASH);
    __type(key, __u32);
    __type(value, struct val_t);
    __uint(max_entries, 10240);
} info_map SEC(".maps");

struct {
    __uint(type, BPF_MAP_TYPE_PERF_EVENT_ARRAY);
    __uint(key_size, sizeof(__u32));
    __uint(value_size, sizeof(__u32));
    __uint(max_entries, 10240);
} events SEC(".maps");

int probe_entry(struct pt_regs *ctx, pid_t tpid, int sig) {
    __u64 pid_tgid = bpf_get_current_pid_tgid();
    __u32 pid = pid_tgid >> 32;
    __u32 tid = (__u32) pid_tgid;
    __u64 uid_gid = bpf_get_current_uid_gid();
    __u32 uid = (__u32) uid_gid;

    if(sig == 0) {
        /**
            If sig is 0, then no signal is sent, but existence and permission
            checks are still performed; this can be used to check for the
            existence of a process ID or process group ID that the caller is
            permitted to signal.
        */
        return 0;
    }

    char fmt[] = "KILL syscall called for: %d with signal: %d";
    bpf_trace_printk(fmt, sizeof(fmt), tpid, sig);

    struct val_t val = {
            .uid = uid,
            .pid = pid
    };

    if (bpf_get_current_comm(&val.comm, sizeof(val.comm)) == 0) {
        val.tpid = tpid;
        val.sig = sig;
        bpf_map_update_elem(&info_map, &tid, &val, BPF_ANY);
    }
    return 0;
}

int probe_exit(struct pt_regs *ctx) {
    struct data_t data = {};
    struct val_t *valp;
    __u64 pid_tgid = bpf_get_current_pid_tgid();
    __u32 pid = pid_tgid >> 32;
    __u32 tid = (__u32) pid_tgid;

    valp = bpf_map_lookup_elem(&info_map, &tid);
    if (!valp) {
        return 0; // missed entry
    }

    bpf_probe_read_kernel(&data.comm, sizeof(data.comm), valp->comm);
    data.ts = 0;// bpf_ktime_get_ns();
    data.pid = pid;
    data.tpid = valp->tpid;
    data.ret = PT_REGS_RC(ctx);
    data.sig = valp->sig;
    data.uid = valp->uid;

    bpf_perf_event_output(ctx, &events, BPF_F_CURRENT_CPU, &data, sizeof(data));

    bpf_map_delete_elem(&info_map, &tid);
    return 0;
}

SEC("kprobe/"SYS_PREFIX"sys_kill")
int BPF_KPROBE(entry_probe, pid_t tpid, int sig) {
    return probe_entry(ctx, tpid, sig);
}

SEC("kretprobe/"SYS_PREFIX"sys_kill")
int BPF_KRETPROBE(return_probe) {
    return probe_exit(ctx);
}

char _license[] SEC("license") = "GPL";

killsnoop.c

#include <signal.h>

#include "killsnoop.skel.h"
#include "killsnoop.h"

#define OUTPUT_FORMAT "%llu %lu %d %s %d %d\n"
#define HEADER "TIME        PID      TPID      COMMAND    SIGNAL    UID  "

/* Set the poll timeout when no events occur.*/
#define PERF_POLL_TIMEOUT_MS    1
#define PERF_BUFFER_PAGES 64

static volatile int shutdown = 0;

static void sig_int(int signal) {
    shutdown = 1;
}

void handle_event(void *ctx, int cpu, void *data, u32 data_size) {
    const struct event *e = data;
    printf(OUTPUT_FORMAT, e->ts, (unsigned long) e->pid, e->tpid, e->comm, e->sig, e->uid);
}

void handle_lost_event(void *ctx, int cpu, u64 lost_cnt) {
    fprintf(stderr, "Lost %llu events on CPU #%d!\n", lost_cnt, cpu);
}

int main(int argc, char **argv) {

    int err;

    struct perf_buffer *perfBuffer;
    struct killsnoop_bpf *obj;

    obj = killsnoop_bpf__open_and_load();
    if (!obj) {
        fprintf(stderr, "failed to open/load BPF skeleton!");
        goto cleanup;
    }

    err = killsnoop_bpf__attach(obj);
    if (err) {
        fprintf(stderr, "failed to attach BPF programs\n");
        goto cleanup;
    }

    perfBuffer = perf_buffer__new(bpf_map__fd(obj->maps.events), PERF_BUFFER_PAGES, handle_event, handle_lost_event,
                                  NULL, NULL);

    if (!perfBuffer) {
        err = -errno;
        fprintf(stderr, "failed to open perf buffer: %d\n", err);
        goto cleanup;
    }

    if (signal(SIGINT, sig_int) == SIG_ERR) {
        fprintf(stderr, "can't set signal handler: %s\n", strerror(errno));
        err = 1;
        goto cleanup;
    }

    printf("TIME        PID      TPID      COMMAND    SIGNAL    UID  \n");
    while (!shutdown) {
        err = perf_buffer__poll(perfBuffer, PERF_POLL_TIMEOUT_MS);
        if (err < 0 && err != -EINTR) {
            fprintf(stderr, "error polling perf buffer: %s\n", strerror(-err));
            goto cleanup;
        }
        /* reset err to return 0 if exiting */
        err = 0;
    }

    cleanup:
    perf_buffer__free(perfBuffer);
    killsnoop_bpf__destroy(obj);

    return err != 0;
}

Output

Also, when I execute kill -9 <pid> in another terminal, it's not captured in the output. Can someone please explain on what am I doing wrong?

I don't know why _x64_sys_kill didn't work in my environment, either, but I think you could try to use kill_something_info, it gave me a more reasonable output:
SEC("kprobe/kill_something_info")
int BPF_KPROBE(entry_probe, int sig, void *info, pid_t pid) {
    return probe_entry(ctx, pid, sig);
}

FYI, we have a dedicated tool in BCC repo for this purpose.

Also, when I execute kill -9  in another terminal, it's not captured in the output.

Linux has other syscalls for kill, eg. tkill. You should trace all kill-related syscalls.

I'm getting some random values in place of the pid and signal that is used while execution.

You submit a struct data_t to perf buffer and interpret it as struct event ?

I'm getting some random values in place of the pid and signal that is used while execution.

You submit a struct data_t to perf buffer and interpret it as struct event ?

both the struct shares the same data fields in the same order.

They need to be exactly the same for both padding and field size.

Linux has other syscalls for kill, eg. tkill. You should trace all kill-related syscalls.

I'm trying to trace the kill syscall alone so that I can get the actual time the parent process quits. Any ideas why the __x64_sys_kill was not being traced?

This might be due to CONFIG_ARCH_HAS_SYSCALL_WRAPPER. Latest libbpf supports a special kprobe for syscalls. Try SEC("ksyscall/<syscall-name>") and use BPF_KSYSCALL() macro to define BPF program. See https://github.com/torvalds/linux/blob/master/tools/testing/selftests/bpf/progs/test_attach_probe.c#L33-L38 for one example.
 Please give it a try and let us know if it works for you.

Try this, to see if it works on your case.
SEC("kprobe/__x64_sys_kill")
int kprobe_kill(struct pt_regs *kprobe_ctx) {
    int pid, sig;
    struct pt_regs *ctx = (struct pt_regs *)PT_REGS_PARM1(kprobe_ctx);

    bpf_probe_read(&pid, sizeof(pid), &PT_REGS_PARM1(ctx));
    bpf_probe_read(&sig, sizeof(sig), &PT_REGS_PARM2(ctx));

    bpf_prink("pid: %d, sig: %d\n", pid, sig);
}

@syogaraj if your issue was fixed with one of the above suggestion, please report back and close the issue. Thank you!

@anakryiko I'm yet to try the suggested solution. Will check and report back at the earliest.

@syogaraj ping, did you get a chance to try SEC("ksyscall")?


VideoCapture compatibility for images with alpha channel

Issue #5718

I see no reason this can't be merged in.

:+1:


Stop Button Instead of Auto Detect Silence

It's very cool to have auto detect for stop/pause. However, when dealing with multiple users, it's pretty impossible to target optimum threshold to accommodate multiple users because everyone has different microphone level, different room with different background noise, etc.
Could you provide an option to either have a separate stop button (with configurable label like send) or a toggle button (with configurable label speak/send) so that when the user click the button, it stops recording and processes the audio?
Thanks so much!

Thanks, but how do you disable the auto stop so it records indefinitely until you click the button?


Possibility of fine tuning?

I'd like to put together a proof of concept for fine tuning large language models in rust.
My background is Rust rather than ML.
So my question is this model inference only or could I somehow use it to do training?
Would it be somehow related to the generic training loop https://github.com/coreylowman/dfdx/blob/main/examples/generic-train-loop.rs?
Thanks.

This repo is for model inference only, training would have other considerations in the modeling code like dropout, different data types (automatic mixed precision), and dataset wrangling.
I'm inclined to say we can create a separate repo for finetuning LLMs. This will let us write code more specific to training, so we don't have to abstract over both cases


Remove UnnecessarySafeCall safeguard against ErrorType

Opening this to recall to remove this extra patch introduced in #3419
A fix was pushed upstream in the Kotlin compiler and should land in Kotlin 1.5
As soon as we bump the compiler-embeddable version we can also merge this PR (as the tests should be green)

We should be able to unblock this now, right?

Seems like the change didn't make to 1.5.0:
https://github.com/JetBrains/kotlin/blob/e73e039e43d740b890eaa4d7256362eeaf6ff1f7/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/CallExpressionResolver.kt#L542-L544
But is on master:
https://github.com/JetBrains/kotlin/blob/23faacd21b84af32921ecad785c8d30f1b930c34/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/CallExpressionResolver.kt#L545-L547
So we will probably have to wait a bit more

Kotlin compiler fix is included in 1.5.20-M1, so we should be unblocked by then.

Ooops sorry I misclicked the button.

I checked out this branch, rebased on main & ran a full build, so this just needs a rebase to check the CI passes on all platforms then it can be merged for 1.18.1 or 1.19.0.

so this just needs a rebase to check the CI passes on all platforms

Just rebased 👍


Getting auth error

{message_=L"The input authorization token can't serve the request. Please check that the expected payload is built as per the protocol, and check the key being used. Server used the following payload to sign: 'ge... }
Any ideas?  Used it in C# and same code works fine.

The create database and create collection methods work.  This error is comming from the GetDatabase method.

looks like you need to pass resource id instead of the id, would make it easier if we can just pass the id to do a query.

Thanks for reporting and probably figuring this out! Where is GetDatabase failing? in your code or in test.cpp (in project)? In project, resource_id is given in GetDatabase call: https://github.com/stalker314314/DocumentDBCpp/blob/master/test/test.cpp#L181. If you have patch/push request, feel free to send it my way!

I took a more detailed look. All getters are using resource_id, this is (in my thinking) because resource_id is only unique thing here, you cannot get database by id as you may have more than one at the same time. I will close this as "by design". CosmosDB API simply doesn't have option to get DB by ID, only by resource_id


Fixed module manifest required version property

Fixing a test issue by adding the minimum required version of PowerShell to the module manifest

[X] Change details added to Unreleased section of changelog.md?
[X] Added/updated documentation and descriptions in .schema.mof files where appropriate?
[X] Examples updated for both the single server and small farm templates in the examples folder?
[X] New/changed code adheres to Style Guidelines?
[X] Unit and Integration tests created/updated where possible?

This change is

I'm rushing this one through as it's breaking the build for all other branches.


boilerplate.cmake and environment variable

hi everyone, I am trying to use the zephyr stack and I am facing the same issue for the last days..
I am following the Linux development guide and doing every steps. then when I am trying to build the hello world example I keep having this cmake issue:
$ sudo cmake -DBOARD=atsamd21_xpro ../.
CMake Error at CMakeLists.txt:3 (include):
  include could not find load file:
    /cmake/app/boilerplate.cmake

I have the file boilerplate but I think the issue is with the environment variable.
CmakeLists for hello_world:
cmake_minimum_required(VERSION 3.8.2)
include(**$ENV{ZEPHYR_BASE}**/cmake/app/boilerplate.cmake NO_POLICY_SCOPE)
project(hello_world)
target_sources(app PRIVATE src/main.c)

I am sourcing the zephyr-env.sh and I also tried by exporting the variable myself:
export ZEPHYR_BASE=/home/user/zephyr
but I keep having the same issue.. I tried with my current dev VM (ubuntu 17.10) I then tried on another VM (ubuntu 16.04) and I just tried again with a fresh VM (ubuntu 16.04) but I keep facing the same issue.
I have the correct version of cmake (3.8.2), I followed every steps of the dev guide.
Thank you for your help!

Perhaps the env vars are different when sudo is used. Try without sudo.

@FlorianFouillet yes, as @SebastianBoe says, you really should not be building with sudo in the first place unless you have a very good reason for it.

@FlorianFouillet Glad to hear this worked for you. Remember to install dependencies with pip install --user so that they are placed in the user folder and not a global one.


Camera quality

[yes ] Review the documentation: https://docs.viromedia.com/
[yes ] Search for existing issues: https://github.com/viromedia/viro
[yes ] Use the latest ViroReact release: https://docs.viromedia.com/docs/releases

Environment
Please provide the following information about your environment:

Development OS: Windows 10
Device OS & Version: Android 9
Version: react-native: 0.59.3, react-viro: 2.17.0
Device(s): Xiaomi Mi 9, Xiaomi Redmi Note 7

Description
I have a problem with image quality in AR apps. When I compare the image I see in app built with viro-ar and for example with images from AR apps built with unity, the difference in quality is really big. Is that only problem of my devices or is it a problem of all Android devices?
Screenshot from Unity app

Screenshot from Viro-AR app

Reproducible Demo
Just launch any app created with viro and with unity.

try autofocus true in ViroARSceneNavigator


Thesis/paper

When will the thesis/paper on this type system become available? Very interesting work, I enjoyed your HOPE presentation.

Hi, thanks! The thesis is available here, but sadly it's only available in Spanish. I will post an update as soon as an English presentation of the system is available.


mini.align question

I recently migrated from vim-easy-align to mini.align; thanks for the amazing plugins! It's working out of the box for my use case, except for one minor detail that's confusing me. When I align a table on &, all the columns are shrunk to the smallest possible width, except the first column is much larger than expected. See screenshot:

I apologize if this question has been answered in other documentation

Columns are not shrunk, but the opposite - they are padded (from left and/or right). Try using trim step with custom merge character.
That is:

Visually select region to be aligned.
Press gA to initiate interactive align.
Press & to align by it.
Press t to trim whitespace.
Press m followed by <Space> and <CR> (Enter).


st crashes when going between brackets in a function

when st crashes it says this
X Error of failed request:  BadLength (poly request too large or internal Xlib length error)
Major opcode of failed request:  139 (RENDER)
Minor opcode of failed request:  20 (RenderAddGlyphs)
Serial number of failed request:  5919
Current serial number in output stream:  6083
and when i use the gnome terminal it does not crash

what is your environment. Could you provides info so I can reproduce it?


Documentation isn't showing in intellisense while using .NET 5 SDK

Issue Description
No documentation is shown in intellisense while using .NET 5 SDK. Tried with both net5.0 and netstandard2.0 project.
Running inside a .Net 5.0 C# devcontainer using image mcr.microsoft.com/vscode/devcontainers/dotnet:0-5.0 without any modifications.
Expected Behavior
Documentation to be shown in intellisense. All documentation is missing, also for third-party nuget-packages.
Actual Behavior

F12 sends me to [metadata] Console.cs without xml-doc
Logs
OmniSharp log
Starting OmniSharp server at 5/1/2021, 6:04:20 PM
    Target: /workspaces/Pester/src/csharp/Pester.sln
OmniSharp server started.
Path: /root/.vscode-server/extensions/ms-dotnettools.csharp-1.23.11/.omnisharp/1.37.8/run
PID: 6472
    Starting OmniSharp on ubuntu 20.4 (x64)

    DotNetPath set to dotnet

    Located 1 MSBuild instance(s)
        1: StandAlone 16.9.0 - "/root/.vscode-server/extensions/ms-dotnettools.csharp-1.23.11/.omnisharp/1.37.8/omnisharp/.msbuild/Current/Bin"

    MSBUILD_EXE_PATH environment variable set to '/root/.vscode-server/extensions/ms-dotnettools.csharp-1.23.11/.omnisharp/1.37.8/omnisharp/.msbuild/Current/Bin/MSBuild.exe'

    Registered MSBuild instance: StandAlone 16.9.0 - "/root/.vscode-server/extensions/ms-dotnettools.csharp-1.23.11/.omnisharp/1.37.8/omnisharp/.msbuild/Current/Bin"
        CscToolExe = csc.exe
        MSBuildToolsPath = /root/.vscode-server/extensions/ms-dotnettools.csharp-1.23.11/.omnisharp/1.37.8/omnisharp/.msbuild/Current/Bin
        CscToolPath = /root/.vscode-server/extensions/ms-dotnettools.csharp-1.23.11/.omnisharp/1.37.8/omnisharp/.msbuild/Current/Bin/Roslyn
        BypassFrameworkInstallChecks = true
        MSBuildExtensionsPath = /root/.vscode-server/extensions/ms-dotnettools.csharp-1.23.11/.omnisharp/1.37.8/omnisharp/.msbuild

    Invoking Workspace Options Provider: OmniSharp.Roslyn.CSharp.Services.CSharpFormattingWorkspaceOptionsProvider, Order: 0

    Invoking Workspace Options Provider: OmniSharp.Roslyn.CSharp.Services.Completion.CompletionOptionsProvider, Order: 0

    Invoking Workspace Options Provider: OmniSharp.Roslyn.CSharp.Services.RenameWorkspaceOptionsProvider, Order: 100

    Invoking Workspace Options Provider: OmniSharp.Roslyn.CSharp.Services.ImplementTypeWorkspaceOptionsProvider, Order: 110

    Invoking Workspace Options Provider: OmniSharp.Roslyn.CSharp.Services.BlockStructureWorkspaceOptionsProvider, Order: 140

    Detecting Cake files in '/workspaces/Pester/src/csharp'.

    Could not find any Cake files

    Detecting projects in '/workspaces/Pester/src/csharp/Pester.sln'.

    Queue project update for '/workspaces/Pester/src/csharp/Pester/Pester.csproj'

    Queue project update for '/workspaces/Pester/src/csharp/PesterTests/PesterTests.csproj'

    Detecting CSX files in '/workspaces/Pester/src/csharp'.

    Could not find any CSX files

    Configuration finished.

    Omnisharp server running using Stdio at location '/workspaces/Pester/src/csharp' on host 6397.

    Loading project: /workspaces/Pester/src/csharp/Pester/Pester.csproj

    Successfully loaded project file '/workspaces/Pester/src/csharp/Pester/Pester.csproj'.

    Adding project '/workspaces/Pester/src/csharp/Pester/Pester.csproj'

    Loading project: /workspaces/Pester/src/csharp/PesterTests/PesterTests.csproj

    Successfully loaded project file '/workspaces/Pester/src/csharp/PesterTests/PesterTests.csproj'.

    Adding project '/workspaces/Pester/src/csharp/PesterTests/PesterTests.csproj'

    Update project: Pester

    Update project: PesterTests

    No document found. File: /workspaces/Pester/net5classLibDemo/Class1.cs.

    Could not find document for file /workspaces/Pester/net5classLibDemo/Class1.cs

    No document found. File: /workspaces/Pester/net5classLibDemo/Class1.cs.

Received response for /v2/codestructure but could not find request.
Received response for /v2/getcodeactions but could not find request.
warn: OmniSharp.Roslyn.CSharp.Services.Navigation.FindUsagesService
No document found. File: /workspaces/Pester/net5classLibDemo/Class1.cs.
warn: OmniSharp.Roslyn.CSharp.Services.Navigation.FindUsagesService
No document found. File: /workspaces/Pester/net5classLibDemo/Class1.cs.
info: OmniSharp.Roslyn.CSharp.Services.Completion.CompletionService
Could not find document for file /workspaces/Pester/net5classLibDemo/Class1.cs
Received response for /v2/codestructure but could not find request.
Received response for /v2/codestructure but could not find request.
Received response for /v2/getcodeactions but could not find request.
Received response for /v2/codestructure but could not find request.
Received response for /v2/codestructure but could not find request.
Received response for /v2/codestructure but could not find request.
warn: OmniSharp.Roslyn.CSharp.Services.Navigation.FindUsagesService
No symbol found. File: /workspaces/Pester/src/csharp/Pester/PesterConfiguration.cs, Line: 35, Column: 35.
warn: OmniSharp.Roslyn.CSharp.Services.Navigation.FindUsagesService
No symbol found. File: /workspaces/Pester/src/csharp/Pester/PesterConfiguration.cs, Line: 36, Column: 10.
warn: OmniSharp.Roslyn.CSharp.Services.Navigation.FindUsagesService
No symbol found. File: /workspaces/Pester/src/csharp/Pester/PesterConfiguration.cs, Line: 36, Column: 10.
warn: OmniSharp.Roslyn.CSharp.Services.Navigation.FindUsagesService
No symbol found. File: /workspaces/Pester/src/csharp/Pester/PesterConfiguration.cs, Line: 37, Column: 10.
warn: OmniSharp.Roslyn.CSharp.Services.Navigation.FindUsagesService
No symbol found. File: /workspaces/Pester/src/csharp/Pester/PesterConfiguration.cs, Line: 36, Column: 10.
Received response for /v2/codestructure but could not find request.
Received response for /v2/codestructure but could not find request.
Received response for /v2/codestructure but could not find request.
Received response for /v2/codestructure but could not find request.
Received response for /v2/getcodeactions but could not find request.

C# log

Environment information
VSCode version: 1.55.2
C# Extension: 1.23.11
Mono Information
        OmniSharp using built-in mono
Dotnet Information
.NET SDK (reflecting any global.json):
 Version:   5.0.202
 Commit:    db7cc87d51
Runtime Environment:
OS Name:     ubuntu
OS Version:  20.04
OS Platform: Linux
RID:         ubuntu.20.04-x64
Base Path:   /usr/share/dotnet/sdk/5.0.202/
Host (useful for support):
Version: 5.0.5
Commit:  2f740adc14
.NET SDKs installed:
5.0.202 [/usr/share/dotnet/sdk]
.NET runtimes installed:
Microsoft.AspNetCore.App 5.0.5 [/usr/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.NETCore.App 5.0.5 [/usr/share/dotnet/shared/Microsoft.NETCore.App]
To install additional .NET runtimes or SDKs:
https://aka.ms/dotnet-download

Visual Studio Code Extensions

Extension
Author
Version

csharp
ms-dotnettools
1.23.11

powershell
ms-vscode
2021.2.2

Closing as .NET 5 is EOL


docs: do not inline docs from deps that drift

Inlining these docs causes them to be perpetually out-of-date, since Docs.rs only builds on the actual containing crate publish.

Similar PR to Surf: https://github.com/http-rs/surf/pull/269


remove rbac rules for knative resources

Delete there rules:
https://github.com/iter8-tools/iter8/blob/master/pkg/controller/experiment/experiment_controller.go#L271-L274:
// +kubebuilder:rbac:groups=serving.knative.dev,resources=services,verbs=get;list;watch;update;patch
// +kubebuilder:rbac:groups=serving.knative.dev,resources=services/status,verbs=get
// +kubebuilder:rbac:groups=serving.knative.dev,resources=revisions,verbs=get;list;watch
// +kubebuilder:rbac:groups=serving.knative.dev,resources=revisions/status,verbs=get

It seems I have to grant the iter8-operator all the same authority as the manager has if I want to create rbac rules from it. Noticed this set of older rules needs to be removed.

Done.


Babel in browser - update readme

Not sure if this is intended behavior, but the README is not clear that "JSXTransformer" must be pointed to Babel's browser.js for browser-based Babel transformation to work:
paths: {
...
JSXTransformer: libPath + 'babel/dist/browser',
...
}

This is necessary since React deprecated & removed JSXTransformer.

I get a Cannot read property 'transformer' of undefined:
Uncaught Error: Load timeout for modules: jsx!app_unnormalized2,jsx!app
http://requirejs.org/docs/errors.html#timeoutmakeError @ require.js?v=2de44fdcc1fe5e939aa4ce80626b241d:165checkLoaded @ require.js?v=2de44fdcc1fe5e939aa4ce80626b241d:693(anonymous function) @ require.js?v=2de44fdcc1fe5e939aa4ce80626b241d:714

My full config is:
require.config({
	paths: {
		react: 			libPath + 'react-with-addons',
		JSXTransformer: libPath + "babel/browser",
   	 	jsx: 			libPath + "jsx",
		text: 			libPath + 'text',
	},

	shim: {
		react: {
			exports: 'React'
		}
	},

	config: {
		jsx: {
			transformer: 'babel',
			babelOptions: {
				sourceMaps: 'inline'
			}
		}
	}
});

require(['jsx!main'], function(Main) {
});

Where 'jsx' is in fact this lib (requirejs-react-jsx), and all libs are at their latest version (as of a week or two ago).
I've confirmed that main.jsx renders React elements successfully.

Just so I can reproduce your build environment as accurately as possible, what are your bower.json version entries for babel, requirejs-react-jsx, react? Also, the babel website suggested to me that I use
requirejs-babel - should I be using the npm-based installation of babel instead?

Not using Bower, because integrating into a larger project which uses a non-JS-specific build system.
Versions:
React (with addons) v0.14.3
Babel 6.1.18
RequireJS 2.1.21
RequireJS text 2.0.12
Yes, I just used browser.js from the main babel installation.

I should also note that I'm running this in a Java 8 WebView (inside a Swing component), so I can't be certain it's cross-browser compatible, just that it works in my case.


[Suggestion] Upload to Modrinth

it would be cool if you could upload your mod to modrinth as well.

I was leery of Modrinth because of Curseforge requirements that they be the sole source but it's becoming clear that many mod authors are going to Modrinth as well as Curseforge so I'm going to look into it.   Is there any helpful suggestion on how to get the process started?
I've been struggling with SADS in the winter plus some health issues since last August but I'm recovering finally and winter is ending so the seasonal affective disorder should start reducing.

I've been using the Modrinth launcher to play modded for a while now, and I would love to see Regrowth there as well. Basically, all the main mods I use are there - even masa uploaded Litematica and MiniHUD there last week. I don't think Curseforge would make it a problem for you, right?

I have uploaded FixExperienceBug to Modrinth.
Please let me know if it looks like I did it correctly.  I'll slowly start uploading other mods over there if that one looks good.

Just checked, basically all looking good! You just didn't add 1.20/1.20.1 support for the fabric-experiencebugfix-1.20 version. This way it won't show up when trying to install it for a 1.20.1 instance throught the Modrinth launcher search. But that's very easy to fix.
Nothing wrong I could see besides that. Excited to see Regrowth there!

I have uploaded the latest versions of Regrowth for forge and fabric and the 1.21.1 forge conversion.
Energy levels continue to improve as is my sleep.  Hope we do not get another natural disaster!
It looks like the fabric 1.20 and 1.20.1 is the same mod as 1.20.2-1.20.5.   I'll have to edit that and fix it.  Thanks for the feedback, I appreciate it!

Could you add the fabric 1.19.2 version too? Only the forge 1.20 version is showing up at https://modrinth.com/mod/regrowth/versions.

Sorry, new to Modrinth.  I'll add it if it exists.

That's still not quite what I'm looking for - that's the fabric 1.19.4 version (fabric-release-regrowth-1.19.4-31.1.0.jar) - what I'm looking for is the fabric 1.19.2 version (fabric-release-regrowth-1.19-31.1.0.jar).


Improve error handling on accept call

In this PR I'm proposing inprovement of accept call on listening socket. In my opinition not all accept errors should cause server shutdown.

@dennisjenkins75 I have made a change in http_server_test because it seems that there is an error in server that makes this test unstable. I will explore and try to fix this problem in the near future.

@dennisjenkins75 I have fixed problem with http_server_test in this PR and decided to revert temporary commit here.


fix: children with the same key warning

We're getting a lot of "Encountered two children with the same key" warnings, which generally pollutes console logs...
It turns out Bridge and Hook components were being created with the same key as children of the same parent - this should fix that

Thanks!, released as 0.14.0


SDK update

Please update the package version and changelog.

Please delete the CHANGELOG-file. Changelog for Community tasks can be found at the end of README.


Addition to the database magement functionality

The makeStorage function is great. A real nice wrapper around the lsqlite3 library.
The documentation lacked a mention of makeStorage.
So I created an example.

That's very nice; thank you for contributing! One of the reasons for the documentation missing is that I'm still working on the API to get better consistency and simplicity. I just made (and pushed) several changes to it, so the example will need to be tweaked a bit (exec and execall are both named execute now; I could have kept exec, but there is already exec function in lsqlite3, so I wanted to avoid  the overlap).
Would you mind updating and force-pushing your branch? I also plan to add the compatibility section to track breaking changes (all the commits that do that include COMPAT in their description).

Thanks.
Overlapping function names can indeed be confusing.
The fully written execute function is nice, and in my opinion more readable.

@w13b3, merged the changes with few tweaks.
Just a quick suggestion: you can use a feature branch instead of using the master branch, as it gives me a flexibility of making changes to the PR without affecting your master branch. Right now you'll have to pull my changes and force-push them to your repository (git checkout master; git pull upstream; git push origin --force, assuming my repository is configured as upstream remote), as I had to rewrite some of your commits.
Using a separate branch will also allow you to rebase your branch (git checkout my-feature-branch; git rebase master) to avoid those "merge ...:master..." commits to keep the history clean.


WillPopScope code sample and documentation update

Description
This PR adds a simple WillPopScope code sample and mentions WillPopScope prevents route popping behaviours such as swipe to go back on iOS and how to override it.
Related Issues
Closes 14203
Tests
No tests required.
Checklist
Before you create this PR, confirm that it meets all requirements listed below by checking the relevant checkboxes ([x]). This will ensure a smooth and quick review process.

[x] I read the Contributor Guide and followed the process outlined there for submitting PRs.
[x] I signed the CLA.
[x] I read and followed the Flutter Style Guide, including Features we expect every widget to implement.
[x] I read the Tree Hygiene wiki page, which explains my responsibilities.
[x] I updated/added relevant documentation (doc comments with ///).
[x] All existing and new tests are passing.
[x] The analyzer (flutter analyze --flutter-repo) does not report any problems on my PR.
[x] I am willing to follow-up on review comments in a timely manner.

Breaking Change
Did any tests fail when you ran them? Please read Handling breaking changes.

[x] No, no existing tests failed, so this is not a breaking change.
[ ] Yes, this is a breaking change. If not, delete the remainder of this section.

[ ] I wrote a design doc: https://flutter.dev/go/template Replace this with a link to your design doc's short link
[ ] I got input from the developer relations team, specifically from: Replace with the names of who gave advice
[ ] I wrote a migration guide: https://flutter.dev/go/breaking-changes-template Replace this with a link to a pull request that adds the migration guide to https://flutter.dev/docs/release/breaking-changes

This will be also true for CupertinoPageRoute right ? Does it make sense to add a note about it ?

This will be also true for CupertinoPageRoute right ? Does it make sense to add a note about it ?

made changes, please check now


Should Workerman\Events\React\Base implements EventInterface?

Hi. respectful walkor.
Recently, i'm developing some project, and need to use ReactPHP's evloop implement. But I found Workerman\Events\React\Base implements React\EventLoop\LoopInterface while not Workerman\Events\EventInterface, and dosn't have clearAllTimer method. It's right?
Please give me some help.

It doesn't matter.


luaeval('vim.list(t)') and luaeval('vim.dict(t)') do not work as documented

In  :help lua-vim  I see:
	vim.list([arg])		Returns an empty list or, if "arg" is a Lua
				table with numeric keys 1, ..., n (a
				"sequence"), returns a list l such that l[i] =
				arg[i] for i = 1, ..., n (see |List|).
				Non-numeric keys are not used to initialize
				the list. See also |lua-eval| for conversion
				rules. Example: >
					:lua t = {math.pi, false, say = 'hi'}
					:echo luaeval('vim.list(t)')
					:" [3.141593, 0], 'say' is ignored

However, it does not seem to work. This is what I get with vim.8.1.113 (and older) with the lua feature enabled:
:lua t = {math.pi, false, say = 'hi'}
:echo luaeval('vim.list(t)')
[]

I.e.  vim.list(t) gives an empty list, whereas the documentation says that it should return [3.141593, 0].
Similarly, the doc says:
	vim.dict([arg])		Returns an empty dictionary or, if "arg" is a
				Lua table, returns a dict d such that d[k] =
				arg[k] for all string keys k in "arg" (see
				|Dictionary|). Number keys are converted to
				strings. Keys that are not strings are not
				used to initialize the dictionary. See also
				|lua-eval| for conversion rules. Example:
					:lua t = {math.pi, false, say = 'hi'}
					:echo luaeval('vim.dict(t)')
					:" {'say': 'hi'}, numeric keys ignored

But this is the actual behavior:
:lua t = {math.pi, false, say = 'hi'}
:echo luaeval('vim.dict(t)')
{}

I.e. vim.dict(t) returns an empty dictionary, whereas the documentation says that it should return  {'say': 'hi'}
Here is the full vim version:
:version
VIM - Vi IMproved 8.1 (2018 May 18, compiled Jun 24 2018 20:34:08)
Included patches: 1-113
Compiled by pel@pel-cirrus7
Huge version without GUI.  Features included (+) or not (-):
+acl               +cursorshape       +job               -mouse_sysmouse    +scrollbind        +vertsplit
+arabic            +dialog_con        +jumplist          +mouse_urxvt       +signs             +virtualedit
+autocmd           +diff              +keymap            +mouse_xterm       +smartindent       +visual
-autoservername    +digraphs          +lambda            +multi_byte        +startuptime       +visualextra
-balloon_eval      -dnd               +langmap           +multi_lang        +statusline        +viminfo
+balloon_eval_term -ebcdic            +libcall           -mzscheme          -sun_workshop      +vreplace
-browse            +emacs_tags        +linebreak         +netbeans_intg     +syntax            +wildignore
++builtin_terms    +eval              +lispindent        +num64             +tag_binary        +wildmenu
+byte_offset       +ex_extra          +listcmds          +packages          +tag_old_static    +windows
+channel           +extra_search      +localmap          +path_extra        -tag_any_white     +writebackup
+cindent           +farsi             +lua               -perl              -tcl               +X11
+clientserver      +file_in_path      +menu              +persistent_undo   +termguicolors     +xfontset
+clipboard         +find_in_path      +mksession         +postscript        +terminal          -xim
+cmdline_compl     +float             +modify_fname      +printer           +terminfo          -xpm
+cmdline_hist      +folding           +mouse             +profile           +termresponse      +xsmp_interact
+cmdline_info      -footer            -mouseshape        +python/dyn        +textobjects       +xterm_clipboard
+comments          +fork()            +mouse_dec         +python3/dyn       +timers            -xterm_save
+conceal           +gettext           +mouse_gpm         +quickfix          +title
+cryptv            -hangul_input      -mouse_jsbterm     +reltime           -toolbar
+cscope            +iconv             +mouse_netterm     +rightleft         +user_commands
+cursorbind        +insert_expand     +mouse_sgr         -ruby              +vartabs
   system vimrc file: "$VIM/vimrc"
     user vimrc file: "$HOME/.vimrc"
 2nd user vimrc file: "~/.vim/vimrc"
      user exrc file: "$HOME/.exrc"
       defaults file: "$VIMRUNTIME/defaults.vim"
  fall-back for $VIM: "/usr/local/share/vim"
Compilation: gcc -c -I. -Iproto -DHAVE_CONFIG_H     -g -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1   -DEXITFREE -DABOR
T_ON_INTERNAL_ERROR
Linking: gcc   -L/usr/local/lib -Wl,--as-needed -o vim    -lSM -lICE -lXpm -lXt -lX11 -lXdmcp -lSM -lICE  -lm -ltinf
o -lnsl  -lselinux   -lacl -lattr -lgpm -ldl  -L/usr/lib -llua5.2

Dominique wrote:

This old message in Sep 2, 2012 from Luis Carvalho
had a patch which added support for vim.list([arg])
and vim.dict([arg]) with table argument:
https://groups.google.com/forum/#!msg/vim_dev/GufKvP2WQZw/R-2B5I1_i7kJ
The patch was applied to the documentation but somehow
never applied to if_lua.c which explains this issue.
The patch at that link unfortunately no longer applies
cleanly to the most recent vim-8.1.131.

Does it work after patch 8.1.0134?
--
You're as much use as a condom machine at the Vatican.
-- Rimmer to Holly in Red Dwarf 'Queeg'
/// Bram Moolenaar --<EMAIL_ADDRESS>-- http://www.Moolenaar.net   \
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \
\\  an exciting new programming language -- http://www.Zimbu.org        ///
\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

@brammool asked:

Does it work after patch 8.1.0134?

vim.list([arg]) now works. However, not exactly as documented for boolean in the list but it looks like the doc was wrong. Fixed in pull request https://github.com/vim/vim/pull/3130 fixes the documentation of vim.list([arg])

vim.dict([arg] also behaves differently than documented.  Doc says:
:lua t = {math.pi, false, say = 'hi'}
:echo luaeval('vim.dict(t)')
:" {'say': 'hi'}, numeric keys ignored
But It actually show:
{'1': 3.141593, '2': v:false, 'say': 'hi'}   (numeric keys not ignored)

Fixed in the latest runtime files update: fd35811ca528de7612f9571bce20ef4c392fe5f7


Request to export and download data for newly created bots

While exporting bot content from power apps. The newly created bot's contents(topics, phrases) are not getting updated in csv file(annotations, msdynce_botcontents), we are getting only default data(topics, phrases).
We have followed instructions mentioned in this document.
https://docs.microsoft.com/en-us/power-virtual-agents/gdpr-export
Here we have created Topic named NewTopic

After converting to .lu format we didn't found  newly created topicNewTpoic) here.

Yes, i'm also facing the same issue, the bot content is not updated even republished after add/delete topics from PVA.

Same with me, newly updated bot content is not getting retrieved in my exported csv file.

Hi all,
Are there any updates regarding this issue? As this becoming a major roadblock in our project. Or If there is any other channel to get help regarding this issue, please post here.

Did you guys got any update on this, I am  having the same issue I am not able to get any topic content.

Thanks for your questions! The best place for product troubleshooting - is the Power Virtual Agents forum at https://powerusers.microsoft.com/t5/Forums/ct-p/pva_forums - if you repost your questions there an engineer, PM, or someone with a similar issue/solution should be able to help you.

Thanks for your questions! The best place for product troubleshooting - is the Power Virtual Agents forum at https://powerusers.microsoft.com/t5/Forums/ct-p/pva_forums - if you repost your questions there an engineer, PM, or someone with a similar issue/solution should be able to help you.


Create chaffin.md

Hey, @chaffin !
Can you create your profile in that way now?
Sorry for that, but in that way will be much more easy for all of us :smile:

Eric,
Thank you for your email support. I really do not know what I'm doing in github. Tried following your first directions about forking, adding the student file, etc.
However, I'm not sure why my forked version does not match yours and believe my lack of understanding github is the reason.
I think this OSS is such an awesome idea. And, agree that it may be a disruptive movement.
Yesterday I enrolled in and began the HARVARD CS50. What? I cannot believe I am in a Hardvard class. You know I'm going to get me that $90 signed certificate.
Thanks again for your help, And this awesome format OSS format.

Larry
From: Eric Douglas<EMAIL_ADDRESS>

To: open-source-society/computer-science-and-engineering<EMAIL_ADDRESS>Cc: chaffin<EMAIL_ADDRESS>Sent: Monday, October 5, 2015 3:16 AM
Subject: Re: [computer-science-and-engineering] Create chaffin.md (#47)
Closed #47.—
Reply to this email directly or view it on GitHub.

@chaffin thank you for such amazing feedback!
We changed a bit the README file, for that reason your version with this, the original repository, is different. You have an old version of this.
But now you don't need to submit a file to this repository, just add your profile info in issue #31. Find that issue here.
If you have any problems, just let me know!
Let's do it together! :smile:


add "easy forth" and "learning apl"

What does this PR do?
Add resource(s)
For resources
Description

Learning APL
Easy Forth

Why is this valuable (or not)?
apl and forth are two languages which have few learning materials available, especially free ones (since these languages aren't as mainstream).
How do we know it's really free?
It is two books freely available online
For book lists, is it a book? For course lists, is it a course? etc.
It is two books available online
Checklist:

[x] Read our contributing guidelines
[x] Search for duplicates.
[x] Include author(s) and platform where appropriate.
[x] Put lists in alphabetical order, correct spacing.
[x] Add needed indications (PDF, access notes, under construction)

Follow-up

Check the status of GitHub Actions and resolve any reported warnings!

nice additions!
Thanks, and welcome to free-programming-books!


Expressive diagnostics

Rendered
This RFC calls for improvements in Sway warning and error messages.

One thing to agree on will be the guidelines for structuring messages, wording etc.. Here are three possible approaches (named by me, just that we can distinguish them):
The Elm approach
The one explained in the Compiler Errors for Humans article. Rich, friendly English, full sentences. Breaking the issue down in details through a story.

This is the approach I opted for so far in errors and warnings developed with the new Diagnostic. It is also the one suggested in the Concepts Error Messages for Humans paper.
Pros:

friendly, detailed, allows enough of context

Cons:

might be too wordy for experienced programmers (mitigated by the fact that the first, short, line should be enough ;-))

The Rust approach
Short, sometimes very technical, stripped of official grammar, focused on the point. E.g.:

Pros:

right to the point, communicating only the bare minimum, no clutter in wording, perfect for experienced programmers

Cons:

might be still too difficult to understand for non-experienced programmers

Fluent Rust approach
As suggested by @xunilrj in this comment. The idea is  that text in code snippet that is in the same color makes a readable sentence.

Pros:

the best of two approaches above

Cons:

might be difficult to always get the top-down reading; depending on the error, the pieces of code might be arbitrary scattered away and difficult to figure out how to order.

(x-posting from slack) In general I think we should trending towards fewer types of compiler warnings with fields for context/customized hints, rather than having many compiler warnings that basically mean the same thing but with a slight difference in context.
The large number of DeadX warnings for dead code is an example of this. In my perfect world, there would just be 1 DeadCode warning that has generic context fields for the type of dead code and other info, like the ident and verb.
I'm not sure if this is called out, but we should have a hosted documentation of all error codes, similar to rust's error code index. Every error diagnostic should link to the error code documentation. In my view, we should keep the compiler diagnostic output as short and simple as possible, with the detailed explanation of the error in the hosted docs. We shouldn't need an extra field for this since it would only rely on the mandatory error code.
If we're aligned on this, there's another clear benefit to having fewer error codes: less documentation to maintain!

I think we should trending towards fewer types of compiler warnings with fields for context/customized hints

Agree completely. Expressive means exactly that. One (preferably) warning/error with specific contextual explanation.
As with everything, sometimes adding a new error code will be easier then trying to customize hints, but as a general rule, deffinitely yes: less error code, more contextual explanation.

I'm not sure if this is called out, but we should have a hosted documentation of all error codes, similar to rust's error code index.

Yes, the RFC calls for this as well. That's one of the benefits comming from diagnostic codes, as pointed in the RFC, possibility to link it to the documentation or/and to have forc explain --ABC command.

In my view, we should keep the compiler diagnostic output as short and simple as possible

Here we need to strike a balance between the three options given above. I do see the examples I did so far, Elm inspired as too wordy. But Rust as too scarce. I see Sway targetting larger programmer's audience, many of whome will need more guidance.
My proposal here is to collect some more different examples and then see how they could look like in different approaches. Since I anyway have few issues in this area, that cover different things, I propose I demonstrate alternatives once the errors/warnings are implemented.

Thanks for the feedback so far!
Below is my homework out of your feedback :-)
The first point is crucial. It will be easier to discuss approaches if we can compare them.

[ ] Provide alternative examples for representative error messages:

[ ] Remove issue from the top and place it in code.
[ ] Reduce amount of information in help, formulate it in hints.
[ ] Demonstrate how the Fluent Rust approach might look like.

[ ] Propose how to map error code like W0001 to human readable like non_camel_case_types which can be used in #[allow()]s once we have them. E.g., #[allow(non_camel_case_types)]
[ ] Document that warnings can be treated as errors.
[ ] Extend guidelines:

[ ] Introduce new error codes restrictively. Reuse existing error codes. Use hints and help to communicate specific cases.
[ ] Use help rarely. Prefere hints. Leave help for longer suggestions.

I appreciate your thoughtful responses and the compiled list of action items!
Before implementing the new Diagnostic types, it would be ideal to document of all of the existing Error/Warning types mapped to the new Diagnostic type. It will be faster & easier to provide feedback on the documentation rather than individual PRs. To your point, it's easier to draw conclusions when looking at concrete examples.
It looks like we have 30 Warnings and 163 errors. I suspect we could cut down the number of errors significantly. Here are some classes of errors that could probably be represented with 1 diagnostic type.

DeclIsNotAX and NotAX
ImportPrivateX
UnknownX
MultipleDefinitionsOfX
Unimplemented and UnimplementedWithHelp - should there always be a help?
XNotAPartOfInterfaceSurface
DoesNotTakeTypeArgumentsX and TypeArgumentsNotAllowed
ImmediateXTooLarge
UnknownType and UnknownTypeName
RecursiveType and RecursiveTypeChain
XFromExternalContext

As soon as we add error codes, it will become harder to change/remove error types, so I think it's very important to review these up front.

Well, I appreciate your detailed feedback :bowing_man: :smile: It helps a lot. Thumb up for the upfront review, here is the issue to collect and track the proposals: https://github.com/FuelLabs/sway/issues/4985

@sdankel @JoshuaBatty @xunilrj All the bullet points listed above are integrated into the RFC. Thanks once again for your feedback!
The comparison of the two approaches for formulating error messages can be seen here.
After trying them I am definitively for the formulation proposed by Sophie and I integrated it into the RFC:

only reason in the header
issue in code
help preferably in code if possible
simpler sentences, right to the point

Regarding the fluent syntax, despite its appeal, it doesn't fit to diagnostics because of the following reasons:

It's difficult to get a fluent message in a general case. E.g., a shadowed constant can be both above and below the variable that shadows it. This completely changes the message. In an arbitrary case, getting the order right might be even impossible, even if we could structure a fluent message.
Having different parts in code in the color of the warning or error, e.g., yellow or red, is actually confusing because it blurs the actual line which causes the error. It is not immediately clear which part of the fluent sentence actually causes the warning/error and which is the context.
It doesn't play well with other clients of the diagnostics. E.g., in VS Code hint and VS Code Problems only disconnected fragments of the sentence would be visible, without the code they relate to. This makes them hard do understand and actually unusable.

Can you please accept the RFC or provide additional remarks if you have some?

@ironcev Sorry, I'm a bit too late to the table, however, do you have any plans to have different levels of diagnostics verbosity that Sway reports to the user?
For instance, a Forc.toml option could govern this and less experienced developers could have it at the, let's say, diagnostics_verbosity = standard and more experienced devs would set it to something like diagnostics_verbosity = terse.
This could probably be useful for CLI error reporting.

I'm a bit too late to the table

It's never too late to join the discussion 😄 Thanks for your feedback @anton-trunov!

do you have any plans to have different levels of diagnostics verbosity that Sway reports to the user

@sdankel pointed in that direction in our Slack discussion, but in a much more advanced way - having diagnostics that can be replaced by a single one depending on the verbosity level etc. We concluded that it would very likely not pay off.
Hiding some parts of the diagnostics is on the other hand trivial and we can easily implement it.
I say let's roll the diagnostics out and get the feedback. If experienced devs would like to have a terse output we can always add it it will be trivial.
My gut feeling, experienced devs will automatically look only for the yellow/red lines and visually ignore everything else. And if those lines do not immediately point to the solution, they will anyhow be happy to have the hints around.
And for the beginners, having expressive diagnostics with rich explanations will be one of the efficient ways to actually learn the language or at least part of it ;-)

Thanks @ironcev. Sounds like a great plan!


chore: release v1.530.0

fix: lp deposit balance checks (#6102)
fix: thorchain LP deposit invalidation (#6101)
feat: thorchain LP deposits (#6084)
revert: quote loading state (#6103)
feat: improve mm impersonator checks (#5896)

Noted while testing this release that on occasion when adding Metamask snaps that sometimes the BTC balance doesnt show. Noting it is transient, sometimes happens, sometimes doesnt but potentially something to be mindful of.
Discord testing thread: https://discord.com/channels/554694662431178782/1202073048728211457


feat: [redis-cluster] new module for redis-cluster

python3.9 generation/new_client/new-client.py generate \
  --api_shortname=redis-cluster \
  --proto-path=google/cloud/redis/cluster \
  --name-pretty="Google Cloud Memorystore for Redis API" \
  --product-docs="https://cloud.google.com/redis/docs" \
  --api-description="Creates and manages Redis instances on the Google Cloud Platform."

Redis team has preference for redis-cluster over rediscluster. api_short_name was redis but would have generated it as java-redis, which already exists.

Updated the product docs links to: https://cloud.google.com/memorystore/docs/cluster.
Will merge once checks are green.


Create button "New Account"

Description

  This component should open a dialog with the option to select a social network and save the corresponding API keys in a document. These saved keys will be used when posting content to the selected social networksomething.

Visual Information

mim de essa

 mim de essa

tá na mãoo


Mutiple section not woring for docx

I'm using the test input file: input-two-sections.md
Then I run the pandoc cmd in window: (I don't know how to install extention for pandoc, so I have to download this filter locally or is there any other way to install?)
pandoc -L abstract-section.lua input-two-sections.md -f markdown -t docx -o test1.docx
The output is:

All this filter does is to move the abstract sections to the metadata fields. As noted in the README, multiple abstracts will generally require custom templates. However, pandoc does not support custom templates for docx at the moment, so there isn't an easy way to make this work. Sorry.


Created install+configure script for Kpack/Eirini

Addresses #26
Co-authored-by: Caitlyn Yu<EMAIL_ADDRESS>

LGTM


ci: more IPv6 debugging

@zuercher PTAL. I would like to try this as a potential workaround/hack for the IPv6 issues.


No agent could be found with the following capabilities: DotNetFramework, Xamarin.iOS, sh

When I add a Task using the Config Transformation in MSBuild I get the following message when I try to Queue the build:
No agent could be found with the following capabilities: DotNetFramework, Xamarin.iOS, sh.
Is there some additional setup that needs to be done after installing from the marketplace to get around this issue?
Thanks!

Which OS and build agent version do you use?

We're running TFS 2018 on premise.

Two Mac mini's have a build agent with version 2.126.0 installed.
Looks like the official build number of TFS is Version 16.122.27102.1

Thanks for the help and excellent extension !

It doesn't support Mac build agents yet. Will be introduced soon.
Use #7 to track progress.

@sergeyzwezdin great plugin. I have no issue on win machine, but if i want to build ios app same error appears.


update this file >> bootstrap-fork.js

it will make the code much faster ,, we don't need to copy the any variable in an additional memory in this step
m = m+1
it means  , get m , then copy the value of it , then add 1 to the value , finally put the new value at m
and
m++
means the same as above
but
++m means add 1 to m directly
so it will save some good time

We do not accept PRs for style changes.


Add custom client option

If an existing redis client is passed into the options, it will be used instead of creating a new one.

also: https://github.com/florianheinemann/passwordless-redisstore/pull/12


PASCAL VOC results

Have anyones trained this code in pascal voc? I had implemented a version of tensorflow codes, but it performed slightly worsh compared with RetinaNet and FCOS. And there is my codes: https://github.com/JiXuKong/YOLOF

You can use our code to train a model on pascal voc firstly. If you have any problem, please let me know.


Make it possible to modularize JSDoc

In its current form, JSDoc is a monolithic command-line tool. This makes it almost impossible to provide a programmatic interface to JSDoc, or to allow users to reuse a small part of JSDoc (for example, its tag parser).
This issue describes some of the work that will need to be done before JSDoc can provide these features. The list below is not exhaustive and will grow over time.
I'm creating this list so that, if people are interested, they can work on fixing some of these issues. (If you want to tackle one of these issues, please check in with me first--that will help the process go more smoothly.)
In no particular order:

[ ] Logger architecture. Many parts of JSDoc now use the jsdoc/util/logger module to log various messages to the console. At a minimum, we should decouple the console logging from the rest of the module, which would be pretty easy. We should also consider supporting named loggers, and allowing clients to filter based on the name, which would be a bit more work.
[ ] Global variables. JSDoc stores various important things in two global variables, app and env. We should refactor JSDoc so it shares that state in a cleaner way, and so that modules within JSDoc don't depend upon the globals. (We can't just remove the globals from the JSDoc command-line tool, because some plugins and templates depend on them. We could certainly deprecate them, though...)
[ ] Settings. The only way to update JSDoc's settings is to muck about with the global env variable. We should provide a cleaner way to change the settings.
[ ] Hidden state. Some modules within JSDoc maintain hidden state for as long as the JavaScript process is running. That's not so great if (for example) you're calling JSDoc twice within a single Gulp script, and the state from the first run is affecting the state of the second run. We should identify and update all of the modules that maintain hidden state.

I've been trying to use jsdoc to generate documentation for an internal project (well, grunt-jsdox->jsdox->jsdoc3-parser->jsdoc), and have been annoyed at its performance in conjunction with jsdoc3-parser. As you mentioned in the first part of this thread, the live version provides no way to interface with the functionality in this system programmatically. Thus, jsdoc3-parser reads console output in order to "continue" processing. Because of how console output/stdout works (I believe), this was resulting in quite a few errors in parsing the console output (either because it wasn't received or it was incomplete when the jsdoc3-parser code took over).
I decided to fork jsdoc and modify that fork in such a way that it would be usable programmatically. That fork is located here. I haven't run the test code, as I don't have Java on my machine and really am not up to fighting IT to get it on here. However, I have used the programmatic version to generate the code for my project, and it seems to be working. (That's a long stretch from automated testing, obviously.)
Although you can review my commits for more information, I did the following:

Remove dependence on the global dump() function, as it was only used in a handful of places.
Remove dependence on the global app variable, as, again, it was only used in a handful of places.
Refactor much of the global env variable into lib/util/runtime.js
Refactor any portions of the env variable that were used infrequently into the modules that needed them the most. (For instance, only cli.js and a layout template used env.version, so I created a separate module for loading the version and required it in those files.)
Create an index.js file which exports a "class" with a constructor accepting a filename, a configuration object, and an options object, and which provides a createParser() function, a parseFiles() function, and a dumpResults() function.

Since, at the very least, these changes fixed the aforementioned concern of global variables, I figured I'd post this here to let you know. (Hopefully I didn't end up duplicating any effort...) I can do a pull request or something along those lines if you'd like.

@mnaughto Thanks for sharing your fork! I'd prefer not to merge your changes as-is, but I'd be happy to work with you on a pull request that factors the global variables into modules. (As I said above, we can't just remove the globals, because third-party templates and plugins depend upon them.) Please let me know if you're interested in revisiting this piece.
I'm not interested in exposing a more programmatic interface right now because it would necessarily be extremely limited, and I'd be stuck supporting it for a long time. My guess is that there's another way to fix the issue you were seeing with jsdoc3-parser.

+1
Between JSDoc & template's publish.js, a lot of the code overlap with what a task runner like gulp does.

I took a look at the first item in the checklist. I'm wondering why the logger has both methods that call either console.log (info, error, fatal ..) or process.stdout.write (printDebug, printInfo, printVerbose). Actually only printInfo seems to be used, and only in two different places. Could it be replaced by logger.info?

@theasta The difference is that process.stdout.write does not append a \n character to the output.
Feel free to get rid of printDebug/printInfo/printVerbose, though, since they only make sense in the context of the CLI. I'll remove the two existing callers in a moment.

Nice! I'm going to work on a more decoupled logger then. Do you want me to create a separate ticket?

@theasta Nah, feel free to use this one.


Run tests recurcively

I am using mocha with option --recursive to run all tests in all directories.
It does not work with mocha-parallel-test
my command looks like: ./node_modules/.bin/mocha-parallel-tests --reporter mocha-multi-reporters --max-parallel=1 --timeout=12000 -- recursive ./dist-rest/src
I am getting
AssertionError [ERR_ASSERTION]: No test files found
Is it possible to fix it? Or let me know what I am doing wrong
Thanks in advance

@qatechniker can you please try that with the latest (2.0.0) version of mocha-parallel-tests?

@1999 works now, thanks!


Remove background tasks from orchest webserver

Removes the concept of a background task from the orchest-webserver and thus the client, in favor of having the orchest-webserver use the dedicated git import endpoints from the orchest-api.

Not exactly sure if services/orchest-webserver/client/src/api/git-imports/useGitImportsApi.ts is needed