Add basic ability to send root certificates over ProxyConfig

TODO:

API, Istiod implementation
Tests  - I will update this PR with tests once ^ is complete

Skipping CI for Draft Pull Request.
If you want CI signal for your change, please convert it to an actual PR.
You can still manually trigger a test run with /test all

Skipping CI for Draft Pull Request.
If you want CI signal for your change, please convert it to an actual PR.
You can still manually trigger a test run with /test all


Bytes IO result in verification failed: NonZeroCumulativeSum

When I'm trying to write some bytes
let mut stdin = SP1Stdin::new();
let n = [1, 2, 3];
stdin.write_slice(&n);

and then read them like this
let n = sp1_zkvm::io::read_vec();

I get the following error:
thread 'main' panicked at src/main.rs:34:38:
verification failed: NonZeroCumulativeSum
stack backtrace:
   0: rust_begin_unwind
   1: core::panicking::panic_fmt
   2: core::result::unwrap_failed
   3: btc_sp1_script::main

A repo to reproduce (a slight modification to the quickstart example): https://github.com/akalmykov/btc_sp1
cargo prove --version
cargo-prove sp1 (14bd4b2 2024-03-30T00:16:34.204221449Z)

Ubuntu 22.04, x86

@akalmykov I encountered the same issue a couple of days ago, but it seems to be fixed on the latest master; probably worth a try!

Hi, yes this should work on the recent merges to main. Unfortunately sometimes bad stuff gets merged, we're activiely working on better CI that will fix this.


About using HMAC SHA-1 and HMAC SHA-256 in X-HUB-SIGNATURE header

Hello everyone,
I apologize if this causes any inconvenience. I have a question: I read the Subscriber Security documentation. In the document, it describes that the ServiceStack Webhook library uses the HMAC algorithm to create a signature in the X-HUB-SIGNATURE header. However, when I checked the library's code, it actually uses the HMAC SHA-256 algorithm, but the header indicates that the value starts with "sha1=". Even the description of the CreateHmacSignature function in the HmacUtils class states that the function returns a value calculated using the HMAC algorithm based on RFC3174 (which refers to the use of SHA-1). I have searched through the release notes and reviewed the git history, but I couldn't find any useful information regarding this discrepancy. I would really like to understand why the documentation and the header indicate the use of SHA-1, but SHA-256 is actually being used. Could anyone please clarify or provide any available information?
Thank you very much.

I think this is just an implementation mistake, and that the sha1= part should really be just sha256= simple as that.

I think this is just an implementation mistake, and that the sha1= part should really be just sha256= simple as that.

Oh, thank you for your support in helping me :D.


Add PKF

Project website: https://polkafoundry.com/
Etherscan: https://etherscan.io/token/0x8b39b70e39aa811b69365398e0aace9bee238aeb
CoinMarketCap: https://coinmarketcap.com/currencies/polkafoundry/ico/
Twitter: https://twitter.com/polkafoundry
Telegram:
Global: https://t.me/PolkaFoundry
Korean: https://t.me/Polkafoundrykor

Hi @huy187 - can you solve conflicts, please? I would like to merge this PR


2022.1 distro bombs

Version
2021.1
Operating System

[ ] Any
[ ] Linux
[X] macOS
[ ] Windows
[ ] Other Unix

OS Version
Ventura 13.1
Processor

[ ] Any
[ ] Arm (using Rosetta)
[X] x86-64 (64-bit)
[ ] Other

System Component
Installation
Severity
Major
Description
Starts, but then seg faults on anything.
Transcript

sml
Standard ML of New Jersey [Version 2022.1; 64-bit; August 25, 2022]

val x =3;
zsh: segmentation fault  sml

Expected Behavior
I'm old-fashioned, but I guess I was expecting it to respond
val x : int = 3
and accept more input.
Steps to Reproduce
Install and do what I said.
Additional Information
No response
Email address
<EMAIL_ADDRESS>

I get the same thing on @ProjectSavanna/setup-smackage#63 on macOS 11; it seems that 2022.1 only works on macOS 12. Here's the output trace from GitHub Actions trying to run the installation script go-nj.sml on macOS 11:
sml src/go-nj.sml
dyld: Symbol not found: __ZTTNSt3__114basic_ifstreamIcNS_11char_traitsIcEEEE
  Referenced from: /usr/local/smlnj/bin/.run/run.amd64-darwin (which was built for Mac OS X 12.0)
  Expected in: /usr/lib/libc++.1.dylib
 in /usr/local/smlnj/bin/.run/run.amd64-darwin

(The same thing succeeded on macOS 12, the macos-latest job.)

This issue is fixed in the 2023.1 version.


Publish metadata that describes the available files of a C++ library

Generate and publish a Gradle specific metadata file to the Maven modules produced by the maven-publish and cpp-library plugins, to describe the files that make up the library.
Currently, only a pom.xml is generated. While this can be used to describe the dependencies of the library, to some degree at least, it does not describe the files. This has some implications:

The consumer has to perform multiple resolves of a given set of dependencies, first to calculate the graph and a second time to find the artifacts. This is inefficient and is opaque to the reporting that we have and other build logic, including . The subsequent resolves are not visible to build scans (but this is really https://github.com/gradle/dotcom/issues/97). Resolving the runtime libraries for a component requires 3 resolves.
The consumer has to make assumptions about which files are available, which mean it cannot deal well with static, header-only, symbol-only or resource-only libraries.

This story adds a Gradle specific metadata file that is published along side the pom.xml to provide extra metadata.
Implementation:

[x] Add generation task only for C++ libraries for this story.
[x] Metadata includes api, link and runtime variants.
[ ] For each variant, list file name, url, size and hash.
[x] Add internal flag to enabled resolving using the metadata
[ ] Fetch metadata after fetching pom
[ ] Each variant listed in metadata is treated as variant of 'runtime' scope.
[ ] Remove some hackery from C++ plugin
[ ] Generation tasks run in parallel.
[ ] Update Maven publish plugin documentation.
[ ] DSL guide lists generation task.
[ ] Public design docs describe the format.
[ ] (maybe) don't download POM when metadata found.

Chores:

[ ] Fix issue where publish task dependency on generation task is not inferred.
[ ] Review the module artifact name.
[ ] Fix packaging in generated pom
[ ] Move construction of configurations/variants from plugin to domain object.

Test cases

[x] Metadata file is generated for a Maven publication
[x] Metadata file is generated for published C++ libraries and applications

Later

[ ] Public API to define custom component types.

The changes to generate the first version of the metadata file are in master. The file isn't used yet, that's next.

Specifically, those commits were:
https://github.com/gradle/gradle/compare/b279815977e0...b76067a5183e

This is blocked on https://github.com/gradle/gradle/issues/3009

This is done enough. Split out https://github.com/gradle/gradle/issues/3267 as something to fix later.


Feature Request: Documentation Screenshots

What
This is a request to add some screenshots to the documentation here:

https://wordpress.org/plugins/activitypub/

Why
It's very unclear what this plugin does and what it doesn't do
How
I can think of at least the following screenshots, which would be extremely elucidating:

Screenshot of the plugin's settings page(s) from the WP Admin Dashboard
Screenshot of the relevant plugin input fields when editing a Page, Post, etc
Screenshot of the ActivityPub feed page on the Wordpress site itself
Screenshot of the Wordpress site's ActivityPub feed as seen from within a federated users's Mastodon instance's WUI frontend
etc

@pfefferle Thanks for the progress on this!
I hear there's some Excerpt field that this plugin provides. Do you think you could include a screenshot of that too?


quantized model inference slow with Triton server than inference directly in python code(notebook)

I follow the guide quantization_end_to_end.ipynb to quantize my custom classification model base on Roberta-base-12layers and finally get the following Latency measures from different backend, the results looks good:
batch size = 1
seq_length = 128
device = GPU Tesla T4

[Pytorch (FP32)] mean=9.66ms, sd=0.19ms, min=9.38ms, max=10.08ms, median=9.60ms, 95p=10.07ms, 99p=10.08ms
[Pytorch (FP16)] mean=9.84ms, sd=0.25ms, min=9.77ms, max=12.27ms, median=9.80ms, 95p=9.93ms, 99p=10.01ms

[ONNX (FP32)] mean=8.41ms, sd=0.70ms, min=7.92ms, max=10.01ms, median=8.08ms, 95p=10.00ms, 99p=10.01ms
[ONNX (FP16)] mean=2.57ms, sd=0.07ms, min=2.40ms, max=3.10ms, median=2.57ms, 95p=2.62ms, 99p=2.63ms

[TensorRT (FP16)] mean=2.54ms, sd=0.46ms, min=2.32ms, max=3.94ms, median=2.39ms, 95p=3.92ms, 99p=3.93ms
[TensorRT (INT-8)] mean=1.98ms, sd=0.17ms, min=1.87ms, max=3.57ms, median=1.95ms, 95p=2.06ms, 99p=2.30ms

but after I deployed the ONNX FP16 model and TesorRT model (both FP16 and INT-8 ) with Triton Server and then do stress test with Jmeter , the result showed that TensorRT INT-8 model is not faster than FP16 model:
batch size = 1
seq_length = 128
threads = 20
GPU utilization between 93%~95%

Triton server with TensorRT INT-8 model, throughput = 398.7/sec
Triton server with TensorRT FP16 model, throughput = 399.1/sec
Triton server with ONNX FP16 model, throughput = 363.3/sec

I just wonder what's wrong with the Triton Server, is it has a "int8 inference" option and I didn't turn it on?

No there is no such parameter to enable int 8 on Triton.
What is threads = 20 ? (20 parallel calls?)

I noticed in the post that the speedup between TensorRT (FP16) and TensorRT (INT-8) is not as much as you @pommedeterresautee were observing, so I also finally tested the QAT with quantization_end_to_end.ipynb.
I only changed the model to distilroberta-base, batch size to 64 and sequence length to 60 (saving some GPU memory) and the difference between TensorRT (INT-8) and TensorRT (FP16) is much smaller than expected:
[TensorRT (INT-8)] mean=12.98ms, sd=2.28ms, min=10.95ms, max=19.48ms, median=11.97ms, 95p=18.75ms, 99p=19.16ms
[Pytorch (FP32)] mean=77.97ms, sd=1.88ms, min=75.02ms, max=86.88ms, median=77.59ms, 95p=81.05ms, 99p=85.38ms
[Pytorch (FP16)] mean=28.12ms, sd=1.49ms, min=26.31ms, max=40.46ms, median=27.79ms, 95p=29.96ms, 99p=31.88ms
[Pytorch (FP32) - CPU] mean=1048.36ms, sd=129.41ms, min=852.20ms, max=1352.36ms, median=1055.10ms, 95p=1244.75ms, 99p=1330.83ms
[Pytorch (FP16) - CPU] mean=975.21ms, sd=82.05ms, min=850.56ms, max=1185.23ms, median=970.42ms, 95p=1108.68ms, 99p=1169.92ms
[Pytorch (INT-8) - CPU] mean=762.29ms, sd=131.97ms, min=615.92ms, max=1017.71ms, median=725.51ms, 95p=1001.95ms, 99p=1014.56ms
[TensorRT (FP16)] mean=14.29ms, sd=0.72ms, min=13.14ms, max=16.57ms, median=14.26ms, 95p=15.91ms, 99p=16.09ms
[ONNX Runtime GPU (FP32)] mean=68.29ms, sd=6.04ms, min=59.02ms, max=108.15ms, median=66.85ms, 95p=74.73ms, 99p=95.05ms
[ONNX Runtime GPU (FP16)] mean=19.91ms, sd=0.76ms, min=18.07ms, max=22.27ms, median=19.99ms, 95p=21.02ms, 99p=21.43ms
[ONNX Runtime CPU (FP32)] mean=814.14ms, sd=80.10ms, min=723.20ms, max=959.46ms, median=802.24ms, 95p=939.93ms, 99p=955.55ms
[ONNX Runtime CPU (FP16)] mean=843.27ms, sd=51.34ms, min=767.65ms, max=963.77ms, median=830.62ms, 95p=931.32ms, 99p=957.28ms
[ONNX Runtime CPU (INT-8)] mean=788.20ms, sd=54.43ms, min=694.40ms, max=866.73ms, median=794.11ms, 95p=855.83ms, 99p=864.55ms

I also tested it for roberta-base with batch size 8 and sequence length 60 and observed the same:
[TensorRT (INT-8)] mean=3.88ms, sd=0.38ms, min=3.28ms, max=4.95ms, median=3.89ms, 95p=4.49ms, 99p=4.72ms
[Pytorch (FP32)] mean=20.60ms, sd=1.40ms, min=19.13ms, max=26.43ms, median=19.95ms, 95p=22.94ms, 99p=24.83ms
[Pytorch (FP16)] mean=9.28ms, sd=0.75ms, min=7.90ms, max=11.61ms, median=9.26ms, 95p=10.30ms, 99p=11.56ms
[Pytorch (FP32) - CPU] mean=602.23ms, sd=523.31ms, min=217.97ms, max=2097.06ms, median=407.48ms, 95p=1491.83ms, 99p=1976.02ms
[Pytorch (FP16) - CPU] mean=374.12ms, sd=178.85ms, min=188.02ms, max=668.18ms, median=285.60ms, 95p=666.44ms, 99p=667.83ms
[Pytorch (INT-8) - CPU] mean=266.94ms, sd=187.14ms, min=141.51ms, max=805.70ms, median=220.01ms, 95p=575.49ms, 99p=759.66ms
[TensorRT (FP16)] mean=4.88ms, sd=0.60ms, min=4.58ms, max=6.97ms, median=4.67ms, 95p=6.95ms, 99p=6.96ms
[ONNX Runtime GPU (FP32)] mean=18.09ms, sd=0.36ms, min=17.51ms, max=19.29ms, median=18.02ms, 95p=18.82ms, 99p=19.26ms
[ONNX Runtime GPU (FP16)] mean=5.41ms, sd=0.23ms, min=5.20ms, max=6.77ms, median=5.34ms, 95p=5.86ms, 99p=6.16ms
[ONNX Runtime CPU (FP32)] mean=147.14ms, sd=3.54ms, min=143.84ms, max=155.57ms, median=145.71ms, 95p=153.48ms, 99p=155.16ms
[ONNX Runtime CPU (FP16)] mean=249.77ms, sd=10.18ms, min=237.83ms, max=271.52ms, median=247.37ms, 95p=268.42ms, 99p=270.90ms
[ONNX Runtime CPU (INT-8)] mean=152.41ms, sd=23.31ms, min=133.53ms, max=206.09ms, median=142.05ms, 95p=198.43ms, 99p=204.55ms

The experiments are done on a mobile RTX 2080, so I'm a bit limited wrt the memory and cannot test large sequence lengths. I was wondering @pommedeterresautee, if you have any intuition of why I do not experience ~2x speedup with INT-8. Can it be the sequence length?
Unlike @Jaeker0512, however, I see that speedup also in triton, but I'm not using a batch size of 1 (rather 64 or more).


Feature-request: cloud build triggers

It might be nice to show users how to set up automatic builds when they push commits to their fork of this repository.

Possible duplicate of issue #31 was fixed by PR #34


Add the ability to configure admin templates

Right now, since getTemplates and getTemplate($name) in AbstractAdmin re both deprecated, the only way to configure template is using the service definition. Using the annotation, this is a no-sense (just defining a service to change a template).
Templates support can be added this way:
/**
 * @Sonata\AdminOptions(
 *     templates={
 *         "notify": "admin/category/notify.html.twig"
 *     }
 * )
 */
class CategoryAdmin extends AbstractAdmin
{
}

Strange thing is that https://github.com/sonata-project/SonataAdminBundle/blob/3.x/src/Admin/AbstractAdmin.php#L1212 isn't deprecated :thinking: why is the get deprecated then, it could still delegate to registry

cc @greg0ire @OskarStark anyone remembers?

@kunicmarko20 I think setTemplates will not be (It's the way to set templates, that will call TemplateRegistry). But when reading, we should use TemplateRegistry instead.

Seems strange, that setter is still there but getter isn't. I would rather see both there or none.

I don't remember, sorry… @timobakx, maybe you do?

@greg0ire I think there were some users that depended on that method for their system to work and made us revert that specific deprecation.


Shadow Pen / General Subtile Support

Sub-tile targetting support for the tools is needed for making the shadow/region editing tools sane for VXA, and for any work on improving deep-water editing (which would allow the outright removal of some of the deep-water tiles from the AT selector that would become redundant, and hugely simplify deep-water editing)
Deep-water editing will probably need its own rectangle/fill/pen tools, though. "More abstractification" time I suppose ; all of these backend-specific tools are already giving me the shivers.
...I think the idea for deep-water/shadow-pen editing was originally brought up by @rohkea but I'm not sure where. Do correct me if I'm wrong.

Will basically be done after I finish cleaning up this code.

Counting this as done for now.


How to deal with instructions with different number of address

Nice work.
However, there are also some questions about the instruction embedding. I hope to get your answer.
The practice of instruction embedding in your paper is the opcode times TF-IDF weight, and concat the average of operands. For example, if the dimension of a single opcode or operand is 64, the final dimension of instruction is 64+64=128 (I hope I understand correctly).
However, there are some opcode with none operand such as 'retn', 'pusha', 'popa', 'cdq', etc. How did you deal with such instructions? Ignore or concat a zero embedding as operands?
Thanks.

Hi Thanks for your interest. We concat a zero embedding as operands in this case.

Ok, I get it now. Thank you for your prompt reply.


[HOTFIX] Fix streaming issue of 2.3 CI

[x] Any interfaces changed?
no

[x] Any backward compatibility impacted?
no

[x] Document update required?
no

[x] Testing done
Please provide details on
- Whether new unit test cases have been added or why no new tests are required?
change testcase
- How it is tested? Please attach test report.
- Is it a performance related change? Please attach the performance test report.
- Any additional information to help reviewers in testing this change.

[x] For large changes, please consider breaking it into sub-tasks under an umbrella JIRA.
small changes

Build Success with Spark 2.1.0, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder2.1/191/

Build Success with Spark 2.1.0, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder2.1/194/

Build Success with Spark 2.2.1, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder1/363/

Build Success with Spark 2.3.1, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder2.3/8432/

LGTM


Okex api error 10007 - "Signature does not match"

When I'm trying to make an Okex api call (for example GetAmountsAsync) I get error 10007 - "Signature does not match" as a response. Howerer if I try this api implementaion:
https://github.com/okcoin-okex/open-api-v3-sdk
then it works fine with the same api key credentials

Thanks for filing this bug. If you send a pull request with the solution, we'll be happy to merge it. If you don't know how, you can also post the updated code here.

I found the source of this error. It happens because I try to use okex api v3 (which is apparantly not supported yet by this library). I can still use api v1, but okex says they will turn off v3 by the end of this month, which means that we won't be able to use okex with this library anymore

Good find. If you want to update the methods important to you to V3, I can merge those changes. In the meantime, I'll probably release a new NuGet today.

@vslee, we can close this one.


Fix run go server

Error executing:
$ ./server.go
fish: Unknown command. './server.go' exists but is not an executable file.
$ ls -l
total 12720
-rw-r--r--@ 1 joao  staff      175 Oct 14 12:04 go.mod
-rw-r--r--@ 1 joao  staff      499 Oct 14 12:04 go.sum
-rwxr-xr-x@ 1 joao  staff  6499714 Oct 14 12:11 server*
-rw-r--r--@ 1 joao  staff      209 Oct 14 12:10 server.go

Thank you! Yeah, there's a whole lot a bit off in this tutorial, could benefit from an overhaul :)


Test reductions handling of axis=()

[ ] Tests added / passed
[ ] Passes flake8 dask

Raised issue ( https://github.com/dask/dask/issues/4996 ) to track the failure seen here.

Handled in PR ( https://github.com/dask/dask/pull/5025 ).


Fix visibility of KSC team. Fixes #660

Fixes https://github.com/kubeflow/internal-acls/issues/660

@kubeflow/kubeflow-steering-committee


RunInTransactionAsync obsolete

Hi @praeclarum
I would like to use RunInTransactionAsync with a SQLiteAsyncConnection but appears an "obsolete" warning". It seems I can use RunInTransactionAsync only with SQLiteConnection (not "async"). Is it correct?
Thanks
Alessandro

Yes. Using the async version of the connection could lead to a deadlock.
Here  is the obsolete line statement

Ok, I have read it, but how can i use Transaction in a AsyncConnection? Should I not use AsyncConnection at all?

You could do something like that:
asyncConnection.RunInTransactionAsync(nonAsyncConnection =>
{
	foreach (var item in items)
	{
		nonAsyncConnection.InsertOrReplace(item);
	}
});

If you use non-async methods on the connection parameter, the compiler will not complain about the ambiguity.
Hope this helps!

@Weldryn has the right usage.
Now that I look at it, it doesn't seem so intuitive, but that's the price we're currently paying for correctness.

f

Hmm. For a xamarin application, wouldn't using the SQLiteConnection for a database synchronization activity still lock the UI. I'm just trying to avoid having the UI lock, and this seems to be doing just that.

@danielPollackGitHub
Not at all. The outer connection is asynchronous. That is why the method is
named 'RunInTransactionAsync' : it runs the commands you set inside
lambda through
a synchronous connection as an asynchronous transaction. The inner
connection used inside the transaction is the one being used asynchronously.
It does not make sense to use an asynchronous connection inside an already
asynchronous transaction.
Hope this helps !
P.S. it could freeze your UI only if you would use the 'SQLiteConnection'
in the UI context and at the same time because of the transaction. However
doing CPU intensive or I/O bound work on the UI context is most of the time
a bad idea, if you ask me...
On Tue, 21 Aug 2018, 19:10 danielPollackGitHub<EMAIL_ADDRESS>wrote:

Hmm. For a xamarin application, wouldn't using the SQLiteConnection for a
database synchronization activity still lock the UI. I'm just trying to
avoid having the UI lock, and this seems to be doing just that.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/praeclarum/sqlite-net/issues/699#issuecomment-414769769,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AcWbQvBps2z7okCMeHFXFeh7BUQOL4p3ks5uTE0wgaJpZM4SeoG1
.


Release zipkin with updated netty for CVE-2022-24823 and CVE-2021-43797

Describe the Bug
Image being flagged with CVE-2022-24823 and CVE-2021-43797
Steps to Reproduce
Scan the image with Azure Defender
Expected Behaviour
This vulnerability were published 05/06/2022 and 07/25/2022. Should be fixed.
Refs:
https://nvd.nist.gov/vuln/detail/cve-2022-24823
https://nvd.nist.gov/vuln/detail/CVE-2021-43797
Netty 4.1.77 or greater fixes both issues

Done https://github.com/openzipkin/zipkin/releases/tag/2.23.19


make fails due to unformatted code

Master as of now:
$ make
>> checking code style
! gofmt -d $(find . -path ./vendor -prune -o -name '*.go' -print) | grep '^'
diff -u ./ui/bindata.go.orig ./ui/bindata.go
--- ./ui/bindata.go.orig	2018-08-06 13:36:19.809656858 +0200
+++ ./ui/bindata.go	2018-08-06 13:36:19.809656858 +0200
@@ -392,9 +392,9 @@

 // _bindata is a table, holding each asset generator, mapped to its name.
 var _bindata = map[string]func() (*asset, error){
-	"ui/app/script.js":                                                  uiAppScriptJs,
-	"ui/app/index.html":                                                 uiAppIndexHtml,
-	"ui/app/favicon.ico":                                                uiAppFaviconIco,
+	"ui/app/script.js":   uiAppScriptJs,
+	"ui/app/index.html":  uiAppIndexHtml,
+	"ui/app/favicon.ico": uiAppFaviconIco,
 	"ui/app/lib/bootstrap-4.0.0-alpha.6-dist/css/bootstrap.min.css":     uiAppLibBootstrap400Alpha6DistCssBootstrapMinCss,
 	"ui/app/lib/bootstrap-4.0.0-alpha.6-dist/css/bootstrap.min.css.map": uiAppLibBootstrap400Alpha6DistCssBootstrapMinCssMap,
 	"ui/app/lib/font-awesome-4.7.0/css/font-awesome.css":                uiAppLibFontAwesome470CssFontAwesomeCss,
Makefile.common:45: recipe for target 'style' failed
make: *** [style] Error 1

This isn't uncovered by CI since CI isn't running make. Is there a reason it doesn't?

Which Go version? It doesn't fail for me with go1.10.3. The check is executed by TravisCI (but not Circle CI):
https://travis-ci.org/prometheus/alertmanager/builds/412627785#L579

The latest Go version has a different gofmt output, and they say in their docs that they don't recommend putting gofmt into CI tests because the exact formatting can change over time.
I'm not sure what to do because we also want to ensure that someone formatted their Go code at all. Maybe we should enforce using the gofmt from the latest Go release? That would also ensure that files don't flip-flop back and forth between people with different Go versions.

I think the current situation is mostly ok. We build AlertManager/Prometheus/... with the latest stable Go version (unless it introduces a regression, eg node_exporter). Whenever Go 1.11 is released, someone will update the CI pipelines accordingly and run gofmt as part of the PR (and if it's forgotten, Travis CI will catch it).
Am I missing something?

@simonpasquier That sounds ok to me, the missing bit would be clarifying better to people that a specific Go version's gofmt is needed. In the CI error output, and/or beforehand elsewhere.


Publish the client as a .NET Core global tool

https://docs.microsoft.com/en-us/dotnet/core/tools/global-tools
It makes it easier to consume for developers.

@Lxiamail any way we could prioritize this?

@terrajobst I planned to work on some report related improvement work items first since we have heard some customer feedback. Have we hears customer requests for this issue? If so, we can certainly prioritize this.

The benefit of doing it this way is that customers can get updates more quickly. Many people are still confused on how to acquire it. I keep getting pinged on why it's not a Global Tool yet.
@KathleenDollard @danroth27

@terrajobst This is definitely something that we should do soon.

If it is a .NET Core shared framework dll, then creating a global tool is a fairly painless process, although creating a signed build (required) may not be.
If it is a shared framework dll already, I can help with the syntax of the CLI and naming, and with the System.CommandLine parser. With this, I think the work to create the tool will be smallish.
If I tis not a shared framework dll, that would be a problem.

@KathleenDollard It is not shared framework dll. It is only released in a zip file from this repo. That is the pain point that we want to address.

@KathleenDollard is https://docs.microsoft.com/en-us/dotnet/core/tools/global-tools-how-to-create the document that I should follow to create a global tool?

That is a good start. I am working on another document for MSFT authored tools. Here are additional comments.

All .NET (Global) Tools are framework dependent executables
*   We are working on guidelines for 2.1/3.0. Suggest testing on both and Muti-targeting
Highly recommend you create your help in word or markdown first
*   It should parallel dotnet --help
*   I highly recommend you review this syntax with me for consistency
Highly recommend you use System.CommandLine for parsing. See https://github.com/dotnet/command-line-api
*   Jon Sequeira can answer questions
Signing is required. William Li may be able to help some
The package name must be prefixed with "Microsoft". You must also reserve the non-Microsoft prefixed version.

I'm happy to schedule some time with you on this. I am out Friday and next week. I come in early if you are an early person.

From: Alicia Li<EMAIL_ADDRESS>Sent: Friday, July 12, 2019 4:14 PM
To: microsoft/dotnet-apiport<EMAIL_ADDRESS>Cc: Kathleen Dollard<EMAIL_ADDRESS>Mention<EMAIL_ADDRESS>Subject: Re: [microsoft/dotnet-apiport] Publish the client as a .NET Core global tool (#668)
@KathleenDollardhttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FKathleenDollard&data=02|01|kathleen.dollard%40microsoft.com|50a41ffbf02043afbdf208d7071eb26f|72f988bf86f141af91ab2d7cd011db47|1|0|636985700733592562&sdata=CxVXFnq3Jkdl811jVB9YWtPTxxOtucHrAW1CNXoQPfw%3D&reserved=0 is https://docs.microsoft.com/en-us/dotnet/core/tools/global-tools-how-to-createhttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fdotnet%2Fcore%2Ftools%2Fglobal-tools-how-to-create&data=02|01|kathleen.dollard%40microsoft.com|50a41ffbf02043afbdf208d7071eb26f|72f988bf86f141af91ab2d7cd011db47|1|0|636985700733602557&sdata=nIkG6lCS77b6BogJjR%2FpRdI8KC0aPXZ5ZvrvTrTdQ6c%3D&reserved=0 the document that I should follow to create a global tool?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fmicrosoft%2Fdotnet-apiport%2Fissues%2F668%3Femail_source%3Dnotifications%26email_token%3DABMS2XQC7LWMQH2JZZT76Z3P7EF5NA5CNFSM4FCXCGD2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODZ3CR5A%23issuecomment-511060212&data=02|01|kathleen.dollard%40microsoft.com|50a41ffbf02043afbdf208d7071eb26f|72f988bf86f141af91ab2d7cd011db47|1|0|636985700733612552&sdata=qwmze54DiZlej%2BDZ5S5EUcpx%2BTIyI5a%2FYc1zZsUdivg%3D&reserved=0, or mute the threadhttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FABMS2XUMQRQI2ZQML7Y65MDP7EF5NANCNFSM4FCXCGDQ&data=02|01|kathleen.dollard%40microsoft.com|50a41ffbf02043afbdf208d7071eb26f|72f988bf86f141af91ab2d7cd011db47|1|0|636985700733612552&sdata=Zn9Dabx1%2FvKz%2BgDnT%2BZn2mEPu8KBPMU7iRO7fINuSjI%3D&reserved=0.

@KathleenDollard I have created a PR https://github.com/microsoft/dotnet-apiport/pull/790 for this. Somehowever I can add you as reviewer.

Closing as API Port was deprecated in favor of binary analysis in .NET Upgrade Assistant.


fix cursor gsettings on session change

Describe your PR, what does it fix/add?
when changing session gsettings cursor-theme can be changed
this resets it to what we want when switching back
Is there anything you want to mention? (unchecked code, possible bugs, found problems, breaking compatibility, etc.)
Is it ready for merging, or does it need work?
yes

instead of moving it all to CCursorManager when its a kinda xcursor only feature, why not just make the syncGsettings public in XCursoManager, and the function in CCursorManager does m_pXCursor->syncGsettings(..)

yeah didn't look into it too far and thought it wasnt related to xcursor

wait is this ready


Incorrect documentation for HttpDispatchError

The doc comment says
/// An error produced when invalid request types are sent.

But this error is also generated for network errors like connection reset by peer etc, at least.

Nice catch! I'm surprised that's been incorrect for so long.  Looks like an easy fix!

Not that easy for me, I'd have to study the code to find everywhere it's used.


refactor(connlib): read from device as part of eventloop

As a next step in refactoring the tunnel implementation, I am removing the device_handler task and instead use a poll-based function to read from the device. Removing the task means there is one less component that accesses the Tunnel via shared-memory. The final one after this PR is the peer_handler.
Once all shared-access is gone, we can stop using Arc<Tunnel> and with it, remove all uses of Mutex in the tunnel and simply use &mut self.
To remove the device_handler, we introduce a Device::poll_read function that we call as the very first thing in the Tunnel's poll-function. At a later point, we want to think about prioritization within the event loop. I'd suggest deferring that until we have removed the locks as handling the guards is a bit finicky at this stage.

@conectado This is now passing tests and ready for review.

@conectado This is now passing tests and ready for review.

Just saw that I made one mistake in fixing up the commits so two have the same message. Not sure if it matters much though.

Rebased onto latest master.


[Workers] update more handlers for satisfies ExportedHandler

Followup from https://github.com/cloudflare/cloudflare-docs/pull/14007. Some were missed/added recently.

Code style linting/formatting (etc.) is definitely something I'd love to see too: https://github.com/cloudflare/cloudflare-docs/issues/7798. Hopefully something that can be added in future 🤞


style(demo): prefix css w/ demo- & use roboto

R: @kara @hansl
The motivation behind the demo- prefix is so that people can look at the demos and Inspect element and immediately see which styles are from the component itself and which are part of the demo. This was a big problem in material1 where people would have a hard time discerning between the two.

LGTM


In serve_dir, only strip the prefix from the start of the path once.

Currently, serve_dir is using str::trim_start_matches, which may strip the prefix multiple times.
I've changed this to use strip_prefix, which will only strip it once.
I think this unwrap is okay, because the prefix is guaranteed to be there. Do tell me if I'm wrong.

It looks like this failed spuriously due to a transient CI issue.


Set TLSv1.2 as minimum version TLS protocol

Stop to use insecure TLS version protocols and set TLSv1.2 as minimum.
TLSv1.1 and older were already deprecated and it should be dropped.

@stevesloka PTAL :bow:

Hey folks, are there any plans to merge this PR soon? Thanks!


Setup command fails, deploy fails

Hi. I followed the instructions in the documentation to generate and add the keys. A key was generated and stored in the ~/.ssh/ folder but the provisioning of the key failed. The error message received was:
Running command => ansible-playbook server.yml -e env=staging
ERROR! couldn't resolve module/action 'community.general.alternatives'. This often indicates a misspelling, missing collection, or incorrect module path.

The error appears to be in '/media/username/Work/example.com/trellis/roles/php/tasks/main.yml': line 17, column 3, but may
be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:

- name: Ensure correct PHP version selected
  ^ here
exit status 4

however, running trellis provision --tags users staging completed successfully. I believe when I ran the trellis key generate && gh secret set ANSIBLE_VAULT_PASSWORD -b $(cat trellis/.vault_pass) && gh secret set TRELLIS_SITE_SLUG -b example.com command, it did not load the correct ansible version from my trellis virtualenv.
Anyway, I went ahead and committed the actions to the repository. However, deployment fails.

The good news is that this project is designed as a boilerplate to be modified to fit your needs!

@MWDelaney , I am using trellis as described in the docs though. I spin up my projects using trellis-cli and running trellis new, and I keep them organized as two git repos instead of a single one with subrepos. Is that the issue, is it set up right now for a single repository?
If you happen to have an example project I can look at to adapt, it would help a lot :pray:

What is your typical deployment process? Do you have a script or a series of commands that you run to clone the repo and its subrepos and then execute a deployment with Trellis CLI?

Hi @MWDelaney . I set up projects using trellis new domain.com, then separately init each repo and store them in github as site and trellis. Then with them set up I trellis init the project and then trellis provision && trellis deploy. I kind of assumed that was the vanilla way.


Example project

Please create full example project, it's quite hard to setup out of the box without reading the code.

There are 2 way for setting up.

Auto-discover: just put your *.proto files in your project folder & it would works.
Manual add: refer README_auto-discover

For example project, you can view the Tests folder
I think a more details document could help. Would you mind to figure out which part is the hardest to you to establish the project out of the box?


Multifile editor refactor

While working on https://github.com/freeCodeCamp/freeCodeCamp/pull/47463 I ran into an issue where the props get 'stuck' on old values.  What happens is that not every function is recreated on each render. If that function closes over props, then whatever values props had on creation are used whenever the function is invoked (i.e. they're bound). Since the props may have changed by this point, the bound props can easily be incorrect.
Since this is quite tricky to debug, I think we should avoid using props directly inside functions (since we don't know how future devs will use those functions).  Instead, it would make sense to have a single propsRef and use that everywhere.

Hi @ojeytonwilliams, I would love to give this issue a shot - I reviewed #47463 that you mentioned and I believe I have a good understanding of the problem you bring up here. I just have a clarifying question before jumping into it - you have titled this issue "Multifile editor refactor" but the changes you are proposing here are for the editor.tsx file not the multifile-editor.tsx file under client/src/templates/Challenges/classic/editor.tsx, correct? Or have I misunderstood? Thanks!

Hey @MikeKochendorfer thanks for looking into this.  You've understood this correctly - it is editor.tsx that contains the majority of the editor code.  multifile-editor.tsx is basically just a wrapper around all the editors.

I'm not entirely sure this is the way to go.  When I have more time, I'll circle back to refactoring the editor, but I think this can be closed.


skyit extractor broken

DO NOT REMOVE OR SKIP THE ISSUE TEMPLATE

[X] I understand that I will be blocked if I remove or skip any mandatory* field

Checklist

[X] I'm reporting a broken site
[X] I've verified that I'm running yt-dlp version 2022.10.04 (update instructions) or later (specify commit)
[X] I've checked that all provided URLs are playable in a browser with the same IP and same login details
[X] I've checked that all URLs and arguments with special characters are properly quoted or escaped
[X] I've searched the bugtracker for similar issues including closed ones. DO NOT post duplicates
[X] I've read the guidelines for opening an issue
[X] I've read about sharing account credentials and I'm willing to share it if required

Region
Italy
Provide a description that is worded well enough to be understood
yt-dlp can't get the hls stream while the browser can.
In the past this type of URLs use to work.
Provide verbose output that clearly demonstrates the problem

[X] Run your yt-dlp command with -vU flag added (yt-dlp -vU <your command line>)
[X] Copy the WHOLE output (starting with [debug] Command-line config) and insert it below

Complete Verbose Output
[debug] Command-line config: ['--no-config', '-v', 'https://video.sky.it/xfactor/puntate/video/hot-factor-2022-live-1-787593']
[debug] Encodings: locale UTF-8, fs utf-8, pref UTF-8, out UTF-8, error UTF-8, screen UTF-8
[debug] yt-dlp version 2022.10.04 [4e0511f27]
[debug] Python 3.7.3 (CPython 64bit) - Linux-4.19.0-22-amd64-x86_64-with-debian-10.13 (glibc 2.28)
[debug] Checking exe version: ffmpeg -bsfs
[debug] Checking exe version: ffprobe -bsfs
[debug] exe versions: ffmpeg 4.1.9-0, ffprobe 4.1.9-0, phantomjs ., rtmpdump 2.4
[debug] Optional libraries: Cryptodome-3.15.0, brotli-1.0.9, certifi-2018.08.24, mutagen-1.45.1, pyxattr-0.6.1, secretstorage-2.3.1, sqlite3-2.6.0, websockets-9.1
[debug] Proxy map: {}
[debug] Loaded 1701 extractors
[debug] [video.sky.it] Extracting URL: https://video.sky.it/xfactor/puntate/video/hot-factor-2022-live-1-787593
[debug] [player.sky.it] Extracting URL: https://player.sky.it/player/external.html?id=787593&domain=sky
[player.sky.it] 787593: Downloading JSON metadata
[player.sky.it] 787593: Downloading f4m manifest
WARNING: [player.sky.it] Unable to download f4m manifest: HTTP Error 404: Not Found
[player.sky.it] 787593: Downloading m3u8 information
ERROR: 'NoneType' object has no attribute 'group'
Traceback (most recent call last):
  File "/usr/local/lib/python3.7/dist-packages/yt_dlp/YoutubeDL.py", line 1478, in wrapper
    return func(self, *args, **kwargs)
  File "/usr/local/lib/python3.7/dist-packages/yt_dlp/YoutubeDL.py", line 1554, in __extract_info
    ie_result = ie.extract(url)
  File "/usr/local/lib/python3.7/dist-packages/yt_dlp/extractor/common.py", line 674, in extract
    ie_result = self._real_extract(url)
  File "/usr/local/lib/python3.7/dist-packages/yt_dlp/extractor/skyit.py", line 75, in _real_extract
    return self._parse_video(video, video_id)
  File "/usr/local/lib/python3.7/dist-packages/yt_dlp/extractor/skyit.py", line 49, in _parse_video
    hls_url, video_id, {'http': 'videoplatform.sky.it'})
  File "/usr/local/lib/python3.7/dist-packages/yt_dlp/extractor/common.py", line 3343, in _extract_akamai_formats
    fmts, subs = self._extract_akamai_formats_and_subtitles(*args, **kwargs)
  File "/usr/local/lib/python3.7/dist-packages/yt_dlp/extractor/common.py", line 3385, in _extract_akamai_formats_and_subtitles
    qualities = re.match(REPL_REGEX, m3u8_url).group(2).split(',')
AttributeError: 'NoneType' object has no attribute 'group'

Fixed.

Tested nixxo PR with same URLs and it works.


fixed typo

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


Make NasmCodeGeneratorTestBase "final" and change all its public methods to be static

So no other test class extends it, but can still use its methods.
And while you're at it, move it to the https://github.com/dplassgit/d2lang/tree/trunk/src/com/plasstech/lang/d2/codegen/x64/testing directory (which does not exist yet. See also issue #274).

https://github.com/dplassgit/d2lang/blob/trunk/test/com/plasstech/lang/d2/codegen/x64/NasmCodeGeneratorTestBase.java for reference


[web] skip more perspective text tests

Skip time picker golden tests that also apply perspective to text. This seems to have started with CanvasKit 0.37.0.
See: https://github.com/flutter/flutter/issues/111398

All relevant tests passed. Merging to unbreak the build.


[mono|bi]allelic_predicate function signature

Currently, we have this
gt_predicate = monoallelic_predicate(a_predicate=is_missense,
                                     b_predicate=~is_missense,
                                     names=("missense", "other"))

But it is not clear how the names relate to the predicates without reading the documentation. It would be clearer to have this
gt_predicate = monoallelic_predicate(a_predicate=is_missense,
                                     b_predicate=~is_missense,
                                     a_name="missense",
                                     b_name="other"))

Fixed in #307


Fix session warning

fixes warning:
lib/manageiq/session.rb:47: warning: Using the last argument as keyword parameters is deprecated;
maybe ** should be added to the call

not sure if we want to split the helper to have 2 methods (args and keywords/options)
Or if we want to move the VMDB call into this class.
WIP: This is more of a conversation starter PR

WIP: all set
updated the way we construct args.

UPDATE: made that suggestion and typo fix.
@NickLaMuro @Fryguy Let me know if there is anything else you need


Slow/flaky TypeScript code intel on Microsoft/vscode

The TypeScript repo I use most is https://sourcegraph.com/github.com/Microsoft/vscode. This is a huge TS repo, so it's a good test case. You should be able to repro by going to https://sourcegraph.com/github.com/Microsoft/vscode/-/blob/src/vs/editor/common/modes/languageFeatureRegistry.ts#L96:2 and hovering over anything. Any other TS file should work, too. (vscode.d.ts is another one I often browse and see slowness on.)

It takes a long time for the first hover to show up, like 60+ seconds. If I reload the page, I need to wait that whole time again (which I expect because I know the impl, but as a normal user I wouldn't like/expect). And sometimes it "loses it" and requires me to wait the whole time over again, possibly because the connection dropped or the server crashed.
Just now, it took a long time for the hover to show up, then it went away. The devtools console says:

sserver] Err 61    [9:14:30.966] Exception on executing command {"command":"quickinfo","seq":30,"type":"request","arguments":{"file":"/home/node/cache/lang-typescript-7644d599c5-hptcr/7f2e0180-e97f-11e8-a876-4d7828e8a36c/repo/src/vs/editor/common/modes/languageFeatureRegistry.ts","line":96,"offset":2}}:
936-felixfbecker-lang-typescript.js?bpubhqspofk8--felixfbecker-lang-typescript:502 TypeScript server [tsserver]
936-felixfbecker-lang-typescript.js?bpubhqspofk8--felixfbecker-lang-typescript:502 TypeScript server [tsserver]     No Project.
936-felixfbecker-lang-typescript.js?bpubhqspofk8--felixfbecker-lang-typescript:502 TypeScript server [tsserver]
936-felixfbecker-lang-typescript.js?bpubhqspofk8--felixfbecker-lang-typescript:502 TypeScript server [tsserver]     Error: No Project.
936-felixfbecker-lang-typescript.js?bpubhqspofk8--felixfbecker-lang-typescript:502 TypeScript server [tsserver]         at Object.ThrowNoProject (/srv/node_modules/typescript/lib/tsserver.js:119589:23)
936-felixfbecker-lang-typescript.js?bpubhqspofk8--felixfbecker-lang-typescript:502 TypeScript server [tsserver]         at ProjectService.doEnsureDefaultProjectForFile (/srv/node_modules/typescript/lib/tsserver.js:121932:131)
936-felixfbecker-lang-typescript.js?bpubhqspofk8--felixfbecker-lang-typescript:502 TypeScript server [tsserver]         at ProjectService.ensureDefaultProjectForFile (/srv/node_modules/typescript/lib/tsserver.js:121927:75)
936-felixfbecker-lang-typescript.js?bpubhqspofk8--felixfbecker-lang-typescript:502 TypeScript server [tsserver]         at IOSession.Session.getFileAndProjectWorker (/srv/node_modules/typescript/lib/tsserver.js:124741:87)
936-felixfbecker-lang-typescript.js?bpubhqspofk8--felixfbecker-lang-typescript:502 TypeScript server [tsserver]         at IOSession.Session.getFileAndProject (/srv/node_modules/typescript/lib/tsserver.js:124726:29)
936-felixfbecker-lang-typescript.js?bpubhqspofk8--felixfbecker-lang-typescript:502 TypeScript server [tsserver]         at IOSession.Session.getQuickInfoWorker (/srv/node_modules/typescript/lib/tsserver.js:124800:31)
936-felixfbecker-lang-typescript.js?bpubhqspofk8--felixfbecker-lang-typescript:502 TypeScript server [tsserver]         at Session.handlers.ts.createMapFromTemplate._a.(anonymous function) (/srv/node_modules/typescript/lib/tsserver.js:123854:61)
936-felixfbecker-lang-typescript.js?bpubhqspofk8--felixfbecker-lang-typescript:502 TypeScript server [tsserver]         at /srv/node_modules/typescript/lib/tsserver.js:125391:88
936-felixfbecker-lang-typescript.js?bpubhqspofk8--felixfbecker-lang-typescript:502 TypeScript server [tsserver]         at IOSession.Session.executeWithRequestId (/srv/node_modules/typescript/lib/tsserver.js:125382:28)
936-felixfbecker-lang-typescript.js?bpubhqspofk8--felixfbecker-lang-typescript:502 TypeScript server [tsserver]         at IOSession.Session.executeCommand (/srv/node_modules/typescript/lib/tsserver.js:125391:33)
936-felixfbecker-lang-typescript.js?bpubhqspofk8--felixfbecker-lang-typescript:502 TypeScript server [tsserver]         at IOSession.Session.onMessage (/srv/node_modules/typescript/lib/tsserver.js:125413:35)
936-felixfbecker-lang-typescript.js?bpubhqspofk8--felixfbecker-lang-typescript:502 TypeScript server [tsserver]         at Interface. (/srv/node_modules/typescript/lib/tsserver.js:126671:27)
936-felixfbecker-lang-typescript.js?bpubhqspofk8--felixfbecker-lang-typescript:502 TypeScript server [tsserver]         at Interface.emit (events.js:182:13)
936-felixfbecker-lang-typescript.js?bpubhqspofk8--felixfbecker-lang-typescript:502 TypeScript server [tsserver]         at Interface._onLine (readline.js:300:10)
936-felixfbecker-lang-typescript.js?bpubhqspofk8--felixfbecker-lang-typescript:502 TypeScript server [tsserver]         at Interface._normalWrite (readline.js:443:12)
936-felixfbecker-lang-typescript.js?bpubhqspofk8--felixfbecker-lang-typescript:502 TypeScript server [tsserver]         at Socket.ondata (readline.js:159:10)
936-felixfbecker-lang-typescript.js?bpubhqspofk8--felixfbecker-lang-typescript:502 TypeScript server [tsserver]         at Socket.emit (events.js:182:13)
936-felixfbecker-lang-typescript.js?bpubhqspofk8--felixfbecker-lang-typescript:502 TypeScript server [tsserver]         at addChunk (_stream_readable.js:283:12)
936-felixfbecker-lang-typescript.js?bpubhqspofk8--felixfbecker-lang-typescript:502 TypeScript server [tsserver]         at readableAddChunk (_stream_readable.js:264:11)
936-felixfbecker-lang-typescript.js?bpubhqspofk8--felixfbecker-lang-typescript:502 TypeScript server [tsserver]         at Socket.Readable.push (_stream_readable.js:219:10)
936-felixfbecker-lang-typescript.js?bpubhqspofk8--felixfbecker-lang-typescript:502 TypeScript server [tsserver]         at Pipe.onStreamRead [as onread] (internal/stream_base_commons.js:122:17)
TypeScript server [tsserver] Err 62    [9:14:30.966] Could not find file "/home/node/cache/lang-typescript-7644d599c5-hptcr/7f2e0180-e97f-11e8-a876-4d7828e8a36c/repo/src/vs/editor/common/modes/languageFeatureRegistry.ts".
TypeScript server [tsserver] All files are: []

After that error occurred, I see 0936-felixfbecker-lang-typescript.js?bpubhqspofk8--felixfbecker-lang-typescript:502 WebSocket connection to TypeScript server closed with a 20 from Chrome indicating that occurred 20 times.
It prints thousands of lines of logs, like TypeScript server Filtering package.json at  /home/node/cache/lang-typescript-7644d599c5-hptcr/7f2e0180-e97f-11e8-a876-4d7828e8a36c/repo/extensions/grunt/package.json. (This is not a problem per se, but it is needlessly noisy. Perhaps only log if a user setting typescript.debug is set? Or file an issue if you want a better first-class extension API for this.)

It takes a long time for the first hover to show up, like 60+ seconds.

Microsoft/vscode is an extreme case because it as an insane amount of package.jsons, 81. The server seems simply overwhelmed with ensuring dependencies for all of them. I think what would work here is making dependency installation 100% lazy instead of eager (which is what the old language server does). Easy change.
I also noticed that the majority of those package.jsons don't have any dependencies. I will add an early return when no dependencies are defined to avoid the yarn process spawn overhead for that case.

Just now, it took a long time for the hover to show up, then it went away. The devtools console says:

This is already filed in #14 and a bug in tsserver, see my explanation there.

It prints thousands of lines of logs, like TypeScript server Filtering package.json at /home/node/cache/lang-typescript-7644d599c5-hptcr/7f2e0180-e97f-11e8-a876-4d7828e8a36c/repo/extensions/grunt/package.json. (This is not a problem per se, but it is needlessly noisy. Perhaps only log if a user setting typescript.debug is set? Or file an issue if you want a better first-class extension API for this.)

It's not needlessly noisy, I added all these logs intentionally because they tremendously help me debug. You can use the console UI to filter out verbose log messages, and I will reduce this once the server is more stable.

I changed to only install dependencies for package.jsons in parent directories, lazily. This seems to improve the init time for Microsoft/vscode a lot as tsserver is not busy with handling so many file change events.
The No project bug is fixed too.
I also made the tsserver and langserver log levels configurable through settings (and defaulted to no logs).
Please try it out and let me know how it feels.
I could not yet figure out the connection loss issue. It seems like Chrome sometimes just closes the connection after a while of inactivity without explaining why. I tried adding WebSocket pings from the server but it doesn't seem to prevent it.

@sqs how does vscode feel now with the recent updates?

Much faster. Thanks! :tada:


Peek doesn't respect NeverShowExt

Microsoft PowerToys version
0.73.0
Installation method
GitHub
Running as admin
Yes
Area(s) with issue?
Peek
Steps to reproduce
By default Explorer doesn't show some file extensions, even if show file extensions is enabled. This is controlled by the NeverShowExt value in the registry. This is set by default for .lnk, .pif, .accountpicture-ms and a bunch of others. Peek doesn't respect this setting and shows all extensions if show file extensions is enabled.
✔ Expected Behavior
Peek shouldn't show file extensions for file types that have the NeverShowExt value set.
❌ Actual Behavior
Peek doesn't check if NeverShowExt is set.
Other Software
No response

can you maybe put in a screenshot here with maybe the file in file explorer and the output in peek? /needinfo

@crutkas as you can see, show file extensions is enabled and explorer does show the .docx for a Word document, but the .lnk extension isn't shown. That's because NeverShowExt is set in HKCR\lnkfile. The problem is that Peek doesn't check for NeverShowExt, so it displays the file extension (lnk).

I would argue that the current behavior is a feature but this probably just means it should be toggle-able :)


Bump Reconciler

Description
Changes proposed in this pull request:

Bump Reconciler

Related issue(s)

See the issue - https://github.com/kyma-incubator/reconciler/issues/418

It's already bumped with a newer version, I'm closing this PR


TypeError: Cannot read property "tagName" from undefined.

I am trying to use it in Google Spreadsheets. The idea is to generate a QR code from the text on the sheet. I had to add a "document" variable:
var document = SpreadsheetApp.getActiveSpreadsheet();
Right now I am having the following issue when running a script:

TypeError: Cannot read property "tagName" from undefined.

Apparently, the issue is in this line:
var useSVG = document.documentElement.tagName.toLowerCase() === "svg";
Any ideas on how to make it work?

Used Angular universal and compiled the code, it is throwing the following error:

/home/mannkhatri/Documents/jobportal-app/jobportal-ng/dist/server.js:139678
var useSVG = document.documentElement.tagName.toLowerCase() === "svg";
^
ReferenceError: document is not defined

Please help me fix this


Enable linter for svcctrl adapter

What this PR does / why we need it
Re-enable linter since issues in /mixer/adapter/svcctrl are fixed.

@manlinl: Adding do-not-merge/release-note-label-needed because the release note process has not been followed.

One of the following labels is required "release-note", "release-note-action-required", or "release-note-none".
Please see: https://github.com/kubernetes/community/blob/master/contributors/devel/pull-requests.md#write-release-notes-if-needed.
Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

/assign jmuk

@manlinl: Adding do-not-merge/release-note-label-needed because the release note process has not been followed.

One of the following labels is required "release-note", "release-note-action-required", or "release-note-none".
Please see: https://github.com/kubernetes/community/blob/master/contributors/devel/pull-requests.md#write-release-notes-if-needed.
Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

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

Test name
Commit
Details
Rerun command

prow/istio-presubmit.sh
18a2392c6f02461ecdbcc3826521316ae06cdd08
link
/test istio-presubmit

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

/lgtm

hmm, presubmit still fails, and the error looks like the generated files from unmerged PRs... #1689 should be addressed.

/retest all

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

Test name
Commit
Details
Rerun command

prow/istio-presubmit.sh
18a2392c6f02461ecdbcc3826521316ae06cdd08
link
/test istio-presubmit

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

/retest all

@jmuk  test passed after retest/all, can you approve the change?

you should fix the conflicts, as istio-merge-robot suggests.

@jmuk conflict resolved,

/lgtm
btw, I'm not in the OWNERS file here, my approval has no effect on it unfortunately... please ask someone else.

/assign @linsun

/lgtm

@douglas-reid @linsun @geeknoid can you pls. approve this change to enable linter on mixer svcctrl adapter? thanks

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

Test name
Commit
Details
Rerun command

prow/istio-presubmit.sh
48238ebf6c9a70c1a0c0e9078eaccc75c7ffb8bd
link
/test istio-presubmit

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

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

Test name
Commit
Details
Rerun command

prow/istio-pilot-e2e.sh
8819bbe6e7957db8b1965d777b14cc8b61bc3630
link
/test istio-pilot-e2e

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

/retest


Make the spec EIP

Hello there!
I was chatting with Barnabas about client testing and the fact that RPC interop is hardly a thing, and he told me there wasn’t testing for RPC being done on the EF side, though client teams may.
He was under the impression there isn’t a spec, and I thought there was. This repo may well be that spec.
His feedback was that in order for the spec to be implemented by clients and to achieve RPC interop, it needs to become an EIP, be championed and be included in a hard fork.
Which from a client team perspective should be a “small” EIP - basically just formalize what’s already there and clean up where it doesn’t conform. EIP would likely state that clients SHALL conform to spec for methods covered in the EIP and MAY introduce new methods and extensions of existing ones and SHOULD work towards getting new methods and extensions into the spec and a future version of the EIP.
From a node operator perspective, it’s too often “run Geth if you want your app to work”. I’d love to see a more formal RPC standard.

and he told me there wasn’t testing for RPC being done on the EF side, though client teams may

This isn't true, we have a pretty thorough compatibility test suite for the RPC. It just isn't high prio for clients to be completely compatible (and in fairness, in many cases it is quite hard). You can find the results of that test here https://hivetests2.ethdevops.io/#suite=rpc-compat

I’d love to see a more formal RPC standard.

What exactly do you have in mind? The execution-apis repo was born out of the desire to move away from the EIP process for EL RPC. It is a formal definition of the RPC in openrpc. The spec is a living thing and it doesn't fit well into the EIP process. Had we continued making EIPs, it would be very difficult for anyone beyond client devs to understand what the full picture of the RPC is, because it would kind of require piecing together many different EIPs (sort of like figuring out the current mainnet spec :wink:).

I’d love to see a more formal RPC standard.

IMO the issue is less the lack of a formal RPC standard (we have it in this repo), but more the lack of desire in clients to be perfectly compatible. I think a big piece of this is that we don't have someone driving this forward.
Open to more feedback and suggestions, but generally the current process feels better than using EIPs.

Those are all good points, thank you. I get the limits of the EIP process, now that you’ve explained them.
Which then begs the question why there is a perception of “there is no spec”. As you say, an “interop champion” is what may be missing.
I’ll close this issue.


setInterval on a running timer results in a period significantly longer than the specified period

Describe the bug
Changing the timer period incurs additional unexpected delays, resulting in actual period being longer than the specified period (for the period in which it was changed).  Behaviour observed with TC3 on SAMD21.
Steps to Reproduce
From inside the ISR, call setInterval .  In my usecase, my ISR is toggling an output bit and then calling setInterval (for a variable-period output signal).  By measuring the output, you can determine the "actual" period length or frequency.
Expected behavior
Expect the period of a square wave output to be equal (or very very close) to what was specified in the call to setInterval
Actual behavior
The period of the square wave is approximately 100us longer than the specified period.
Information
Seeeduino Xiao M0 (SAMD21)

Interpretation
As I understand it, what's actually happening is as follows:

Through a few intermediate calls, calling setPeriod will end up at setPeriod_TIMER_TC3 .
setPeriod_TIMER_TC3 will (among other things) disable the timer, change the prescaler, attempt to remap Count, and then re-enable the timer.
My interpretation is that the instructions to read the Count register are incorrect, because the RREQ hasn't been sent, and as a result Count is always zero.  In other words, the Count is (effectively) reset to 0 every time setPeriod is called.
This effectively extends the period by the length of the setPeriod execution, which seems to be approximately 100us.
Through experimentation, it seems that Count will read 0 when the timer is disabled.  The suggested remedy is therefore to issue RREQ before disabling the timer, and read Count before disabling the timer, and then writing the (remapped) Count back again after changing the prescaler
It's also possible that setting the Count before setting CC[0] could cause the Count to prematurely reset to zero (per docs, "Count is compared continuously to CC[0] and attempting to set Count to a value greater than CC[0] will immediately reset Count to zero".  The suggested remedy is to first set CC[0] to 0xffff (uint16_t max), then set the (remapped) Count, then set CC[0] to the new correct _compareValue
I also believe that the map() call is incorrect.  It appears to have been adopted from an article about smooth frequency sweeps, and therefore interpolating between two DIFFERENT frequencies makes sense in that use case, but does not make sense when you want to change a period of a waveform to a specified period.  The specific issue here is that the Count might be remapped inappropriately, to a value either higher or lower than it should, since the arguments of the map() call result in remapping Count from the old 0-CC range, to the new 0-_compareValue range, instead of remapping Count purely based on the change (if any) of the prescalar.  In other words, it is my opinion that, if the prescalar did not change (and CC[0] did change), then Count should not be remapped at all;  and if the prescalar did change then the value of compareValue itself should be irrelevant to how to rescale Count.  The suggested remedy is to (a) keep track of the prior prescalar and compare to the new prescalar,(b) if prescalar unchanged then do not change Count (and as a bonus, no need to disable the timer because the only reason the timer is disabled is to change the prescalar), (c) if prescalar is changed then use the change to scale up or down Count via left (or right) bitshift

I attempted so local changes with the some of the suggested remedies and can confirm that the following appears to eliminate most of the 100us offset:

Prior to disabling the timer, issue RREQ and read Count into a local variable.
After disabling the timer, rewrite Count using map()

I did not yet try the other ideas (using change in prescalar, rather than change in CC[0], to do the correct map;  or avoiding disabling timer entirely if prescalar didn't change)

`#include "SAMDTimerInterrupt.h"
SAMDTimer ITimer(TIMER_TC3);
//SAMDTimer ITimer(TIMER_TCC);
volatile uint32_t myClockTimer = 0, lastMicros = 0;
const int nPeriods = 12;
volatile const uint32_t periods[nPeriods] = {2272,2272,2272,2272,1136,2272,568,999,1001,999,2272,2272};
volatile uint32_t actual_periods[nPeriods] = {0,0,0,0,0,0,0,0,0,0,0,0};
volatile int p_i = 0;
void clock(void)
{
myClockTimer = micros() - lastMicros; //2us come from here
lastMicros = micros();
if (p_i<nPeriods) {
actual_periods[p_i] = myClockTimer;
p_i++;
}
if (p_i<nPeriods) {
unsigned long p = periods[p_i];
ITimer.setInterval(p, clock);
}
else
{
ITimer.setInterval(10000000, clock);
}
}
void setup()
{
Serial.begin(115200);
while (!Serial) delay(10);
Serial.print(F("\nStarting setInterval validation on ")); Serial.println(BOARD_NAME);
Serial.println(SAMD_TIMER_INTERRUPT_VERSION);
Serial.print(F("CPU Frequency = ")); Serial.print(F_CPU / 1000000); Serial.println(F(" MHz"));
}
void loop()
{
lastMicros = micros();
unsigned long p = periods[0];
ITimer.attachInterruptInterval(p, clock);
delay(5000); // more than sufficient, given the timings provided in periods[]
for(int i=0; i<nPeriods; i++) {
Serial.print(F("myClockTimer "));
Serial.print(periods[i]);
Serial.print(F(", actual = "));
Serial.println(actual_periods[i]);
};
while(1) delay(5000);
}`
Starting setInterval validation on __SAMD21G18A__ SAMDTimerInterrupt v1.6.0 CPU Frequency = 48 MHz myClockTimer 2272, actual = 2381 myClockTimer 2272, actual = 2380 myClockTimer 2272, actual = 2381 myClockTimer 2272, actual = 2381 myClockTimer 1136, actual = 1244 myClockTimer 2272, actual = 2381 myClockTimer 568, actual = 677 myClockTimer 999, actual = 1111 myClockTimer 1001, actual = 1119 myClockTimer 999, actual = 1111 myClockTimer 2272, actual = 2380 myClockTimer 2272, actual = 2380

Similar observation, but slightly smaller delay, when using TCC on SAMD21:
Starting setInterval validation on __SAMD21G18A__
SAMDTimerInterrupt v1.6.0
CPU Frequency = 48 MHz
myClockTimer 2272, actual = 2354
myClockTimer 2272, actual = 2355
myClockTimer 2272, actual = 2355
myClockTimer 2272, actual = 2355
myClockTimer 1136, actual = 1218
myClockTimer 2272, actual = 2355
myClockTimer 568, actual = 651
myClockTimer 999, actual = 1082
myClockTimer 1001, actual = 1084
myClockTimer 999, actual = 1081
myClockTimer 2272, actual = 2355
myClockTimer 2272, actual = 2355

With my forked version of SAMDTimerInterrupt I achieve the following, which is a much better result.  With my changes, in addition to the READREQ fix, I also avoid changing REG_GLCK_CLKCTRL when the timer has already been initialized, and also avoid additional writes to CTRLA for disabling the clock, setting 16bit mode, and setting match mode, since those are all already set.  My earlier analysis of the cause (and therefore the necessary fix) might have been incorrect or incomplete, and I now suspect that what is happening is that some of the initialization calls that happen inside setFrequency are contributing to the resetting or delaying of Clock.  As a result, I'm not really certain which of my changes are really the fix for this issue (noting that my fork also includes a fix for #18).
Results for TC3.  (my fork doesn't include all the corresponding TCC fixes, just TC3)
Starting setInterval validation on __SAMD21G18A__
SAMDTimerInterrupt v1.7.0
CPU Frequency = 48 MHz
myClockTimer 2272, actual = 2358
myClockTimer 2272, actual = 2276
myClockTimer 2272, actual = 2275
myClockTimer 2272, actual = 2276
myClockTimer 1136, actual = 1181
myClockTimer 2272, actual = 2193
myClockTimer 568, actual = 634
myClockTimer 999, actual = 938
myClockTimer 1001, actual = 1005
myClockTimer 999, actual = 1003
myClockTimer 2272, actual = 2171
myClockTimer 2272, actual = 2276

As you can see, the initial period does last longer than expected (and this occurs when initialized=false) - maybe this is normal and unavoidable but it is still not ideal.  With my other changes, the latency on that first call has been reduced, since that first period is now 2358 rather than 2381, but still considerably higher than the requested 2272.  The repeated 2272 periods are very closed (i.e. +4 us).  Changing the prescaler seems to cause additional unpredictability, which I imagine is consistent with the incorrect rescaling approach being used.  I will see if my suggested fixes resolved those discrepancies also.
https://github.com/stripwax/SAMD_TimerInterrupt

I just tried making a quick version of the prescaler comparison changes I mentioned, and that seems to resolve most of the issue.  I've committed that to my fork also.  This could certainly be improved further (i.e. constant bitshift rather than while loop - ideally without redundantly tracking both prescaler_bits and 2^prescaler_bits).
Starting setInterval validation on __SAMD21G18A__
SAMDTimerInterrupt v1.7.0
CPU Frequency = 48 MHz
myClockTimer 2272, actual = 2354
myClockTimer 2272, actual = 2269
myClockTimer 2272, actual = 2270
myClockTimer 2272, actual = 2269
myClockTimer 1136, actual = 1133
myClockTimer 2272, actual = 2269
myClockTimer 568, actual = 569
myClockTimer 999, actual = 997
myClockTimer 1001, actual = 1002
myClockTimer 999, actual = 1000
myClockTimer 2272, actual = 2274
myClockTimer 2272, actual = 2270

It seems that you're using the Timer Interrupt in a most weird way I can think of.
Changing the interval inside the interrupt repetitively and measure that only the first interval !!!
That's why I didn't spend time to answer, expecting you to understand by yourself this is not correct way to use.  I also won't waste my time to deal with this strange use-case and leave that for your hobby.
I'm closing this issue and won't reopen it until you prove this is a real bug of the library while using it correctly.

Thanks for the response. The usecase in question (as mentioned in the initial comment) is for a variable-period squarewave. The project in question is TZXDuino/MAXDuino. These are well-established Arduino applications which work on a variety of devices but did not yet include SAMD21 support, which I am adding myself. You can find my changes in my TZXDuino fork.
Without my changes, the periods of the waveform are consistently wrong (too long by approximately 100us). One fix would be to change the code to subtract approx 100us from the period length, but that fix does not make sense to me.
Hence I attempted to investigate the problem in the library I was using (SAMDTimerInterrupt) to add SAMD support to this TZXDuino project.
It is clear you think that my usecase is invalid and that I am using the library wrongly. I am open to your suggestion of how it should be being used correctly to support this usecase. Alternatively, please reconsider reopening this issue and evaluating my changes in my fork.

Additional comment- the reason my example is only measuring the first interval, is because the first interval is the one that is wrong. The subsequent intervals will be correct - measuring those does not illustrate the problem. To put it another way, the requirement is to generate different numbers of pulses of different duration, and the observed bug is that the duration of the first pulse after a call to setInterval does not match the specified interval.
If there is a more correct way to use your library to achieve this, then I apologise but would still appreciate a hint showing how to do this without encountering the problem I described. Many thanks!

In that use-case where accuracy is very important for even the first  interval, using any library, or even the SDK, is the wrong choice. You have to write the registers directly, even using assembly if possible, to avoid overhead in uS range.
No matter how the library is rewritten, it can't never achieve anything accurate enough.
Good Luck,

The requirement is that the interval after the call to setInterval
corresponds to the specified interval - the changes in my fork achieve
this. Could you take a look?
On Tue, 19 Apr 2022, 15:25 Khoi Hoang, @.***> wrote:

In that use-case where accuracy is very important for even the first
interval, using any library, or even the SDK, is the wrong choice. You
have to write the registers directly, even using assembly if possible, to
avoid overhead in uS range.
No matter how the library is rewritten, it can't never achieve anything
accurate enough.
Good Luck,
—
Reply to this email directly, view it on GitHub
https://github.com/khoih-prog/SAMD_TimerInterrupt/issues/17#issuecomment-1102721481,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABF47HEFPAXQMZSHFUG4QCDVF263ZANCNFSM5TBIKZAA
.
You are receiving this because you authored the thread.Message ID:
@.***>

I will. But first, please help have more tests and post the results in some more important use-cases to see if the change breaks anything.
Then when everything seems OK, make a Pull-Request so that I can merge to the library automatically.

Hi @stripwax
The new SAMD_TimerInterrupt releases v1.7.0 has just been published. Your contribution is noted in Contributions and Thanks.
I'm looking forward to receiving your setInterval() enhancements for SAMD21 TCC and SAMD51 TC3
Best Regards,

Releases v1.7.0

Optimize code for setInterval() of SAMD21 TC3. Check setInterval on a running timer results in a period significantly longer than the specified period #17
Update Packages_Patches

Updated my test script here:
#include "SAMDTimerInterrupt.h"

SAMDTimer ITimer(TIMER_TC3);
//SAMDTimer ITimer(TIMER_TCC);

volatile uint32_t myClockTimer = 0, lastMicros = 0;

const int nPeriods = 19;
const int nTrials = 4;
volatile const uint32_t periods[nPeriods] = {2272,2272,2272,2272,1136,2272,568,999,1001,999,2272,2272,80000,2272,80001,2272,80000,80001,80000};
volatile uint32_t actual_periods[nPeriods][nTrials] = {0};
volatile int p_i = 0;
volatile int n_i = 0;

void clock(void)
{
  myClockTimer = micros() - lastMicros; //2us come from here
  lastMicros = micros();
  if (p_i<nPeriods) {
    actual_periods[p_i][n_i] = myClockTimer;
    n_i++;
    if (n_i == nTrials)
    {
      n_i = 0;
      p_i++;
    }
  }
  if (p_i<nPeriods) {
    unsigned long p = periods[p_i];
    ITimer.setInterval(p, clock);
  }
  else
  {
    ITimer.setInterval(10000000, clock);
  }
}

void setup()
{
  Serial.begin(115200);
  while (!Serial) delay(10);

  Serial.print(F("\nStarting setInterval validation on ")); Serial.println(BOARD_NAME);
  Serial.println(SAMD_TIMER_INTERRUPT_VERSION);
  Serial.print(F("CPU Frequency = ")); Serial.print(F_CPU / 1000000); Serial.println(F(" MHz"));
}

void loop()
{
  lastMicros = micros();
  unsigned long p = periods[0];
  ITimer.attachInterruptInterval(p, clock);
  delay(5000); // more than sufficient, given the timings provided in periods[]
  for(int i=0; i<nPeriods; i++) {
    Serial.print(F("myClockTimer "));
    Serial.print(periods[i]);
    Serial.print(F(", actual = "));
    for(int j=0; j<nTrials; j++) {
      Serial.print(actual_periods[i][j]);
      Serial.print(" , ");
    }
    Serial.println("");
  };
  while(1) delay(5000);
}

Output with release version 1.6.0.  Note that this shows the timings are wrong for multiple periods, not just the first period, which seems to show that the bug is worse than originally assumed and may have a different root cause (and still needs fixing).  Timings are consistent, but consistently wrong by about 110us.
Starting setInterval validation on __SAMD21G18A__
SAMDTimerInterrupt v1.6.0
CPU Frequency = 48 MHz
myClockTimer 2272, actual = 2381 , 2381 , 2381 , 2381 ,
myClockTimer 2272, actual = 2381 , 2381 , 2381 , 2381 ,
myClockTimer 2272, actual = 2381 , 2381 , 2381 , 2381 ,
myClockTimer 2272, actual = 2382 , 2380 , 2381 , 2381 ,
myClockTimer 1136, actual = 1245 , 1245 , 1245 , 1244 ,
myClockTimer 2272, actual = 2382 , 2381 , 2381 , 2381 ,
myClockTimer 568, actual = 677 , 677 , 677 , 677 ,
myClockTimer 999, actual = 1112 , 1111 , 1111 , 1111 ,
myClockTimer 1001, actual = 1120 , 1119 , 1120 , 1119 ,
myClockTimer 999, actual = 1112 , 1111 , 1111 , 1111 ,
myClockTimer 2272, actual = 2381 , 2381 , 2381 , 2381 ,
myClockTimer 2272, actual = 2381 , 2381 , 2380 , 2381 ,
myClockTimer 80000, actual = 80103 , 80103 , 80102 , 80103 ,
myClockTimer 2272, actual = 2381 , 2381 , 2381 , 2381 ,
myClockTimer 80001, actual = 80110 , 80110 , 80109 , 80110 ,
myClockTimer 2272, actual = 2381 , 2381 , 2381 , 2381 ,
myClockTimer 80000, actual = 80102 , 80103 , 80102 , 80103 ,
myClockTimer 80001, actual = 80109 , 80110 , 80110 , 80109 ,
myClockTimer 80000, actual = 80103 , 80102 , 80103 , 80102 ,

Output with my featurebranch with my changes does indicate a bug of some kind (as evidenced by #20). See problem on 80000/80001 entries. My output:
Starting setInterval validation on __SAMD21G18A__
SAMDTimerInterrupt v1.7.0
CPU Frequency = 48 MHz
myClockTimer 2272, actual = 2357 , 2270 , 2270 , 2270 ,
myClockTimer 2272, actual = 2270 , 2270 , 2270 , 2270 ,
myClockTimer 2272, actual = 2270 , 2270 , 2270 , 2270 ,
myClockTimer 2272, actual = 2270 , 2270 , 2270 , 2270 ,
myClockTimer 1136, actual = 1134 , 1134 , 1134 , 1134 ,
myClockTimer 2272, actual = 2270 , 2270 , 2270 , 2270 ,
myClockTimer 568, actual = 569 , 566 , 566 , 566 ,
myClockTimer 999, actual = 997 , 997 , 997 , 997 ,
myClockTimer 1001, actual = 1002 , 999 , 999 , 999 ,
myClockTimer 999, actual = 1000 , 997 , 997 , 997 ,
myClockTimer 2272, actual = 2272 , 2270 , 2270 , 2270 ,
myClockTimer 2272, actual = 2270 , 2270 , 2270 , 2270 ,
myClockTimer 80000, actual = 319767 , 319998 , 319998 , 319998 ,
myClockTimer 2272, actual = 2337 , 2270 , 2270 , 2270 ,
myClockTimer 80001, actual = 400 , 310 , 311 , 310 ,
myClockTimer 2272, actual = 2215 , 2270 , 2270 , 2270 ,
myClockTimer 80000, actual = 319761 , 319998 , 319998 , 319998 ,
myClockTimer 80001, actual = 400 , 310 , 311 , 310 ,
myClockTimer 80000, actual = 238118 , 319998 , 319998 , 319998 ,

Fixed in my fork.  It looks like you already made the same fix when you applied my idea to your library here https://github.com/khoih-prog/SAMD_TimerInterrupt/commit/3f496d6f4eb9e3a5b6491c96566b56615ab9dca7  so I'm not sure what the bug is in your version.

I'm looking forward to receiving your setInterval() enhancements for SAMD21 TCC and SAMD51 TC3

I don't have a SAMD51 device so that isn't going to happen - sorry

For completeness, here's the test results with 1.9.0
Starting setInterval validation on __SAMD21G18A__
SAMDTimerInterrupt v1.9.0
CPU Frequency = 48 MHz
myClockTimer 2272, actual = 2379 , 2378 , 2379 , 2379 ,
myClockTimer 2272, actual = 2379 , 2379 , 2379 , 2378 ,
myClockTimer 2272, actual = 2379 , 2379 , 2379 , 2379 ,
myClockTimer 2272, actual = 2379 , 2379 , 2379 , 2379 ,
myClockTimer 1136, actual = 1243 , 1243 , 1242 , 1243 ,
myClockTimer 2272, actual = 2379 , 2379 , 2379 , 2379 ,
myClockTimer 568, actual = 676 , 674 , 675 , 675 ,
myClockTimer 999, actual = 1110 , 1109 , 1109 , 1109 ,
myClockTimer 1001, actual = 1118 , 1118 , 1117 , 1118 ,
myClockTimer 999, actual = 1109 , 1109 , 1109 , 1109 ,
myClockTimer 2272, actual = 2379 , 2379 , 2378 , 2379 ,
myClockTimer 2272, actual = 2379 , 2379 , 2379 , 2379 ,
myClockTimer 80000, actual = 80100 , 80101 , 80100 , 80101 ,
myClockTimer 2272, actual = 2379 , 2379 , 2379 , 2379 ,
myClockTimer 80001, actual = 80108 , 80107 , 80108 , 80107 ,
myClockTimer 2272, actual = 2379 , 2379 , 2378 , 2379 ,
myClockTimer 80000, actual = 80101 , 80100 , 80101 , 80100 ,
myClockTimer 80001, actual = 80108 , 80107 , 80108 , 80107 ,
myClockTimer 80000, actual = 80101 , 80100 , 80101 , 80100 ,
myClockTimer 300000, actual = 300107 , 300106 , 300107 , 300106 ,
myClockTimer 300001, actual = 300087 , 300087 , 300086 , 300087 ,

Hi @khoih-prog  -  have you seen the above information?  Could you reopen (and consider addressing and fixing via the change in my fork), because the bugs are still present as you can see above.

Hi @stripwax
I'm sorry that I won't merge it because yours is very special use-case and this library is not supposed to be used like that.
I suggest you optimize your code to have minimal and consistent time-difference, and if you'd like, write a new library for your waveform-creating use-case, which will be very helpful to certain users.
Many thanks for your code anyway. Looking forward to receiving more of your contributions.
Regards,

Ok, thanks for the response. But did you see that the timing error is not
for only the first period but actually every subsequent period too?
I don't think this is a special case. Are you able to reproduce my findings?
On Mon, 30 May 2022, 15:21 Khoi Hoang, @.***> wrote:

Hi @stripwax https://github.com/stripwax
I'm sorry that I won't merge it because yours is very special use-case and
this library is not supposed to be used like that.
I suggest you optimize your code to have minimal and consistent
time-difference, and if you'd like, write a new library for your
waveform-creating use-case, which will be very helpful to certain users.
Many thanks for your code anyway. Looking forward to receiving more of
your contributions.
Regards,
—
Reply to this email directly, view it on GitHub
https://github.com/khoih-prog/SAMD_TimerInterrupt/issues/17#issuecomment-1141216683,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABF47HBTOZ5JLMWD375EZRDVMTFIBANCNFSM5TBIKZAA
.
You are receiving this because you were mentioned.Message ID:
@.***>

Sorry that's my final decision.
Please don't waste our time, especially your precious time here.
I suggest you

Read HOWTO Attach Interrupt

Generally, an ISR should be as short and fast as possible. If your sketch uses multiple ISRs, only one can run at a time, other interrupts will be executed after the current one finishes in an order that depends on the priority they have. millis() relies on interrupts to count, so it will never increment inside an ISR. Since delay() requires interrupts to work, it will not work if called inside an ISR. micros() works initially but will start behaving erratically after 1-2 ms. delayMicroseconds() does not use any counter, so it will work as normal.)

Try some examples and see / measure how they're working
Use precalculated lookup tables, then program the registers efficiently to minimize the error, if you'd like to create fancy use-cases for waveform creation, with good enough accuracy.

I remember that someone requested a similar waveform creating case in certain library (???TimerInterrupt or ???PWM, etc.), and finally settled on using lookup-table, but I don't remember and can't find it now. You can search, if interested.
Good Luck,

Noted with thanks. I am sorry you feel this way. You may (or may not) be
interested to know that the popular TimerOne library works correctly in
this regard with other devices. For now I will adopt your earlier
suggestion, which is to NOT use your library.
On Mon, 30 May 2022, 19:54 Khoi Hoang, @.***> wrote:

Sorry that's my final decision.
Please don't waste our time, especially your precious time here.
I suggest you

Read HOWTO Attach Interrupt
https://www.arduino.cc/reference/en/language/functions/external-interrupts/attachinterrupt/

Generally, an ISR should be as short and fast as possible. If your
sketch uses multiple ISRs, only one can run at a time, other interrupts
will be executed after the current one finishes in an order that depends on
the priority they have. millis() relies on interrupts to count, so it will
never increment inside an ISR. Since delay() requires interrupts to work,
it will not work if called inside an ISR. micros() works initially but will
start behaving erratically after 1-2 ms. delayMicroseconds() does not use
any counter, so it will work as normal.)

Try some examples and see / measure how they're working
Use precalculated lookup tables, then program the registers
efficiently to minimize the error, if you'd like to create fancy use-cases
for waveform creation, with good enough accuracy.

I remember that someone requested a similar waveform creating case in
certain library (???TimerInterrupt or ???PWM, etc.), and finally settled on
using lookup-table, but I don't remember and can't find it now. You can
search, if interested.
Good Luck,
—
Reply to this email directly, view it on GitHub
https://github.com/khoih-prog/SAMD_TimerInterrupt/issues/17#issuecomment-1141414035,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABF47HG52FNDSWAFLKGPDXLVMUFEPANCNFSM5TBIKZAA
.
You are receiving this because you were mentioned.Message ID:
@.***>


appengineEndpointsGetClientLibs fails consistently.

Endpoint client generation related tasks fail except getDiscoveryDocs task. Seems to be a http500
error from code generation server.
Here is gradle output.
./gradlew appengineEndpointsGetClientLibs --info
Connected to daemon DaemonInfo{pid=5098, address=[394442d1-42c6-43c9-9712-6957ea3ef995 port:49546, addresses:[/0:0:0:0:0:0:0:1, /<IP_ADDRESS>]], idle=true, lastBusy=1468504726549, context=DefaultDaemonContext[uid=9d5d6271-bf19-42cc-bbd6-9180c693f55b,javaHome=/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home,daemonRegistryDir=/Users/koray2/.gradle/daemon,pid=5098,idleTimeout=10800000,daemonOpts=-XX:MaxPermSize=256m,-XX:+HeapDumpOnOutOfMemoryError,-Xmx1024m,-Dfile.encoding=UTF-8,-Duser.country=US,-Duser.language=en,-Duser.variant]}. Dispatching request Build{id=6cbad4d7-d318-44fb-8853-333df5e4c434.1, currentDir=/Users/koray2/arsiv/docker/spring}.
Received result org.gradle.launcher.daemon.protocol.BuildStarted@66273fb3 from daemon DaemonInfo{pid=5098, address=[394442d1-42c6-43c9-9712-6957ea3ef995 port:49546, addresses:[/0:0:0:0:0:0:0:1, /<IP_ADDRESS>]], idle=true, lastBusy=1468504726549, context=DefaultDaemonContext[uid=9d5d6271-bf19-42cc-bbd6-9180c693f55b,javaHome=/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home,daemonRegistryDir=/Users/koray2/.gradle/daemon,pid=5098,idleTimeout=10800000,daemonOpts=-XX:MaxPermSize=256m,-XX:+HeapDumpOnOutOfMemoryError,-Xmx1024m,-Dfile.encoding=UTF-8,-Duser.country=US,-Duser.language=en,-Duser.variant]} (build should be starting).
The client will now receive all logging from the daemon (pid: 5098). The daemon log file: /Users/koray2/.gradle/daemon/2.14/daemon-5098.out.log
Starting 2nd build in daemon [uptime: 31.351 secs, performance: 100%, no major garbage collections]
Executing build with daemon context: DefaultDaemonContext[uid=9d5d6271-bf19-42cc-bbd6-9180c693f55b,javaHome=/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home,daemonRegistryDir=/Users/koray2/.gradle/daemon,pid=5098,idleTimeout=10800000,daemonOpts=-XX:MaxPermSize=256m,-XX:+HeapDumpOnOutOfMemoryError,-Xmx1024m,-Dfile.encoding=UTF-8,-Duser.country=US,-Duser.language=en,-Duser.variant]
Starting Build
Settings evaluated using settings file '/Users/koray2/arsiv/docker/spring/settings.gradle'.
Projects loaded. Root project using build file '/Users/koray2/arsiv/docker/spring/build.gradle'.
Included projects: [root project 'EduCloudMessaging']
Evaluating root project 'EduCloudMessaging' using build file '/Users/koray2/arsiv/docker/spring/build.gradle'.
Adding docker extension
Adding docker task type
Applying docker defaults to tasks of type 'Docker'
All projects evaluated.
Selected primary task 'appengineEndpointsGetClientLibs' from project :
Tasks to be executed: [task ':appengineDownloadSdk', task ':compileJava', task ':processResources', task ':classes', task ':appengineEndpointsGetClientLibs']
In-memory cache of /Users/koray2/arsiv/docker/spring/.gradle/2.14/taskArtifacts/fileHashes.bin: Size{16}, CacheStats{hitCount=0, missCount=16, loadSuccessCount=0, loadExceptionCount=0, totalLoadTime=0, evictionCount=0}
In-memory cache of /Users/koray2/arsiv/docker/spring/.gradle/2.14/taskArtifacts/treeSnapshots.bin: Size{0}, CacheStats{hitCount=0, missCount=0, loadSuccessCount=0, loadExceptionCount=0, totalLoadTime=0, evictionCount=0}
In-memory cache of /Users/koray2/arsiv/docker/spring/.gradle/2.14/taskArtifacts/treeSnapshotUsage.bin: Size{0}, CacheStats{hitCount=0, missCount=0, loadSuccessCount=0, loadExceptionCount=0, totalLoadTime=0, evictionCount=0}
In-memory cache of /Users/koray2/arsiv/docker/spring/.gradle/2.14/taskArtifacts/fileSnapshotsToTreeSnapshotsIndex.bin: Size{0}, CacheStats{hitCount=0, missCount=0, loadSuccessCount=0, loadExceptionCount=0, totalLoadTime=0, evictionCount=0}
In-memory cache of /Users/koray2/arsiv/docker/spring/.gradle/2.14/taskArtifacts/fileSnapshots.bin: Size{1}, CacheStats{hitCount=0, missCount=1, loadSuccessCount=0, loadExceptionCount=0, totalLoadTime=0, evictionCount=0}
In-memory cache of /Users/koray2/arsiv/docker/spring/.gradle/2.14/taskArtifacts/taskArtifacts.bin: Size{2}, CacheStats{hitCount=0, missCount=2, loadSuccessCount=0, loadExceptionCount=0, totalLoadTime=0, evictionCount=0}
:appengineDownloadSdk (Thread[Daemon worker,5,main]) started.
:appengineDownloadSdk
Executing task ':appengineDownloadSdk' (up-to-date check took 0.0 secs) due to:
  Task has not declared any outputs.
:appengineDownloadSdk (Thread[Daemon worker,5,main]) completed. Took 0.005 secs.
:compileJava (Thread[Daemon worker,5,main]) started.
:compileJava
Skipping task ':compileJava' as it is up-to-date (took 0.271 secs).
:compileJava UP-TO-DATE
:compileJava (Thread[Daemon worker,5,main]) completed. Took 0.273 secs.
:processResources (Thread[Daemon worker,5,main]) started.
:processResources
file or directory '/Users/koray2/arsiv/docker/spring/src/main/resources', not found
Skipping task ':processResources' as it has no source files.
:processResources UP-TO-DATE
:processResources (Thread[Daemon worker,5,main]) completed. Took 0.001 secs.
:classes (Thread[Daemon worker,5,main]) started.
:classes
Skipping task ':classes' as it has no actions.
:classes UP-TO-DATE
:classes (Thread[Daemon worker,5,main]) completed. Took 0.0 secs.
:appengineEndpointsGetClientLibs (Thread[Daemon worker,5,main]) started.
:appengineEndpointsGetClientLibs
Executing task ':appengineEndpointsGetClientLibs' (up-to-date check took 0.001 secs) due to:
  No history is available.
 Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
   "location": "query"
  },
  "oauth_token": {
   "type": "string",
   "description": "OAuth 2.0 token for the current user.",
   "location": "query"
  },
  "prettyPrint": {
   "type": "boolean",
   "description": "Returns response with indentations and line breaks.",
   "default": "true",
   "location": "query"
  },
  "quotaUser": {
   "type": "string",
   "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters. Overrides userIp if both are provided.",
   "location": "query"
  },
  "userIp": {
   "type": "string",
   "description": "IP address of the site where the request originates. Use this if you want to enforce per-user limits.",
   "location": "query"
  }
 },
 "auth": {
  "oauth2": {
   "scopes": {
    "https://www.googleapis.com/auth/userinfo.email": {
     "description": "View your email address"
    }
   }
  }
 },
 "schemas": {
  "Obj": {
   "id": "Obj",
   "type": "object",
   "properties": {
    "ss": {
     "type": "string"
    }
   }
  }
 },
 "methods": {
  "beCoosl": {
   "id": "messages.beCoosl",
   "path": "beCool/{name}",
   "httpMethod": "GET",
   "parameters": {
    "name": {
     "type": "string",
     "required": true,
     "location": "path"
    }
   },
   "parameterOrder": [
    "name"
   ],
   "response": {
    "$ref": "Obj"
   },
   "scopes": [
    "https://www.googleapis.com/auth/userinfo.email"
   ]
  },
  "sayHi": {
   "id": "messages.sayHi",
   "path": "sayHi/{name}",
   "httpMethod": "GET",
   "parameters": {
    "name": {
     "type": "string",
     "required": true,
     "location": "path"
    }
   },
   "parameterOrder": [
    "name"
   ],
   "response": {
    "$ref": "Obj"
   },
   "scopes": [
    "https://www.googleapis.com/auth/userinfo.email"
   ]
  }
 }
}

-------------- REQUEST  --------------
POST https://google-api-client-libraries.appspot.com/generate
Accept-Encoding: gzip
User-Agent: Google-HTTP-Java-Client/1.22.0-SNAPSHOT (gzip)
Content-Type: multipart/form-data; boundary=----GoogleApisClientBoundary1468504758951
Content-Length: 3521

curl -v --compressed -X POST -H 'Accept-Encoding: gzip' -H 'User-Agent: Google-HTTP-Java-Client/1.22.0-SNAPSHOT (gzip)' -H 'Content-Type: multipart/form-data; boundary=----GoogleApisClientBoundary1468504758951' -d '@-' -- 'https://google-api-client-libraries.appspot.com/generate' << $$$
Total: 3,521 bytes
------GoogleApisClientBoundary1468504758951
Content-Disposition: form-data; name="lang"

java
------GoogleApisClientBoundary1468504758951
Content-Disposition: form-data; name="content"

{
 "kind": "discovery#restDescription",
 "etag": "\"zRMgE0l9nVDW4S28VYYcYQF9UW4/mqtrDcW_3U-712jircsvouwk608\"",
 "discoveryVersion": "v1",
 "id": "messages:v1",
 "name": "messages",
 "version": "v1",
 "description": "rest endpoint regarding message delivery",
 "ownerDomain": "korayucar.xyz",
 "ownerName": "Koray Uçar",
 "packagePath": "messages",
 "icons": {
  "x16": "http://www.google.com/images/icons/product/search-16.gif",
  "x32": "http://www.google.com/images/icons/product/search-32.gif"
 },
 "protocol": "rest",
 "baseUrl": "https://gae-educloud.appspot.com/_ah/api/messages/v1/",
 "basePath": "/_ah/api/messages/v1/",
 "rootUrl": "https://gae-educloud.appspot.com/_ah/api/",
 "servicePath": "messages/v1/",
 "batchPath": "batch",
 "parameters": {
  "alt": {
   "type": "string",
   "description": "Data format for the response.",
   "default": "json",
   "enum": [
    "json"
   ],
   "enumDescriptions": [
    "Responses with Content-Type of application/json"
   ],
   "location": "query"
  },
  "fields": {
   "type": "string",
   "description": "Selector specifying which fields to include in a partial response.",
   "location": "query"
  },
  "key": {
   "type": "string",
   "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
   "location": "query"
  },
  "oauth_token": {
   "type": "string",
   "description": "OAuth 2.0 token for the current user.",
   "location": "query"
  },
  "prettyPrint": {
   "type": "boolean",
   "description": "Returns response with indentations and line breaks.",
   "default": "true",
   "location": "query"
  },
  "quotaUser": {
   "type": "string",
   "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters. Overrides userIp if both are provided.",
   "location": "query"
  },
  "userIp": {
   "type": "string",
   "description": "IP address of the site where the request originates. Use this if you want to enforce per-user limits.",
   "location": "query"
  }
 },
 "auth": {
  "oauth2": {
   "scopes": {
    "https://www.googleapis.com/auth/userinfo.email": {
     "description": "View your email address"
    }
   }
  }
 },
 "schemas": {
  "Obj": {
   "id": "Obj",
   "type": "object",
   "properties": {
    "ss": {
     "type": "string"
    }
   }
  }
 },
 "methods": {
  "beCoosl": {
   "id": "messages.beCoosl",
   "path": "beCool/{name}",
   "httpMethod": "GET",
   "parameters": {
    "name": {
     "type": "string",
     "required": true,
     "location": "path"
    }
   },
   "parameterOrder": [
    "name"
   ],
   "response": {
    "$ref": "Obj"
   },
   "scopes": [
    "https://www.googleapis.com/auth/userinfo.email"
   ]
  },
  "sayHi": {
   "id": "messages.sayHi",
   "path": "sayHi/{name}",
   "httpMethod": "GET",
   "parameters": {
    "name": {
     "type": "string",
     "required": true,
     "location": "path"
    }
   },
   "parameterOrder": [
    "name"
   ],
   "response": {
    "$ref": "Obj"
   },
   "scopes": [
    "https://www.googleapis.com/auth/userinfo.email"
   ]
  }
 }
}

------GoogleApisClientBoundary1468504758951
Content-Disposition: form-data; name="layout"

gradle
------GoogleApisClientBoundary1468504758951
-------------- RESPONSE --------------
HTTP/1.1 500 Internal Server Error
X-Cloud-Trace-Context: da451e600727f4473e375162c9e82619
Alt-Svc: quic=":443"; ma=2592000; v="36,35,34,33,32,31,30,29,28,27,26,25"
Date: Thu, 14 Jul 2016 13:59:19 GMT
Content-Length: 0
Alternate-Protocol: 443:quic
Content-Type: text/html; charset=utf-8
Server: Google Frontend
Cache-Control: no-cache

Done running endpoints command get-client-lib
:appengineEndpointsGetClientLibs FAILED
:appengineEndpointsGetClientLibs (Thread[Daemon worker,5,main]) completed. Took 1.39 secs.

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':appengineEndpointsGetClientLibs'.
> There was an error running endpoints command get-client-lib: 500 Internal Server Error

* Try:
Run with --stacktrace option to get the stack trace. Run with --debug option to get more log output.

BUILD FAILED

Total time: 2.888 secs
Stopped 0 compiler daemon(s).
Received result Failure[value=org.gradle.initialization.ReportedException: org.gradle.internal.exceptions.LocationAwareException: Execution failed for task ':appengineEndpointsGetClientLibs'.] from daemon DaemonInfo{pid=5098, address=[394442d1-42c6-43c9-9712-6957ea3ef995 port:49546, addresses:[/0:0:0:0:0:0:0:1, /<IP_ADDRESS>]], idle=true, lastBusy=1468504726549, context=DefaultDaemonContext[uid=9d5d6271-bf19-42cc-bbd6-9180c693f55b,javaHome=/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home,daemonRegistryDir=/Users/koray2/.gradle/daemon,pid=5098,idleTimeout=10800000,daemonOpts=-XX:MaxPermSize=256m,-XX:+HeapDumpOnOutOfMemoryError,-Xmx1024m,-Dfile.encoding=UTF-8,-Duser.country=US,-Duser.language=en,-Duser.variant]} (build should be done).

I tried it and it seems to be working right now.  It's possible the service is/was experiencing issues?

The error stands for me. I conclude that server does not like my input for some reason. Does the server has an issue management to your knowledge?

Oh, well I can try to find someone who works on the service if this is still affecting you. You closed the issue so I assume it isn't?

I thought this is the wrong place to keep the issue open according to your feedback.
I kind of gave up on this. Does not worth that much effort.
Thanks for the help.


Upgrade the AwaDB from v0.3.7 to v0.3.9 and change the default embeddings

Upgrade the AwaDB from v0.3.7 to v0.3.9
Change the default embedding to AwaEmbedding

@rlancemartin, @eyurtsev Please review, thanks!

should we bump the version in pyproject? guessing it'll error if <0.3.9 now?

should we bump the version in pyproject? guessing it'll error if <0.3.9 now?

Thank you! I have bumped the AwaDB version from 0.3.3 to >=0.3.9.


Use UD public domain profile links

Unstoppable Domains support domain profiles where the domain owner can fill in more data/links about their domain.
If the domain profile does not exist the user will be redirected to search (same URL as currently being used).
Just a small tweak.
Thanks for contribution!

Thank you :D


Migrating to Dart 2

Users of Dart 1 should use previous versions.
Fixes https://github.com/alexeieleusis/greencat/issues/23