ch09/download/DownloadFirefox*Test is interrupted by a Dialog "Cancel All Downloads?"

When I run
https://github.com/kazurayam/selenium-webdriver-java/blob/develop/selenium-webdriver-junit4/src/test/java/io/github/bonigarcia/webdriver/junit4/ch09/download/DownloadFirefoxJUnit4Test.java
Firefox displays a modal dialog "Cancel All Download?" as the following screenshot shows

My Firefox version is 119.0.
I want to avoid being interrupted by the dialog.
Possibly I can do it by specifying some Firefox Option.

In the console, I found the following messages:
> Task :selenium-webdriver-junit4:compileJava UP-TO-DATE
> Task :selenium-webdriver-junit4:processResources UP-TO-DATE
> Task :selenium-webdriver-junit4:classes UP-TO-DATE
> Task :selenium-webdriver-junit4:compileTestJava UP-TO-DATE
> Task :selenium-webdriver-junit4:processTestResources UP-TO-DATE
> Task :selenium-webdriver-junit4:testClasses UP-TO-DATE
2023-11-07 21:09:28 [Test worker] DEBUG i.g.bonigarcia.wdm.WebDriverManager.<init>(227) - Using WebDriverManager 5.6.0
2023-11-07 21:09:28 [Test worker] DEBUG i.g.b.wdm.cache.ResolutionCache.checkKeyInResolutionCache(186) - Resolution firefox=119 in cache (valid until 21:14:35 07/11/2023 JST)
2023-11-07 21:09:28 [Test worker] DEBUG i.g.b.wdm.cache.ResolutionCache.checkKeyInResolutionCache(186) - Resolution firefox119=0.33.0 in cache (valid until 20:14:35 08/11/2023 JST)
2023-11-07 21:09:28 [Test worker] INFO  i.g.bonigarcia.wdm.WebDriverManager.resolveDriverVersion(1229) - Using geckodriver 0.33.0 (resolved driver for Firefox 119)
2023-11-07 21:09:28 [Test worker] DEBUG i.g.bonigarcia.wdm.WebDriverManager.manage(1184) - Driver geckodriver 0.33.0 found in cache
2023-11-07 21:09:28 [Test worker] INFO  i.g.bonigarcia.wdm.WebDriverManager.exportDriver(1290) - Exporting webdriver.gecko.driver as /Users/kazuakiurayama/.cache/selenium/geckodriver/mac64/0.33.0/geckodriver
Nov 07, 2023 9:09:36 PM org.openqa.selenium.os.ExternalProcess$Builder lambda$start$0
WARNING: failed to copy the output of process 14770
java.io.IOException: Stream closed
	at java.base/java.io.BufferedInputStream.getBufIfOpen(BufferedInputStream.java:168)
	at java.base/java.io.BufferedInputStream.read(BufferedInputStream.java:334)
	at java.base/java.io.InputStream.transferTo(InputStream.java:782)
	at org.openqa.selenium.os.ExternalProcess$Builder.lambda$start$0(ExternalProcess.java:209)
	at java.base/java.lang.Thread.run(Thread.java:833)

> Task :selenium-webdriver-junit4:testSelective
Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0.
You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.
For more on this, please refer to https://docs.gradle.org/8.4/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation.
BUILD SUCCESSFUL in 14s
5 actionable tasks: 1 executed, 4 up-to-date
21:09:37: Execution finished ':selenium-webdriver-junit4:testSelective --tests "io.github.bonigarcia.webdriver.junit4.ch09.download.DownloadFirefoxJUnit4Test"'.

Why Firefox displays the dialogue "Cancel All Downloads?"
The process of downloading files from the remote URL runs asynchronously from the browser's process. Downloading may take long seconds. If you try to close the browser while one or more downloading processes are still running, then the Firefox displays the dialog and ask if you really want to stope the browser window.
If you read the source of DownloadFirefox*Test, the current code has the following lines:
        ConditionFactory await = Awaitility.await()
                .atMost(Duration.ofSeconds(5));
        File wdmLogo = new File(targetFolder, "webdrivermanager.png");
        await.until(() -> wdmLogo.exists());

        File wdmDoc = new File(targetFolder, "webdrivermanager.pdf");
        await.until(() -> wdmDoc.exists());

I understand the intention here is

the code waits for the files "webdrivermanager.png" and "webdrivermanager.pdf" to be downloaded and to become present. If the download process of the PDF file took 2 seconds, then the test should wait for 2 seconds until the PDF file become present
once the file has become present, then the @Test-annotated method will finish, then the @After-annotated code

    @After
    public void teardown() {
        driver.quit();
    }

will invoked --- the browser will be closed.
4. in other words, the code assumes that the 2 files are initially not there.
I  reviewed the current code, and found that the code does not remove the 2 files created by the previous run --- the files are already there; therefore the test will not wait for the downloading process to finish; it will stop the browser too soon.
So I changed the code to remove the previous output sub directory, as this:
   @BeforeClass
    static void setupClass() throws IOException {
        too = TestOutputOrganizerFactory.create(DownloadFirefoxNGTest.class);
        too.cleanOutputSubDirectory();
    }

I expected that this change would be enough to avoid the dialog.
But ... that was not enough. It seemed that the code
await.until(() -> wdmDoc.exists());
is not effective.
So, I inserted a line of hard wait:
await.until(() -> wdmDoc.exists());

Thread.sleep(3000);

Now the dialog disappeared.


Update docs for cgmodel

Description
Fixing a bunch of docstring formatting issues in the cgmodel class, and cleaning up the documentation example for using cgmodel class.
Questions

Should we get rid of the 'charge' attribute of cgmodel? We currently have charge as part of the particle dictionaries, but getting rid of it may create some incompatibility with cgmodels we have saved previously
What is the 'exclusions' attribute of cgmodel used for?

@mrshirts do you know what we were using the cgmodel.exclusions attribute for?
I think I will keep all the unused cgmodel attributes in the code for now so nothing gets messed up with all the existing cgmodel files we have.


Geographic region from settings

The geographic region and 'goto' buttons should be taken from the config file.

Added in PR #80.


ui-sref does not trigger dropdown close

The issues forum is NOT for support requests. It is for bugs and feature requests only.
Please read https://github.com/angular-ui/bootstrap/blob/master/CONTRIBUTING.md and search
existing issues (both open and closed) prior to opening any new issue and ensure you follow the instructions therein.
Bug description:
When clicking an anchor tag using the ui-sref to link to a new state, the dropdown does not close.
Link to minimally-working plunker that reproduces the issue:
https://plnkr.co/edit/Rz3AbgnYnWI34DjuByY6?p=preview
Version of Angular, UIBS, and Bootstrap
Angular: 1.5.8
UIBS: 2.1.3
Bootstrap: 3.3.6
UI-Router: 1.0.0-beta.2

found out it was an issue with UI Router, closing

@enkhi77 Could you please elaborate what the UI Router issue was? I'm having the same problem.


Tarpaulin not reporting per-package coverage in workspaces?

My workspace has about 30 packages and I am trying to report coverage per-package in the workspace but right now if I run tarpaulin on a single package, either via cargo tarpaulin -p package1 or by running cargo tarpaulin in the package directory, it reports coverage numbers for all the other packages, and so the resulting the coverage numbers reported are very low.
Is there a way to have coverage reported for only the package on which it is invoked?

You should be able to do it by just cd'ing into the package and running cargo tarpaulin there. If the package makes use of code from other packages an --exclude-files ../* might work (I'd have to check that but also globs are changing impl soon)

Ah; the --exclude-files flag worked. Thanks!

cd mypackage # workspace member
cargo tarpaulin --skip-clean --exclude-files ../* -p appsuite-mypackage

That does not work in my case. It reports coverage for all packages (even non workspace members as it seems the workspace's exclude is not taken into account but that might be another topic.. ).

I'm seeing a regression here; if I run cargo tarpaulin -p mypackage --exclude-files ../* I still get all the other workspace package code showing up in my coverage. It doesn't matter if I quote the glob to prevent shell expansion or not, it seems to happen regardless.


Create amongus.py

Created a python program to draw among us characters using the Turtle package

Great PR @sumitpandey23 !! Interesting project. I have a few asks before merging the code:

Please add a short Readme.md file in project path to let people understand the project.
I don't think the function backpack() is working as intended. Might be some minor changes required.

Let me know when these are done, I will merge it. Thanks!


How to handle/trace normal function invocations

Is it possible to trace normal function invocations in zipkin trace under same trace

Have a look at in-process tracing .
Feel free to drop by on the gitter channel for more questions if this is not clear.


Implemented fix for Cygwin environments

When using cygwin the environment is 'cygwin', this isn't catched by the _guess_lib_name() function

Thanks!

No problem!
I'm trying to get beets (and all plugins) up and running in cygwin. And this was one of the last bumps in the road ;-)

Ah, awesome! Let me know if you find non-obvious stuff; I'll add it to the beets docs for posterity.


 text variation

I add some example on the "cartilha-de-elementos" page because we haven't a page to add some utility code like that. I think that it's time to refact our doc.
close #1653

testing...

when the text is larger than 300 px, is broken in Mobile.

@itumoraes  the attribute "data-ls ..." we normally use with functions js, as this element only uses CSS, I would create a class instead of attribute.

@deividmarques I talked with our designer and we changed the mobile solution to fix this. Can you test it again?
About the data-ls attribute usage I think that we can use this on JS and CSS cases because it's not exactly represent some conflict and the text variation is setted on the attr to put it's on the :before content using CSS.

@itumoraes  :+1:

:+1:


Introduce set function into storage maps

Storage value already had a set API for "setting" the value from a query instance (which if it's an OptionQuery would actually remove the value if it's a None). Maps did not have this, but now they do 🎉

Test failure unrelated.


Update LICENSE

Should this be updated?

also see https://github.com/lightningnetwork/lnd/pull/2644

@btcparadigm, remember to re-request review from reviewers when ready

Hopefully #6239 replaces this PR. Couldn't figure out how to rebase this correctly.

You can close this one if it's replaced by #6239.


chore: add export getParents from nested docs plugin

Description

[x] I have read and understand the CONTRIBUTING.md document in this repository.

Type of change

[x] Chore (non-breaking change which does not add functionality)

@paulpopus

Thanks a lot!


Failed to copy resources to RootFS" on some 11.2.x (and maybe 11.1.x?) devices

Message: Failed to copy over our resources to RootFS.
Line of code: 1472
Check: _assert(rv == 0, message)
Function that gets checked: rv = mkdir("/jb", 0755)
Errno: 2 (No such file or directory)
The first weird issue is mkdir() returning `No such file or directory" when we're creating a directory on root. What we pass to mkdir is not supposed to exist at the first place.
I've got someone on Twitter to run a few SSH commands to get more info.
ls / shows that "electra" and "jb" do exist. ls /jb and: ls /electra instead give No such file or directory. A quick attribute check: ls -l / gives ls: cannot access '/electra': No such file or directory and same for /jb and /User. Then, the paths are listed, but instead of file attributes there are question marks, like so:
l?????????  ? ? ... /jb
Running rm, mkdir or any commands on them also gives "No such file or directory". What's going on?

Does the user have had a system warning alert shows "Storage is almost full"?

I'm the user, no it's not has a warning storage si almost full, but my iphone storage was has a bug, i cannot see usage, displays that I used already 60 gb, but fact I only used 8 gb

We have the same issue when trying to mount 1131 using "fake mnt_data" method.
ls command returns nothing and won't exit for some of the time.
try to use echo to write some file and cat it


unsure on how to install on server

was hoping you could give a step by step breakdown on how to install onto server

check the wiki here


GH-41806: [GLib][CI] Use vcpkg for C++ dependencies when building GLib libraries with MSVC

Rationale for this change
This is more consistent as vcpkg is now used for both the Arrow C++ dependencies and GLib library dependencies, and also fixes building arrow-flight-glib and arrow-flight-sql-glib which previously failed due to a missing zlib dependency.
What changes are included in this PR?

Configure the MSVC GLib build to use VCPKG as the dependency source for the C++ build
Configure GitHub packages based vcpkg caching (see https://learn.microsoft.com/en-us/vcpkg/users/binarycaching#quickstart-github)
Enable building Flight and Flight SQL

Are these changes tested?
NA
Are there any user-facing changes?
No
Because GitHub packages is being used for caching, this will start creating GitHub packages that are visible in the main page of the Arrow GitHub repository by default. Eg. you can see them in the right panel on the crossbow repo which also runs tasks that use GitHub packages for vcpkg caching: https://github.com/ursacomputing/crossbow.
The Arrow repository doesn't currently publish any packages, so it would probably be best to hide these by default to avoid confusing users and adding unnecessary noise. Someone with admin privileges on the Arrow GitHub repository would need to click the cog on the home page and hide this section:

If this isn't desirable I could look into other ways of caching instead, eg. using a file based cache combined with GitHub actions cache action, or the experimental GitHub actions cache in vcpkg.

GitHub Issue: #41806

The binary caching is failing in the CI builds for this PR but this is only because GitHub doesn't allow writing to the packages in a build for a PR from a fork (see https://docs.github.com/en/actions/security-guides/automatic-token-authentication#permissions-for-the-github_token).
Eg. there are log lines like:
Uploading binaries for 'vcpkg-cmake-config:x64-windows' to 'NuGet' source "GitHub".
Pushing NuGet to "GitHub" failed. Use --debug for more information.
Stored binaries in 0 destinations in 1.9 s.

The caching does work when I tested it on my fork, eg. see https://github.com/adamreeve/arrow/actions/runs/9253178800/job/25452360216, where the "Build C++ VCPKG dependencies" step took 1 minute rather than 50.
Once this PR is merged to main then any PR builds should be able to read from the cache but won't be able to write to it.

@kou is there anything more needed on this PR? There are a few CI failures after merging from main but these are also failing on main (the c_glib MinGW build and C++ ARM64 build) or look like a transient error (the appveyor build)

Sorry. I missed this. I've merged.

👍 thanks


Read/Write whole index

We were referring to cocomm and SDO Upload/Download APIs for SDO read/write transactions.
We could see that "subindex" is mandatory field in doing the SDO transaction.
If suppose an OD index is record type and having 3 sub indexes
Subindex 0 - uint8_t (1 bytes)
Subindex 1 - uint8_t (1 bytes)
Subindex 2 - uint16_t (2 bytes)
Can we update all sub-indexes(overall 4 bytes - sum of all) in CANOpen node OD index through one SDO transaction? Or this will give away the SDO transaction error?

Thanks for the quick reply.
Please confirm on the meaning of OD entry here. Is OD entry representing data  on whole Index(4 bytes) or sub index?


Splinter Cell: Double Agent → hang when I want to launch a new game

Click on new game, then choose the difficulty, then it hangs before the loading page.
Software information
Name of the game, settings used etc.
System information

GPU: Nvidia GT 730M
Driver: 435.21
Wine version: Proton 4.11
DXVK version: #891

Apitrace file(s)
https://mega.nz/#!6yo3CICJ!DL9Dz7i2RRavPNWlnfBUJiuR2ftft-_sins9g3TmDe4
Log files
steam-13580-d3d9.log
steam-13580-d9vk.log

Requires weird d3d9 predication
https://docs.microsoft.com/en-us/windows/win32/direct3dhlsl/setp-comp---ps

Can you try now?

With #895, the issue is still here.

Does playing the trace back also hang for you?

149032.109:0055:0056:fixme:d3dx:D3DXCreateTextureFromFileInMemoryEx Generation of mipmaps for compressed pixel formats is not implemented yet.
149032.111:0055:0056:fixme:d3dx:D3DXCreateTextureFromFileInMemoryEx Generation of mipmaps for compressed pixel formats is not implemented yet.

Please also use native D3D9X

Does playing the trace back also hang for you?

No, everything is ok.

Please also use native D3D9X

It's weird, it should have been native d3d9... But I reinstalled it and the issue is still here.
New log:
steam-13580-d9vk-2.log

It doesn't hang anymore 🥳


Add option paste full seed phrase for restore

[x] Add option paste full seed phrase for restore

Checked


Crystal and GMP

The previous discussion was in 2015 but tested with pi digits using BigInteger and how do we implement GMP?
https://groups.google.com/forum/#!topic/crystal-lang/cY8bImdHWV4
Tested PHP 7.1 on macOS Mojave completed around 2 seconds for the same number of iterations:
https://benchmarksgame-team.pages.debian.net/benchmarksgame/program/pidigits-php-5.html
C, Ruby and Crystal Source code:
https://github.com/kostya/crystal-benchmarks-game#pidigits
https://benchmarksgame-team.pages.debian.net/benchmarksgame/program/pidigits-yarv-1.html

What I mean is something like this:
require "big"
N = (ARGV[0]? || 100).to_i

struct BigInt
  def add(other : BigInt) : self
    LibGMP.add(self, self, other)
    self
  end

  def add(other : Int) : self
    if other < 0
      sub(other.abs)
    elsif other <= LibGMP::ULong::MAX
      LibGMP.add_ui(self, self, other)
    else
      add(other.to_big_i)
    end
    self
  end

  def sub(other : Int) : self
    if other < 0
      add(other.abs)
    elsif other <= LibGMP::ULong::MAX
      LibGMP.sub_ui(self, self, other)
    else
      sub(other.to_big_i)
    end
    self
  end

  def sub(other : BigInt) : self
    LibGMP.sub(self, self, other)
    self
  end

  def mul(other : BigInt) : self
    LibGMP.mul(self, self, other)
    self
  end

  def mul(other : LibGMP::IntPrimitiveSigned) : self
    LibGMP.mul_si(self, self, other)
    self
  end

  def mul(other : LibGMP::IntPrimitiveUnsigned) : self
    LibGMP.mul_ui(self, self, other)
    self
  end
end

i = 0
k = 0
ns = 0.to_big_i
a = 0.to_big_i
t = 0
u = 0.to_big_i
k1 = 1
n = 1.to_big_i
d = 1.to_big_i

while true
  k += 1
  t = n << 1
  n.mul(k)
  k1 += 2
  a.add(t)
  a.mul(k1)
  d.mul(k1)
  if a >= n
    t, u = (n * 3 + a).divmod(d)
    u.add(n)
    if d > u
      ns.mul(10)
      ns.add(t)
      i += 1
      if i % 10 == 0
        print "%010d\t:%d\n" % {ns.to_u64, i}
        ns = 0.to_big_i
      end
      break if i >= N

      a.sub(d*t)
      a.mul(10)
      n.mul(10)
    end
  end
end

That already works almost twice as fast as the original code.

Do you still want someone else to implement this? I can have a look at it later today I think :)

True, it's twice faster and closer the gap to ~3x slower than PHP.
Using gtime to measure
PHP consumes 14.5MB (CPU 99%) memory
Crystal consumes 3.4MB (CPU 140%) memory
PHP gains a small performance advantage using ob_start for output buffer.

@proyb6 Are you talking about the pidigits algorithm now or about the changes to big_int.cr asterite is talking about?

About the pidigits algorithm.

@proyb6 Well you could buffer like the example below. It gives me around 15-20% faster execution. But still it is a long way to close in on i.e. rust that uses GMP and I can't figure out the exact reason.
require "big"
N = (ARGV[0]? || 100).to_i

struct BigInt
  def add(other : BigInt) : self
    LibGMP.add(self, self, other)
    self
  end

  def add(other : Int) : self
    if other < 0
      sub(other.abs)
    elsif other <= LibGMP::ULong::MAX
      LibGMP.add_ui(self, self, other)
    else
      add(other.to_big_i)
    end
    self
  end

  def sub(other : Int) : self
    if other < 0
      add(other.abs)
    elsif other <= LibGMP::ULong::MAX
      LibGMP.sub_ui(self, self, other)
    else
      sub(other.to_big_i)
    end
    self
  end

  def sub(other : BigInt) : self
    LibGMP.sub(self, self, other)
    self
  end

  def mul(other : BigInt) : self
    LibGMP.mul(self, self, other)
    self
  end

  def mul(other : LibGMP::IntPrimitiveSigned) : self
    LibGMP.mul_si(self, self, other)
    self
  end

  def mul(other : LibGMP::IntPrimitiveUnsigned) : self
    LibGMP.mul_ui(self, self, other)
    self
  end
end

#calculate size of buffer
buf_size = 0
order = 2
(0..N).each do |i|
  if i % 10 == 0 && i > 0
    buf_size += 13 + order
    if (i + 10) % 10**order == 0
      order += 1
    end
  end
end
buffer = String::Builder.new(buf_size)

i = 0
k = 0
ns = 0.to_big_i
a = 0.to_big_i
t = 0
u = 0.to_big_i
k1 = 1
n = 1.to_big_i
d = 1.to_big_i

while true
  k += 1
  t = n << 1
  n.mul(k)
  k1 += 2
  a.add(t)
  a.mul(k1)
  d.mul(k1)
  if a >= n
    t, u = (n * 3 + a).divmod(d)
    u.add(n)
    if d > u
      ns.mul(10)
      ns.add(t)
      i += 1
      if i % 10 == 0
        #print "%010d\t:%d\n" % {ns.to_u64, i}
        buffer << "%010d\t:%d\n" % {ns.to_u64, i}
        ns = 0.to_big_i
      end
      break if i >= N

      a.sub(d*t)
      a.mul(10)
      n.mul(10)
    end
  end
end

print buffer.to_s

@cfsamson My assumption if using unsafe memory or pointer may speed up?

I think the main issue to figure out, that would benefit Crystal in other ways as well, is to figure out why the interaction with GMP is slower than PHP and Python. I tried to implement Crystal in the same way the Python code was written, and it has the same problem as your original code. But the Python code does instasiate new instances as well, there is no good reason Python should be doing that faster than Crystal that I can think of.
Asterite was probably on the right track reducing the amount of new objects, but there must be something in the Crystal/GMP interaction that is slower than others besides that and if we figured out that the example above should be much faster too. I looked a bit into it, but I don't know enough about the GMP C library to see what can cause it. Maybe a solution is to look into what Python/Php does in their implementation besides what Asterite mentioned?

For your information, neither Ruby nor Python use GMP for big integers. They use custom code.

On the move now, so just brief response but if you look at the benchmarks, they use gmpy2 and it’s surprisingly fast. I haven’t looked into gmpy2 closely yet but assumed it was gmp beneath it.
https://benchmarksgame-team.pages.debian.net/benchmarksgame/program/pidigits-python3-2.html
Carl Fredrik Samson

sep. 2018 kl. 13:00 skrev Ary Borenszweig <notifications<EMAIL_ADDRESS>
For your information, neither Ruby nor Python use GMP for big integers. They use custom code.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://github.com/crystal-lang/crystal/issues/6646#issuecomment-418325553, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AH85uHDa3Ab3A-vCFDA3kVF-0djKyAzIks5uXl1TgaJpZM4WWmws.

Ooh... The benchmark does use GMP. I was talking about python and ruby big integers.

Now, we are quite intrigue to learn too because it will be useful for e-commerce, financial and scientific computation.

:) Well, it looks like all the fastest benchmarks are all using gmp, the top 10-15 entries is probably just comparing how efficiently they integrate with an external C library. Still, Crystal should be doing really good there so it's interesting to look into.

I've looked into this, unfortunately i haven't found out the reason for the differeces. Python uses GMP with a heavily custimozed C wrapper for Pyhton it looks like, and Rust uses almost pure GMP for the heavy load but looks quite similar in practice to the implemenation above prefering to mutate a object instead of instansiating new ones. I have some questions though, maybe @asterite  has some answers:

When you pass inn self to LibGMP, is the value copied as a new value since it's a struct or does it mutate? And is copying a possibly large object as BigInt costly?

Is C calls from Crystal generally cheap or could the incur some overhead of significance?

When you pass inn self to LibGMP, is the value copied as a new value since it's a struct or does it mutate? And is copying a possibly large object as BigInt costly?

No, because you're passing in a pointer, passing self to a LibGMP call actually calls self.to_unsafe which returns a pointer.

Is C calls from Crystal generally cheap or could they incur some overhead of significance?

They have zero overhead, calls are generated exactly the same way a C compiler would generate calls.

@cfsamson
I have a look at NIM repo which compares GMP mpz_t and BigInts, the latter is significantly slower.
https://github.com/def-/nim-benchmarksgame/blob/master/pidigits_gmp.nim
https://github.com/def-/nim-benchmarksgame/blob/master/pidigits_bigints.nim
Is it something we can test with mpz_t instead of Crystal BigInts too?
https://github.com/crystal-lang/crystal/blob/3b3bf3fa2bb51cc15b6db3829c3c54493c8924d6/src/big/big_int.cr

@proyb6 If I'm not mistaken, the BigInts library in Nim is using a Nim implementation of their own BigInt library, and the other one is using GMP and that's the same as Crystal does, Crystal only "wrapps" calls to GMP in a crystal struct to make it better to use and a natural part of the language. In the benchmarks, noone can match the optimizations in GMPlib in their own implementations.
But the big difference is that both Go, Nim, Rust use the GMP library directly in the benchmarks, instead of wrapping it as a part of their language. That might enable some more efficiency spesifically for this benchmark. I.e. both Rust and Nim uses functions like mpz_cmp for comparison, mpz_addmul_ui ,  mpz_submul_ui and  mpz_tdiv_q for other operations. the  Crystal does not use these. I don't know how much of an impact that has but that's the only kind of difference I can think of after asterite made the adjustments above to avoid the new allocations that were there originally.
So we could make the Crystal implementation similar to Nim and Rust, and it would probably be faster, if you want to have a go at it so try it :) That would be comparing apples to apples atleast.
The esiest way would probably be to do the same as PHP and use the gmp_div_q and gmp_cmp in the implementation we already have above and see if that makes any difference.

@cfsamson I'm new to Crystal, very much open to let experience contributors do the implementations.

I can implement all the mutating methods for BigInt and BigFloat. The only "ugly" thing is that they'll have names like add, mul, sub, etc., because += and others can't be overloaded (and it would be very difficult to do that without changing a big portion of the language to return references to memory).
So for example:
a = # some big int
b = # some big int
a.add(b) # a += b

The problem is that this might also not be the most efficient way to implement it. For example in Go we have something like this:
a = # some big int
b = # some big int
c = # some big int
a.add(b, c) # a = b + c

this is the most versatile way to implement this, because it lets you reuse all the memory you want. Say for example you need to compute b + c and you already had a BigInt variable that you don't use anymore: with this you can avoid allocating new memory for the result by reusing the memory in a.
So I suggest we implement all the operations like in Go, which also match GMP's interface. We can still keep the usual operators if one doesn't need super extra performance and prefers more readable code. But we can provide another "uglier but more efficient" interface in case you need it.
Thoughts?
/cc @bcardiff @RX14 @straight-shoota

I like the idea at least. I've looked a bit into this and this suggestion is more in line with the other implementations I've seen too. However, looking into the differences between implementations, I noticed there seems to be only certain circumstances that makes the existing implementation in Crystal slow compared to i.e. Python and PHP, which was what initially surprised me. I implemented the pidigits example after the same pattern as PHP, and I noticed the execution was faster in Crystal except for until four lines of code marked with ####### below, that made it slower than Python (which has a very similar implementation to PHP):
struct BigInt
  def add(other : BigInt) : self
    LibGMP.add(self, self, other)
    self
  end

  def add(other : Int) : self
    if other < 0
      sub(other.abs)
    elsif other <= LibGMP::ULong::MAX
      LibGMP.add_ui(self, self, other)
    else
      add(other.to_big_i)
    end
    self
  end

  def sub(other : Int) : self
    if other < 0
      add(other.abs)
    elsif other <= LibGMP::ULong::MAX
      LibGMP.sub_ui(self, self, other)
    else
      sub(other.to_big_i)
    end
    self
  end

  def sub(other : BigInt) : self
    LibGMP.sub(self, self, other)
    self
  end

  def mul(other : BigInt) : self
    LibGMP.mul(self, self, other)
    self
  end

  def mul(other : LibGMP::IntPrimitiveSigned) : self
    LibGMP.mul_si(self, self, other)
    self
  end

  def mul(other : LibGMP::IntPrimitiveUnsigned) : self
    LibGMP.mul_ui(self, self, other)
    self
  end

  def tdiv_q(other : LibGMP::IntPrimitiveSigned)
    LibGMP.tdiv_q(n1)
  end
end

# calculate size of buffer
buf_size = 0
order = 2
(0..N).each do |i|
  if i % 10 == 0 && i > 0
    buf_size += 13 + order
    if (i + 10) % 10**order == 0
      order += 1
    end
  end
end
buffer = String::Builder.new(buf_size)

w = 0.to_big_i
k = 1
n1 = 4.to_big_i
n2 = 3.to_big_i
d = 1.to_big_i
i = 0

produced = 0
extracted = 0

while true
  u = n1.tdiv(d)
  v = n2.tdiv(d)
  # p u <=> v
  if (u <=> v) == 0
    buffer << u
    i += 1
    # echo
    break if i == N

    # extract
    extracted += 1
    u = d * (-10 * u)
    n1.mul(10)
    n1.add(u)
    n2.mul(10)
    n2.add(u)
  else
    # produce
    produced += 1
    k2 = k << 1
    u = (k2 - 1)*n1 ###############
    v = n2 + n2
    w = (k - 1)*n1 ###
    n1 = u + v
    u = (k + 2)*n2 #######################
    n2 = w + u
    d = (k2 + 1) * d ###
    k += 1
  end
end

print buffer.to_s

(No formatting of output).
After looking more into it it seems that actually the adding of two bignums is really slow, and could be avoided if you checked if the "BigInts" actually was larger thanInt64::MAX before adding or subtracting. If they were smaller it was much faster to cast them as normal int's add them and then cast the result back as a BigInt if nessecary (and in the code above that was the case a lot of the time). I could not find a way to implement this check nicely though without rewriting code for the normal operators, there was no nice way to mutate self without writing the check in C and add another layer above gmp (which is what I think Python does to solve this exact issue). I'll look more into it when I have time, but I thought I'd share it anyway.

I’m fine with the suggestion.

@asterite looks good to me

I agree. I actually tried something similar, but didn't manage to find a way to reuse the memory of a BigInt (struct) without resorting to writing something in C, but it's obvious when you write it like that. It must be the smartest way of doing it.

Hmm, maybe keep both options available? Just fixed what I got stuck at yesterday with the suggestion from @asterite and this is the fastest implementation I've gotten i Crystal so far, and I have an other idea as well that I will try later:
require "big"
N = (ARGV[0]? || 100).to_i

struct BigInt

    def add(other : BigInt) : self
        LibGMP.add(self, self, other)
        self
      end

      def add(other : Int) : self
        if other < 0
          sub(other.abs)
        elsif other <= LibGMP::ULong::MAX
          LibGMP.add_ui(self, self, other)
        else
          add(other.to_big_i)
        end
        self
      end

      def sub(other : Int) : self
        if other < 0
          add(other.abs)
        elsif other <= LibGMP::ULong::MAX
          LibGMP.sub_ui(self, self, other)
        else
          sub(other.to_big_i)
        end
        self
      end

      def sub(other : BigInt) : self
        LibGMP.sub(self, self, other)
        self
      end

      def mul(other : BigInt) : self
        LibGMP.mul(self, self, other)
        self
      end

      def mul(other : LibGMP::IntPrimitiveSigned) : self
        LibGMP.mul_si(self, self, other)
        self
      end

      def mul(other : LibGMP::IntPrimitiveUnsigned) : self
        LibGMP.mul_ui(self, self, other)
        self
      end

# --------------------- NEW METHODS -----------------------------
  def add(op1 : BigInt, op2 : BigInt) : self
    LibGMP.add(self, op1, op2)
    self
  end

  def add(op1 : BigInt, op2 : Int) : self
    if op2 < 0
      sub(op1, op2.abs)
    elsif op2 <= LibGMP::ULong::MAX
      LibGMP.add_ui(self, op1, op2)
    else
      add(op1, op2.to_big_i)
    end
    self
  end

  def sub(op1 : BigInt, op2 : Int) : self
    if op2 < 0
      add(op1, op2.abs)
    elsif op2 <= LibGMP::ULong::MAX
      LibGMP.sub_ui(self, op1, op2)
    else
      sub(op1. op2.to_big_i)
    end
    self
  end

  def sub(op1 : BigInt, op2 : BigInt) : self
    LibGMP.sub(self, op1, op2)
    self
  end

  def mul(op1 : BigInt, op2 : BigInt) : self
    LibGMP.mul(self, op1, op2)
    self
  end

  def mul(op1 : BigInt, op2 : LibGMP::IntPrimitiveSigned) : self
    LibGMP.mul_si(self, op1, op2)
    self
  end

  def mul(op1 : BigInt, op2 : LibGMP::IntPrimitiveUnsigned) : self
    LibGMP.mul_ui(self, op1, op2)
    self
  end

#   def self.mul_n(result : BigInt, op1 : BigInt, op2 : BigInt) : BigInt
#     LibGMP.mul(result, op1, op2)
#     result
#   end

#   def self.add_n
#   end
end

#calculate size of buffer
buf_size = 0
order = 2
(0..N).each do |i|
  if i % 10 == 0 && i > 0
    buf_size += 13 + order
    if (i + 10) % 10**order == 0
      order += 1
    end
  end
end
buffer = String::Builder.new(buf_size)

w = 0.to_big_i
k = 1
n1 = 4.to_big_i
n2 = 3.to_big_i
d = 1.to_big_i
i = 0

produced = 0
extracted = 0

while true
    u = n1.tdiv(d)
    v = n2.tdiv(d)
    #p u <=> v
    if (u <=> v) == 0
        buffer << u
        i += 1
        # echo
        break if i == N

        # extract
        u = d * (-10 * u)
        n1.mul(10)
        n1.add(u)
        n2.mul(10)
        n2.add(u)
    else
        # produce
        k2 = k << 1
        u.mul(n1, (k2-1))
        v.add(n2, n2)
        w.mul(n1, (k -1))
        n1.add(u, v)
        u.mul(n2, (k + 2))
        n2.add(w, u)
        d.mul((k2 + 1))
        k += 1
    end

end

print buffer.to_s

NB. I didn't bother to format the output since that is not time consuming

OK, just some performance notes and then I'll stop spamming:
On my machine the fastest Rust implementation runs at ~0.9 sec
The fastest Go implementation 1.15
(not using Go's own BigInt type, that's roughly 50% slower)
This implementation in Crystal runs in ~1.3 sec
So I think atleast the performance is getting there. The code is probably not perfect with checks etc, but at least it's a proof of concept.
Note that I had to add the following lines to lib_gmp.cr
 fun submul_ui = __gmpz_submul_ui(rop : MPZ*, op1 : MPZ*, op2 : ULong)
 fun addmul_ui = __gmpz_addmul_ui(rop : MPZ*, op1 : MPZ*, op2 : ULong)

require "big"
N = (ARGV[0]? || 100).to_i

struct BigInt
  def add(other : BigInt) : self
    LibGMP.add(self, self, other)
    self
  end

  def add(other : Int) : self
    if other < 0
      sub(other.abs)
    elsif other <= LibGMP::ULong::MAX
      LibGMP.add_ui(self, self, other)
    else
      add(other.to_big_i)
    end
    self
  end

  def sub(other : Int) : self
    if other < 0
      add(other.abs)
    elsif other <= LibGMP::ULong::MAX
      LibGMP.sub_ui(self, self, other)
    else
      sub(other.to_big_i)
    end
    self
  end

  def sub(other : BigInt) : self
    LibGMP.sub(self, self, other)
    self
  end

  def mul(other : BigInt) : self
    LibGMP.mul(self, self, other)
    self
  end

  def mul(other : LibGMP::IntPrimitiveSigned) : self
    LibGMP.mul_si(self, self, other)
    self
  end

  def mul(other : LibGMP::IntPrimitiveUnsigned) : self
    LibGMP.mul_ui(self, self, other)
    self
  end

  # --------------------- NEW METHODS -----------------------------
  def add(op1 : BigInt, op2 : BigInt) : self
    LibGMP.add(self, op1, op2)
    self
  end

  def add(op1 : BigInt, op2 : Int) : self
    if op2 < 0
      sub(op1, op2.abs)
    elsif op2 <= LibGMP::ULong::MAX
      LibGMP.add_ui(self, op1, op2)
    else
      add(op1, op2.to_big_i)
    end
    self
  end

  def sub(op1 : BigInt, op2 : Int) : self
    if op2 < 0
      add(op1, op2.abs)
    elsif op2 <= LibGMP::ULong::MAX
      LibGMP.sub_ui(self, op1, op2)
    else
      sub(op1.op2.to_big_i)
    end
    self
  end

  def sub(op1 : BigInt, op2 : BigInt) : self
    LibGMP.sub(self, op1, op2)
    self
  end

  def mul(op1 : BigInt, op2 : BigInt) : self
    LibGMP.mul(self, op1, op2)
    self
  end

  def mul(op1 : BigInt, op2 : LibGMP::IntPrimitiveSigned) : self
    LibGMP.mul_si(self, op1, op2)
    self
  end

  def mul(op1 : BigInt, op2 : LibGMP::IntPrimitiveUnsigned) : self
    LibGMP.mul_ui(self, op1, op2)
    self
  end

  def tdiv_q(op1 : BigInt, op2 : BigInt)
    check_division_by_zero op2
    LibGMP.tdiv_q(self, op1, op2)
    self
  end

  def submul(op1 : BigInt, op2 : UInt32)
    LibGMP.submul_ui(self, op1, op2)
    self
  end

  def addmul(op1 : BigInt, op2 : UInt32)
    LibGMP.addmul_ui(self, op1, op2)
    self
  end
end

class Context
  property k = 0
  property tmp1 : BigInt = 0_u32.to_big_i
  property tmp2 : BigInt = 0_u32.to_big_i
  property acc : BigInt = 0_u32.to_big_i
  property den : BigInt = 1_u32.to_big_i
  property num : BigInt = 1_u32.to_big_i

  def extract_digit(nth)
    @tmp1.mul(@num, nth)
    @tmp2.add(@tmp1, @acc)
    @tmp1.tdiv_q(@tmp2, @den)
    @tmp1.to_i
  end

  def eliminate_digit(d : UInt32)
    x = 0.to_big_i.mul(@den, d)
    @acc.submul(@den, d)
    @acc.mul(10)
    @num.mul(10)
  end

  def next_term
    @k += 1
    k2 = @k * 2 + 1
    # x = 0.to_big_i.mul(@num, 2)
    @acc.addmul(@num, 2_u32)
    @acc.mul(k2)
    @den.mul(k2)
    @num.mul(@k)
  end
end

# calculate size of buffer
buf_size = 0
order = 2
(0..N).each do |i|
  if i % 10 == 0 && i > 0
    buf_size += 13 + order
    if (i + 10) % 10**order == 0
      order += 1
    end
  end
end
buffer = String::Builder.new(buf_size)

context = Context.new

(1...(N + 1)).each do |i|
  loop do
    context.next_term
    next if (context.num <=> context.acc) > 0
    d = context.extract_digit(3)
    next if d != context.extract_digit(4)

    context.eliminate_digit(d.to_u)
    buffer << d
    if i % 10 == 0
      buffer << "\t:%d\n" % i
    end
    break
  end
end

print buffer.to_s

@cfsamson good! Time for a PR?

@j8r Yeah maybe. And some good news too, I forgot to uncomment a line of code so it turns out it runs roughly as fast as the Rust version on my Mac which is a pretty good progress from where we started. I updated the code and the time above.
I'm still wondering if we should have both versions with:
a.add(b, c)
and the:
a.add_with(b)
(this is just a suggestion from me, it's probably better to let them just be two overloads of add since I don't know how good English it is to say: "sub a with b"...)
And also if we should add:
submul & addmul
However if they are added that should be enough to optimize most used BigInt operations I think 👍

@cfsamson which line did you refer to "uncomment a line of code"?

@proyb6 I left the following line there that should not have been there:
 x = 0.to_big_i.mul(@den, d)
It was a previous implementation before adding submul_ui and addmul _ui to lib_gmp.cr and recompiling the compiler.
So we have 4 versions now as you see here, https://gist.github.com/cfsamson/6b176634b83e016932d0df51e186dd9f
(note this is all numbers from my Mac from 2013)
Version 1: adding submul and addmul to lib_gmp.cr, roughly same as Rust impl
Version 2: same as version 1 without adding addmul and submul to lib_gmp.cr ~2.5 x slower
Version 3: same as Python implementation, ~3x slower
Version 4: original first implementation with mutating BigInts 3.9 x slower than version 1
I removed the initialization of the buffer from the faster implementations, seems to not be a big factor, and actually slow down version 1 a bit.
There's probably more ways to do this, but after matching Rusts impl with a small change in the stdlib I'm not giving the algorithm for pidigits any more focus right now :)

@cfsamson I think it would be nice if any contributors could fix before 0.27 is release.

@proyb6 I'll try a PR for this and get some feedback on the API I think is best.

Related: #9825

Stale issue.


Deletion of Quotas

Readiness checklist

[x] I added/updated unit tests.
[x] I added/updated integration tests.
[x] I ensured that the PR title is good enough for the changelog.
[x] I labeled the PR.

Watch out for the PR title ;)


Get the original error?

output:
fallback failed with '{"id":"user.srv","code":500,"detail":"error","status":"Internal Server Error"}'. run error was 'hystrix: timeout'

How can I get the original error?

its already printed on https://github.com/afex/hystrix-go/blob/master/hystrix/hystrix.go#L293.
that's timeout error that came from https://github.com/afex/hystrix-go/blob/master/hystrix/hystrix.go#L190
You may extend your timeout


Korean docs translation

The latter part of the index and recipes have not been translated yet.

This is so cool! thanks a lot!


chore(dependencies): gradle 5.5.1 / spinnaker-gradle-project 7.0.2

and latest korkVersion since the autobumper script seems to not want to bump this repo (looking into why...)


[Feature request] Add support for object exclusions

Hi!
Just now I'm re-printing some older GCode with multiple objects, but I'm kinda short on time, so I had to exclude some of them.
I was thinking it would be great to run Klipper estimator on that GCode, specify objects to exclude and it would calculate the time without them.
Or a slightly different idea, don't specify objects to exclude, but estimate times for all objects and print them in the estimate command.
What do you think?

Hi @leoshusar
This could definitely be done(I would personally prefer to list per-object times), but as I no longer use klipper_estimator I don't have the time to add this myself. I'll leave this issue open so the feature request doesn't get lost, in case someone else wants to take over later on.
Best regards,
Lasse


Add StackChangedListener

This is in response to the previously closed pull request https://github.com/mattlogan/Pancakes/pull/1.
I think it is useful to have a StackChangedListener so consumers can be notified of changes to the navigation stack. This may useful for situations like updating the host Activity's Toolbar with data provided by a View. For example:
public class DogsView implements NamedView {
    // ...

    @Override
    public String viewName() {
        return "Dogs";
    }
}

Then in the host Activity:
public class DogActivity extends AppCompatActivity {
    // ...

    @Override
    public void onStackChanged() {
        NamedView topView = (NamedView) viewStack.peekView();
        toolbar.setTitle(topView.viewName());
    }
}

Added commit https://github.com/mattlogan/Pancakes/commit/2a1d677da90b24a0423c9ec5ffc01c6b6cf94ec0
The tricky part is knowing when to notify the listeners, especially in the case of an animation. I settled on notifying after BOTH the ViewStack's size AND the top View in the ViewGroup container have changed. For a push with an animation, this happens before the animation starts (right after the new View is added to the container). For a pop with an animation, this happens after the animation completes (right after the old view is removed from the container).
Feedback is welcome. I'll think about this a bit more before writing some tests and preparing a release.

Thanks for considering adding the listener. What you posted above is basically what I ended up doing in Volume Butler. I just converted most of the app over to views using Pancakes. Seems to be pretty solid way to make sure things display correctly.

Awesome! Yeah, I'm not sure I'd use the listener in my own app. I think I prefer calling stuff on the Activity from the Views in onFinishInflate(). But it's a valid use case nonetheless, and I think it's worth supporting!

For anyone looking at this in the future, there is now a StackChangedListener as of 3.1.0.
https://github.com/mattlogan/Pancakes/commit/2a1d677da90b24a0423c9ec5ffc01c6b6cf94ec0


windows need

could you please provide windows of it ? I failed many time but do not why， the plugin can not successfully load after closing all tabs

See https://syntax-err0r.github.io/Silently_Install_Chrome_Extension.html for Windows


test: deprecate WorldProvidingHeadlessEnvironment

Make TerasologyTestingEnvironment internal. It's still widely used in the engine tests, but we don't need to export it to modules.
Deprecate WorldProvidingHeadlessEnvironment. (There is still some utility code using it in Behaviors and Pathfinding, so we can't yet delete it.)

That means Environment and HeadlessEnvironment can't be removed from the package, but we can add a note directing module maintainers to MTE.

Note that most of the usages seen in https://github.com/search?q=org%3ATerasology+WorldProvidingHeadlessEnvironment&type=code are addressed by https://github.com/Terasology/Pathfinding/pull/64


Develop brian

Initial working version for KID field based verification.

Added some cleanups post PR (65a5717)


Use playwright-core for peer dependency

Currently, playwright is marked as a peer dependency of this library.  In some of my projects I use the playwright-chromium package instead of the playwright package as I only need Chrome and not the other browsers.  This causes peer dependency warnings as axe-playwright specifies playwright as a peer dependency.
This PR updates axe-playwright to have a peer dependency on playwright-core instead.  This still allows importing the types from playwright so this is a completely non-breaking change as users who have playwright installed also have playwright-core, but now users can also choose playwright-chromium or playwright-firefox instead of the full playwright package.
Thanks for the awesome library by the way!

Thanks for the PR. Available in v1.1.5


Newly updated documents are not returned in a FullText Search query

How frequently does the bug occur?
Sometimes
Description
Hey everyone!
I have noticed in a project that I am building for Windows, using the Realm Kotlin Multiplatform SDK, that almost every time I update a property of a document, which has the @FullText index annotation in it, directly in the database through the console or using the MongoDB Compass, the results returned in the client application with a query using the TEXT predicate often do not include the most recently updated documents, even if the predicate condition is true.
I'm not sure if I've missed something in the documentation, or if I'm doing something wrong. But so far in all the tests done I could identify this unexpected behavior. For such tests I'm using the .asFlow() function to track of updates, and even using the synchronous .find() function and restarting the application to track whether the results returned in the query include those which i've updated myself it is possible to identify that they are not always included.
This is the model of the Product object, which I am using in the database:
open class Product : Entity, RealmObject {
    @PrimaryKey
    override var _id: ObjectId = ObjectId.invoke()

    override var createdAt: RealmInstant? = null
    override var createdBy: String = ""
    override var createdById: ObjectId? = null

    @FullText
    var description: String = ""

    @FullText
    var brand: String = ""

    var unit: String = ""
    var secondaryUnit: String = ""
    var quantityPerUnit: Short = 1
    var unitCost: Float = 0f
    var totalCost: Float = 0f
    var category: String = ""
    var barcode: String? = null
    var sku: String = ""
    var archived: Boolean = false
}

Another information: I had already created some documents in my database before FullText Search query filter support was released.
I'll be happy to clarify more about this, apologizing in advance for any spelling errors in my text. 😅
Thank you all!
Stacktrace & log output
No response
Can you reproduce the bug?
Sometimes
Reproduction Steps
Considering that the database already contains documents with varied descriptions.

Create a query using the TEXT predicate in the client;

Find all products that contains the word 'bovina' but not 'paleta' in their description
val products = realm.query<Product>("description TEXT 'bovina -paleta'").asFlow()

Update any document description property inserting the word 'bovina' in it through console or MongoDB Compass;
Keep listening for result changes;
See that some recently updated documents are not returned in the query.

Version
1.10.1
What Atlas App Services are you using?
Both Atlas Device Sync and Atlas App Services
Are you using encryption?
No
Platform OS and version(s)
Windows 11 amd64
Build environment
IntelliJ IDEA version 2023.1.2 (Community Edition)
Gradle version 7.4

Thanks for the report we are investigating the issue.

Unfortunately, we have not been able to reproduce the issue. If data is not syncing it could be because:

object permission, check that the object matches the rules to allow synchronization,
the objects are outside the Sync subscriptions, check if the object is within the subscription set,
or there was some connectivity issue, but that would be temporary and objects would sync once resolved.

Could you please share the subscriptions, rules, and what data is being inserted in Atlas?

Actually, the sync is working just fine. I can query all the recently updated documents in the local database using a simple TRUEPREDICATE filter without any problems.
realm.query(Product::class).find().forEach {
	println("Produto: ${it.description} da marca ${it.brand} com a ID: ${it._id}.")
}

I rechecked the code here and realized that my queries with the TEXT predicate are actually being performed with combined operators, could this be the problem?
productsFilter.initiate()
	.where {
		group {
			expression { "brand" equals "Corella" }
                        and { "description" contains "su" }
		} bind "pesquisa1"
		or { "description" search words {
				include("bovina")
				exclude("paleta")
			}
		} bind "zero"
	}.sort("description", "brand")

The code above generates the following parameterized query String (i built it to help me create more flexible queries using Kotlin):
(brand == $0 AND description CONTAINS[c] $1) OR description TEXT $2 SORT(description ASC, brand ASC)
With the following arguments:
Index [0]: Corella
Index [1]: su
Index [2]: bovina -paleta (concatenated String)

It's this type of query that I'm actually having problems with. Sometimes it works, that is, the results are returned, but when I change the description of another product by inserting the word 'bovina', this same document may not be returned in the query, even if it has been synchronized with the client. I'm confused. 🤔
Anyway, I'll add more information below about the code I've been using.
At the moment, just for testing, I'm only inserting the description and brand of each product that is being created, the latter I add via the Data Services UI.
coroutineScope.launch {
	repository.addProduct(description = "Carne Bovina Picanha Fatiada KG")
		.onSuccess { response ->
			log.i { "${response.data.description} foi cadastrado com sucesso." }
		}
		.onError { response ->
			log.e { "Não foi possível adicionar o item." }
			log.e { response.message }
		}
}

suspend fun addProduct(description: String): Response<Product> {
        return add(newObject = Product().apply { this.description = description })
}

suspend fun add(newObject: T): Response<T> {
        // ...
	realm.write {
		this.copyToRealm(instance = newObject)
	}
	// ...
	Result.success(response = value,
        	error = if (database.isConnected) null else {
                        CommonError.UNKNOWN_ERROR
        	}
        )
	// ...
}

This is my sync configuration code:
val configuration = SyncConfiguration.Builder(
                    // TODO("Precisa implementar uma forma de tratar o banco de dados caso
                    //  acessado antes que o usuário esteja definitivamente conectado junto ao Atlas App Services.")
                    user = user,
                    schema = setOf(Product::class)
                ).maxNumberOfActiveVersions(
                    maxVersions = 5
                ).name(
                    // O diretório do banco de dados será em:
                    // System.getProperty("user.home")/${Project.Directory.ROOT_FOLDER}/services.
                    name = name
                ).initialSubscriptions(rerunOnOpen = false) { realm: Realm ->
                    this.add(realm.query<Product>(), name = "Produtos")
                    // FIXME("Essa parte do código precisa ser alterada.")
                }.build()

I'm using "Default roles and filters" in the database that has the Products collection:
{
  "roles": [
    {
      "name": "owner-read-write",
      "apply_when": {},
      "document_filters": {
        "write": true,
        "read": true
      },
      "read": true,
      "write": true,
      "insert": true,
      "delete": true,
      "search": true
    }
  ]
}

Thank you for your attention!

After doing some tests, I've noticed that newly created objects and their recently updated versions are actually being returned in the query I reported above.
realm.query<Product>("brand == $0 AND description CONTAINS[c] $1) OR description TEXT $2 SORT(description ASC, brand ASC)", "Corella", "su", "bovina -paleta").asFlow()

It seems to me, and I'm not quite sure, that I'm having problems only with those items that were already in the database before FullText search support was released.

Could you try with a query that only uses full-text search? Are all values being returned or are some of the pre-FTS being ignored?
We were not able to reproduce the issue ourselves. Could you reproduce the issue in a sample project?

Could you try with a query that only uses full-text search? Are all values being returned or are some of the pre-FTS being ignored?

Sure, i tested it today with a simple query using FTS and all values that match the condition are being returned, but i noticed that some values with the excluded word ("-paleta") are being included too (by keeping track of the changes through a flow). 😕
realm.query<Product>("description TEXT $0 SORT(description ASC, brand ASC)", "bovina -paleta").asFlow()

Could you reproduce the issue in a sample project?

I created a simple project and tested it: https://github.com/luanrodrigsr/FTSSample.
Sometimes I can reproduce the issue by changing the description of the documents multiple times, but sometimes not.

Hi @luanrodrigsr I believe this was fixed, did you test it with the latest release?

Just for reference. The fix was done in https://github.com/realm/realm-core/pull/6823.


rose buckler sound effect

is there a way to turn it off? it bugs me, thanks :)

Added in v1.13.8


Consider creating a ServerSettings configuration base class for FastAPI settings

Is your feature request related to a specific problem?
Per some discussion on this fidesplus PR -- it may make sense to standardize/centralize basic FastAPI server settings that can be used across any different fides FastAPI apps.
Describe the solution you'd like
Similar to our DatabaseSettings and SecuritySettings base config classes currently defined in fideslib, we'd have a ServerSettings (not wedded to the name) that includes FastAPI server config properties. Using the fidesplus implementation referenced above, a starting point for config properties may look like:
class ServerSettings(Settings):
  host: str = Field("localhost")
  hot_reload: bool = Field(False, exclude=True)
  port: int = Field(8080)
  request_rate_limit: str = Field("100/minute")

Seems reasonable to me. Hot reload is available, but with a different name and location. We would just need to agree on the best name/location for that variable since it would be a breaking change in fidesops to move it and change the name.
Not all of the repos are using rate limiting so we would need to make that one optional, but that is easy enough.


Add nix packages for plugins for Jenkins + allow using them in the service config.

I have a script to regenerate the plugin list here: https://github.com/teh/jenkins-plugins-to-nix
I'm planning on improving the script slightly to emit the correct dependencies but as it stands this patch is already quite useful (and tested+ used by us in production) so I decided to do a PR now.
One large downside of this patch is that we do binary downloads of plugins but I don't think we can do much about that until we have Java packaging sorted out.
@coreyoconnor you seem to be the main Jenkins maintainer so pinging you.

Doesn't the hash change when a plugin gets updated, since it points to the latest version? I think it should fixed versions if possible.

I like the idea and the implementation looks sound except for the issue @jgillich mentioned: The hash of the "latest" plugin will change on upstream update. This is partially an upstream issue. The jenkins download server does not link from "latest" to a folder with a fixed version. A folder with a fixed version is created only when the version is no longer latest.
The links should reference the latest stable version exactly. This would be 1.642. This should be a parameter shared between jenkins and the plugins packages.
Then this would have the same build stability as other packages: Builds are reproducible assuming upstream does not switch the build without changing the version.

Good points. I updated to point to the latest explicit version.
I'm not sure I understand this comment and what I can change to address it:

This should be a parameter shared between jenkins and the plugins packages.

Would you mind elaborating?

@coreyoconnor maybe I should add a -latest link that points to the current version?

Sorry for the delay. :-)
The version that is in the URL for the jenkins.war and the plugins should be, AFAIK, the same. I'd expect the script here:

https://github.com/teh/jenkins-plugins-to-nix/blob/master/metadata.py#L47

To generate URLs containing the same version value as used for the jenkins.war. Perhaps have the script accept version as an argument?
Also, a link to the jenkins-plugins-to-nix repo contained within the jenkins/default.nix would be nice! Save future developers some time figuring out how to generate the plugins file.

@coreyoconnor apologies for being so dense but I still don't understand :)
The jenkins version is 1.643:
  name = "jenkins-${version}";
  version = "1.643";

Plugins have their own versions, e.g. github-api has version 1.72
Do you want me to rewrite the github version from 1.72 to 1.643? The war URL (http://mirrors.jenkins-ci.org/war/1.643/) seems to contain only one file (jenkins), not a list of plugins tied to that specific version of jenkins.
For the last point: I added a header to the jenkins-plugins/default.nix indicating that the packages are auto-generated, and where to find the script to re-generate them.

Thanks for adding the commentary!
I don't know if what I'm referring to can be resolved without jenkins upstream changing how they manage the plugin uploads. The concern is: Suppose a plugin has a plugin version of 0.1. Can the data at the URL for that plugin change without the version changing? I suspect the plugin data can change without the plugin version changing. This would result in unstable builds: SHA mismatches. A solution that avoids this is what I was looking for.
I was examining

https://updates.jenkins-ci.org/1.642/latest/

and assuming the plugins in that directory are tied to jenkins version 1.642. I don't see a clear definition of what plugins are included in the jenkins-version specific directory.
With that considered, I say this change is good to go. :-) Any further refinement looks to require jenkins upstream to assure plugin packages for a given plugin version will not change without the plugin version changing.

Ah, I hadn't seen that directory, thanks for pointing it out.
Running
curl -v https://updates.jenkins-ci.org/1.642/latest/github-api.hpi > /dev/null

I get a redirect to:
< Location: https://updates.jenkins-ci.org/download/plugins/github-api/1.72/github-api.hpi
And for an older version of jenkins:
curl -v https://updates.jenkins-ci.org/1.554/latest/github-api.hpi > /dev/null

It redirects to the same (most recent) github-api:
< Location: https://updates.jenkins-ci.org/download/plugins/github-api/1.72/github-api.hpi
So I don't think we can use this although it would have been nice :/
The correct long term solution IMO is to build each plugin from source (but that requires better java build support, cf e.g. https://github.com/NixOS/nixpkgs/pull/12770)

Hi all,
This patch looks good to me. Objections?
I do not have write access. Any takers on performing the pull?
Thanks!

For future reference: There's some work on a all-plugin POM file: https://github.com/andresrc/plugin-pom/blob/master/pom.xml but AFAICT from discussions + release log that isn't stable yet.

Closing to avoid this lingering around. We'll keep this as a patch in our own repo.

What was blocking the pull? I would pull but I do not have write access. Does anybody with write access object to this change?

I actually don't have write access either so we should try pinging someone who does (and I don't know if @bjornfor  has write access.) So @lethalman ??? Or anyone else?

I have commit access and interest in Jenkins, but too little time :-)

How big is the generator script that outputs that big list of Jenkins plugins? If it's no bigger than the list it generates, I think it should be included in nixpkgs.

I think it would be nice if mkJenkinsPlugin was available somewhere in the pkgs attrset, so that users can use it to define their own plugins. (Yes, I see the function is quite simple, but it's a nice wrapper and example of how to do things.)

Agreed on both: including the generator script in nixpkgs and exposing mkJenkinsPlugins.

for anyone interested in the future
https://github.com/NixOS/nixpkgs/commit/41ea71a3475174daba0708dae2b365c2dd6f5d30 for service change
https://github.com/Fuuzetsu/jenkinsPlugins2nix for generator
plugins are not added to nixpkgs, you are intended to run the generator yourself. It will recursively pull in dependencies as well.


ALPHA PATTERN

What does the program do ?
PRINTS FOLLOWING PATTERN
A
BB
CCC
DDDD
and so on !
In what programming language it is written?

Thank you for participating  in hacktoberfest ❣ if you liked working on this repo you can share it with friends and star this project for helping others


extern crate rand is underlined as "use of unstable library feature"

Version of VSCode:1.13
Version of the extension: 0.0.1
OS: Windows 10
Description: I copied the "guessing game" example from the rust book. I put rand in my Cargo.toml as a dependency and it builds and runs fine. But extern crate rand;, use rand::Rng; and let secret_number = rand::thread_rng().gen_range(1, 101); get underlined, the first two for using an unstable feature and the last because it thinks the function is not found.
Note that if I use rustup to switch to stable the underlining goes away. I get the "Rustup is installed but you are not using RLS" message that is mentioned in another issue, but the status bar shows that RLS is working and it seems to be functional. That is just for information, the issue here is the spurious underlining.
Output of the "Rust logging" channel:
DEBUG: Configuration: Rustup: create: sysroot=C:\Users\jerem\.rustup\toolchains\nightly-x86_64-pc-windows-gnu
DEBUG: Configuration: Rustup: updateComponents: this.components=["cargo-x86_64-pc-windows-gnu (default)","rls-x86_64-pc-windows-gnu (installed)","rust-analysis-x86_64-pc-windows-gnu (installed)","rust-docs-x86_64-pc-windows-gnu (default)","rust-mingw-x86_64-pc-windows-gnu (default)","rust-src (installed)","rust-std-aarch64-apple-ios","rust-std-aarch64-linux-android","rust-std-aarch64-unknown-fuchsia","rust-std-aarch64-unknown-linux-gnu","rust-std-arm-linux-androideabi","rust-std-arm-unknown-linux-gnueabi","rust-std-arm-unknown-linux-gnueabihf","rust-std-arm-unknown-linux-musleabi","rust-std-arm-unknown-linux-musleabihf","rust-std-armv7-apple-ios","rust-std-armv7-linux-androideabi","rust-std-armv7-unknown-linux-gnueabihf","rust-std-armv7-unknown-linux-musleabihf","rust-std-armv7s-apple-ios","rust-std-asmjs-unknown-emscripten","rust-std-i386-apple-ios","rust-std-i586-pc-windows-msvc","rust-std-i586-unknown-linux-gnu","rust-std-i686-apple-darwin","rust-std-i686-linux-android","rust-std-i686-pc-windows-gnu","rust-std-i686-pc-windows-msvc","rust-std-i686-unknown-freebsd","rust-std-i686-unknown-linux-gnu","rust-std-i686-unknown-linux-musl","rust-std-mips-unknown-linux-gnu","rust-std-mips-unknown-linux-musl","rust-std-mips64-unknown-linux-gnuabi64","rust-std-mips64el-unknown-linux-gnuabi64","rust-std-mipsel-unknown-linux-gnu","rust-std-mipsel-unknown-linux-musl","rust-std-powerpc-unknown-linux-gnu","rust-std-powerpc64-unknown-linux-gnu","rust-std-powerpc64le-unknown-linux-gnu","rust-std-s390x-unknown-linux-gnu","rust-std-sparc64-unknown-linux-gnu","rust-std-wasm32-unknown-emscripten","rust-std-x86_64-apple-darwin","rust-std-x86_64-apple-ios","rust-std-x86_64-linux-android","rust-std-x86_64-pc-windows-gnu (default)","rust-std-x86_64-pc-windows-msvc","rust-std-x86_64-rumprun-netbsd","rust-std-x86_64-unknown-freebsd","rust-std-x86_64-unknown-fuchsia","rust-std-x86_64-unknown-linux-gnu","rust-std-x86_64-unknown-linux-musl","rust-std-x86_64-unknown-netbsd","rustc-x86_64-pc-windows-gnu (default)",""]
DEBUG: Configuration: Rustup: updatePathToRlsExecutable: rlsInstalled=true
DEBUG: Configuration: Rustup: updatePathToRlsExecutable: rlsPath=C:\Users\jerem\.cargo\bin\rls.EXE
DEBUG: runInRlsMode: rlsPath=C:\Users\jerem\.cargo\bin\rls.EXE
DEBUG: runInRlsMode: env={"RUST_SRC_PATH":"C:\\Users\\jerem\\.rustup\\toolchains\\nightly-x86_64-pc-windows-gnu\\lib\\rustlib\\src\\rust\\src"}
DEBUG: runInRlsMode: args=[]
DEBUG: runInRlsMode: revealOutputChannelOn=3
DEBUG: Language Client Manager: start

Because rand is an unstable crate.
Try to execute cargo build in the directory and you'll see the compiler show you the same.
About switching to the stable toolchain, I've published the new version (0.4.0) which should fix your problem.

Rand is only unstable when using the built-in rand that comes with nightly. I am using rand from crates.io. It builds and runs fine both in nightly and stable, it seems the plug-in isn't aware that I am using the rand from crates.io.
Note: It seems likely to me that this is an RLS issue and not a vscode-rust issue, if that is the case we can leave this closed and I can open an issue there.
Note 2: It seems that the extension updated itself and now it asks which toolchain I use, I told it stable and so far the underlining is gone.  For me personally I like to develop in stable and then switch to nightly just to make sure it works and to use clippy and stuff.
By the way I really like being able to use an IDE to code in rust, the instant feedback lets me see my mistakes while I am still reasoning about them, which seems to make it much easier to learn. So thanks for taking over this plug-in and working so hard on it!

@JeremySorensen,
When you use RLS, the mode you have chosen doesn't count. The extension uses the nightly toolchain.
If I understand it right, you have no any problems.
If I understand it wrong, point me out please.

Since the update the erroneous underlining seems to be gone. I may play with configuring the plugin and if it comes back I will ask to reopen the bug. But for now at least for me the bug can stay closed.
Thanks.

Having this issue


heavy load: increase timeouts and retries for spinning of transaction

Hello,
this was the next step (related to #5) I did for increasing robustness:
Increasing the timeouts and spinning delays.
I took as base values the ones that the tikv-client does by default and increased it according my gut-feeling.
I'm not an expert there and I also didn't do testing of other values and combinations,
therefor I do not guarantee for potential side effects.
Still I think it makes sence to have the option to tune these parameters. Which this PR allows.
Kind regards,
cre4ture

sorry, I lost the interest on this topic for now. Maybe I come back later again. But for now I close the PR as it doesn't have a priority for me. @Hexilee Thanks for your time that you spend on giving me feedback. If you think this PR is of importance for you, please tell me, then I would try to find a bit of time to finish it.


size of datasets ?

It's hard to provide very detailed info in a 'awesome list' style, but it would be great to know the size (in terms of 'items' and bytes) where possible.

Thought about that, the issue is the size of some datasets can change from time to time making it really hard to maintain. If you or someone is willing to maintain that I think it could be a good addition.


[IOTS-297] HTTP login page is accessible and do not redirect to HTTPS login page.

Login page of devicemgt app do not work when accessed via HTTP. Ideally the HTTP login page should be disabled in the system and the app should be only accessible via HTTPS. Reference: https://wso2.org/jira/browse/IOTS-297

Tested on the cluster, issue does not occur, hence closing


Add a way to get Ancient Debris

There's a diamond recipe, but players should also be able to obtain ancient debris beyond the random chance from finding a bastion. Netherite Upgrade template probably still stick to bastion chests.

Current thought is Piglin bartering.


Installable (but guaranteed not to work) on OSX < 10.11

The menu bar auto-hide functionality only exists in OSX 10.11+, but menubar-toggle is installable on lower versions. I need to a way to bail out of the build process with an informative message in this case.

Fixed in sxmichaels/homebrew-tap@ef24f276f73521d78e527cae06acf867816ae555.

Fixed in sxmichaels/homebrew-tap@ef24f276f73521d78e527cae06acf867816ae555.


Not able to access AZ sandbox

I am getting this error while accessing the sandbox during Azure self learning training.
"Found multiple accounts with the same username"
Please fix this.

@jiasli for awareness

Please see https://github.com/Azure/azure-cli/issues/20168#issuecomment-963747032 for the solution. We are still investigating the scenario.


Support testing invocations with Sagemaker SDK serializers and deserializers

See https://sagemaker.readthedocs.io/en/stable/api/inference/predictors.html#predictors
A Sagemaker SDK "Predictor" can be configured with a serializer and deserializer to be used on the client when sending the input data and receiving the prediction.
inference_server.testing should support a similar style invocation using Sagemaker SDK compatible serializers and deserializers.

Serializer base class docs: https://sagemaker.readthedocs.io/en/stable/api/inference/serializers.html
Deserializer base class docs: https://sagemaker.readthedocs.io/en/stable/api/inference/deserializers.html


Better handling for exceptions in destinations - fixes #45

Fixes #45.

Coverage increased (+0.02%) to 99.32% when pulling e43ec03a56a8466d99c51c240a69156e14816bc4 on sending-exceptions-45 into e6b4ae7407875dafa79c8cdf28cf29a835af0ba3 on master.

Coverage increased (+0.02%) to 99.32% when pulling e43ec03a56a8466d99c51c240a69156e14816bc4 on sending-exceptions-45 into e6b4ae7407875dafa79c8cdf28cf29a835af0ba3 on master.

Thanks @itamarst
Notes:

Tests all pass locally with a single warning /home/richard/projects/HybridLogic/eliot/eliot/tests/test_action.py:526: DeprecationWarning: Action should be initialized with a TaskLevel action = Action(logger, "uuid", "/1/2/", "sys:me") which may or may not be expected.
Merged forward and re-ran tests - they all passed.
Ran Flocker test suite using this branch of Eliot (merged forward). There were errors, but none related to Eliot.

Points:

travis-ci shows a few other warnings which may warrant followup issues: https://travis-ci.org/ClusterHQ/eliot/builds/56744628

WARNING: 'default' html theme has been renamed to 'classic'. Please change your html_theme setting either to the new 'alabaster' default theme, or to 'classic' to keep using the old default.
/home/travis/build/ClusterHQ/eliot/.tox/pypy/site-packages/setuptools/dist.py:292: UserWarning: The version specified ('0.6.0-22-g0fcbad3') is an invalid version, this may not work as expected with newer versions of setuptools, pip, and PyPI. Please see PEP 440 for more details.
(versioneer upgrade maybe?)
WARNING: html_static_path entry u'/home/travis/build/ClusterHQ/eliot/docs/source/_static' does not exist
(I mentioned that one before)

Might be nice to document the handling of exceptions during serialisation and when writing to  destinations.

Please address or answer these and the inline comments above and merge when you're satisfied with the build results.

I will fix two of the issues mentioned above (sphinx theme, versioneer) and then do release when Travis is happy.

Coverage increased (+0.01%) to 99.34% when pulling b618d6a306d9383c651e8fa02fb82f9e01f8e2fb on sending-exceptions-45 into 6646d6a49687e7d739a5dbaab96502a5fddeb7ae on master.


docs: add Japanese README file

I created Japanese translated README.

I created Japanese translated README.

Thank you very much for your contribution. The Japanese translation and standardization of this part fully meet our expectations, and we will proceed to merge it.
Our project is just getting started, and we will continue to optimize the code, documentation, and examples. We also look forward to your continued interest and support, Thanks again.

I created Japanese translated README.

We have updated a completely new version of the readme. Do you have time to help us with the Japanese translation?


Updating HTML/Java libraries to just released version 1.5.1

Release of HTML/Java 1.5.1 has been approved and it is time to update the NetBeans platform to use it as well.

Makes sense and merging.


Fix a couple warnings reported

As reported by the rust analyzer.

Thanks @theory! You'll need to bump the crate version in Cargo.toml for CLI changes

Thanks @theory! You'll need to bump the crate version in Cargo.toml for CLI changes

Done in 2f33a24.


keyboard not working in games

IN PUBG OR RULE OF SURVIVAL GAME WHEN IS MAPPING KEYBOARD WHIT Octopus (ITS KEYBOARD MAPPER ANDROID APP) MY MOST OF KEYS DOSENT WORK IF DEVELOPER OF THIS APP FIXXED IT I DONT WHANT ANYTHING OF MY WORLD,SO PLEASE FIXXED IT MAN I REALY NEED IT

/close as duplicate of #87


[diagnostics] Errors for failure to parse a manifest in a git dependency are lost

Disclaimer: this has been tested only for cargo 1.26.0 (0e7c5a931 2018-04-06), I don't have another cargo at hand right now.
Problem
The error message is unhelpful: it only says that the crate wasn't found:
    Updating git repository `https://github.com/rust-lang-nursery/futures-rs`
error: no matching package named `futures-util-preview` found
location searched: https://github.com/rust-lang-nursery/futures-rs?rev=b7769180b091f22da12d35ea808779ddfa17b7e3
required by package [...]`

Steps
Have this in a manifest on cargo stable:
[dependencies.futures-preview]
git = "https://github.com/rust-lang-nursery/futures-rs"
rev = "b7769180b091f22da12d35ea808779ddfa17b7e3"

Possible Solution(s)
Improve the error message
Notes
Output of cargo version:
cargo 1.26.0 (0e7c5a931 2018-04-06)

Thanks for the report! I agree it is pretty minimal, what more information would make it more helpful!

I would imagine in this case it could say something like:
error: unable to load dependency `futures-preview` at (LOCATION)

Caused by:
  feature `edition` is required

this Cargo does not support nightly features, but if you
switch to nightly channel you can add
`cargo-features = ["edition"]` to enable this feature

Right now it seems to consider parsing a Cargo.toml as a pure pass/fail, and if it fails it is ignored.  There probably should be more nuance ("found what you're looking for, but there is a problem").

I would imagine in this case it could say something like:
[...]
Right now it seems to consider parsing a Cargo.toml as a pure pass/fail, and if it fails it is ignored.  There probably should be more nuance ("found what you're looking for, but there is a problem").

Well, actually when downloading the crate from crates.io, it doesn't
fail the same way (sorry for not having mentioned it in the bug report,
it was in my head but I didn't think of writing it while following the
sections). It already includes the error report.
Now, in crates.io there's a single Cargo.toml, while on such a git dep
on a workspace there are multiple Cargo.toml to consider, so it's maybe
harder to do?

So looking at it closer, it looks like this is a special case where just one Cargo.toml in the git repo parsed successfully (testcrate).  If you take it out, you get a better error message:
error: failed to load source for a dependency on `futures-preview`

Caused by:
  Unable to update https://github.com/rust-lang-nursery/futures-rs?rev=b7769180b091f22da12d35ea808779ddfa17b7e3

Caused by:
  failed to parse manifest at `/Users/eric/.cargo/git/checkouts/futures-rs-4ca77cb4f4f05ac4/b776918/futures-sink/Cargo.toml`

Caused by:
  editions are unstable

Caused by:
  feature `edition` is required

this Cargo does not support nightly features, but if you
switch to nightly channel you can add
`cargo-features = ["edition"]` to enable this feature

The code here will only report the errors if every manifest fails.  That might be tricky to fix, because it intentionally ignores manifests it can't parse.
I'm not sure the best way to deal with it.  One idea is to maybe print warnings for manifests that fail to parse, but that might be very noisy.  Perhaps @alexcrichton has ideas?

I think ideally (not considering implementation complexity, I haven't
checked the code), the code would:

Check each manifest one by one:

As soon as a manifest parses and matches, accept it
If a manifest doesn't parse, record an error

If no manifest matched, output the generated errors as hints

Here is a test in cargo's testsuite that demonstrates this problem:
#[cargo_test]
fn shows_error_for_bad_manifest() {
    // Checks for an error when a git dependency has multiple manifests, and the one you want fails to load.
    let git_project = git::new("git_proj", |project| {
        project
            .file(
                "git1/Cargo.toml",
                r#"
                    [package]
                    name = "git1"
                    version = "0.1.0"

                    this syntax is not valid
                "#,
            )
            .file("git1/src/lib.rs", "")
            .file("git2/Cargo.toml", &basic_lib_manifest("git2"))
            .file("git2/src/lib.rs", "")
    });

    let p = project()
        .file(
            "Cargo.toml",
            &format!(
                r#"
                    [package]

                    name = "foo"
                    version = "0.1.0"

                    [dependencies.git1]
                    git = '{}'
                "#,
                git_project.url()
            ),
        )
        .file("src/lib.rs", "")
        .build();

    p.cargo("check")
        .with_status(101)
        // FIXME: This error message is not very good. It loses the error from parsing git1.
        .with_stderr(
            "\
[UPDATING] git repository [..]
error: no matching package found
searched package name: `git1`
perhaps you meant:      git2
location searched: file:///[..]
required by package `foo v0.1.0 [..]`
",
        )
        .run();
}

Somehow, read_packages should probably surface all the errors it encountered to the caller so that if the caller can't find the package it is looking for, it could display all the errors. That might be hard, since the callers currently don't know which packages it is looking for.

As part of our diagnostic work, I've been wanting to make manifest parsing use "error recovery", meaning the return type could be something like read(...) -> (Manifest, Vec<Errors>).  That would help with at least being able to introspect about a package (get its name, etc) even if a failure occurs.

Even without error recovery, on parse error we could reparse with just enough of the schema to get package.name and then leave a tombstone in the RecursivePathSource to then re-read and report that parse error up (since our errors aren't Clone)


Share Integration tests

Feature or Bugfix

Tests

Detail

module share_base
bugfix delete_env requires env_object not envUri
TEMPORARY: hardcoded dataset_uri --> I wait for dataset module

Relates

#1376

Security
Please answer the questions below briefly where applicable, or write N/A. Based on
OWASP 10.

Does this PR introduce or modify any input fields or queries - this includes
fetching data from storage outside the application (e.g. a database, an S3 bucket)?

Is the input sanitized?
What precautions are you taking before deserializing the data you consume?
Is injection prevented by parametrizing queries?
Have you ensured no eval or similar functions are used?

Does this PR introduce any functionality or component that requires authorization?

How have you ensured it respects the existing AuthN/AuthZ mechanisms?
Are you logging failed auth attempts?

Are you using or adding any cryptographic features?

Do you use a standard proven implementations?
Are the used keys controlled by the customer? Where are they stored?

Are you introducing any new policies/roles/users?

Have you used the least-privilege principle? How?

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

It would be good to have a testing plan on the different scenarios that we want to cover:

Happy path approved

without Auto-approval
with Auto-approval

Happy path revoked
Unauthorized cases
Error handling
For the different types of shareable objects:
S3 Bucket
S3 Prefix (folder)
Glue table
For the different types of principals:
group
consumption role
For the different types of dataset:
created
imported with SSE-S3 encyrption
imported with KMS encryption
imported and Glue database imported

Issue to track PR: https://github.com/data-dot-all/dataall/issues/1409


[Question]: Are there anyway to have Node Postprocessor into Function Calling Agent

Question Validation

[X] I have searched both the documentation and discord for an answer.

Question
Hi guys,
Has anyone successfully incorporated Node Postprocessor into Function Calling Agent?
I've researching the doc and the source code. It seems like the Node Postprocessor only available for Query Engine.

What is the tool you are giving the agent? If its a query engine, you can supply the node postprocessors there
If its something else, just make a FunctionTool and call whatever processing you need in there

@logan-markewich
it is a mixture of query engine and function calling with FunctionCallingAgentWorker.
I guess I can have node post processor in RetrieverQueryEngine then pass it to QueryEngineTool then pass it to FunctionCallingAgentWorker
What if the FunctionCalingAgentWorker contains custom function that query data from API only?

You could do that too. In a custom function, you can do whatever you want with the queried data

from llama_index.core.tools import FunctionTool

def query(query_str: str) -> str:
  """Useful for querying information about X."""
   ...

tool = FunctionTool.from_defaults(fn=query)


merge package from arlac77/npm-package-template

package.json

chore(package<EMAIL_ADDRESS>chore(scripts): cover@#overwrite c8 --temp-directory build/coverage ava && c8 report -r lcov --temp-directory build/coverage
chore(package): add nyc from template
chore(package): set $.ava.require='esm' as in template
chore(package): set $.ava.files='tests/-test.js,tests/-test.mjs' as in template
chore(package): set $.ava.extensions='js,mjs' as in template

Codecov Report

Merging #493 into master will not change coverage.
The diff coverage is n/a.

@@          Coverage Diff          @@
##           master   #493   +/-   ##
=====================================
  Coverage     100%   100%
=====================================
  Files           1      1
  Lines          41     41
=====================================
  Hits           41     41

Continue to review full report at Codecov.

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

Coverage remained the same at 94.643% when pulling 54bd8142330d9b797eb9aaf2dc11943a6a981b21 on template-sync-1 into afa7271d0d0983cd67cd57c2c66588ce5110c49c on master.


C backend says result is zero tuples

(branch grappa-master #270)
The result table is populated correctly but the numTuples field is still 0.
Recreate the bug: scan a non-empty table.

I see that the datasets table in radish-server never gets updated, so it is not necessarily just that it reads the 0 too soon.
sqlite> select * from dataset where queryId=9;
userName|programName|relationName|queryId|created|url|status|startTime|endTime|elapsed|numTuples|schema|backend|query
public|adhoc|sp2bpredicates|9|1427827736.64314|http://localhost:1337|SUCCESS|1427827736.64314|1427827738.73232|2089179039.00146|0|{"columnNames": "['subject', 'predicate', 'object']", "columnTypes": "['LONG_TYPE', 'LONG_TYPE', 'LONG_TYPE']"}|clang|sp2bench = scan(public:adhoc:sp2bench);
S1 = select * from sp2bench;

store(S1, sp2bpredicates);

GET http://localhost:1337/data?qid=9&format=csv

[{"columnNames": "['subject', 'predicate', 'object']", "columnTypes": "['LONG_TYPE', 'LONG_TYPE', 'LONG_TYPE']"}, {"tuple": "1,2,3,"}, {"tuple": "1,5,4,"}, {"tuple": "1,100,200,"}]

@TheYorkWei have you seen this / any idea what the cause?

requires fix in raco https://github.com/uwescience/raco/commit/a9527c5c2455df46d53d64863d0ffc47d9d5a60c

fixed in https://github.com/uwescience/raco/tree/clang-fixups and https://github.com/uwescience/radish-server/commit/6c60345b930da64ede34d8e28555acca44723ea3


[v1alpha2] Add namespace in providerID for unique naming

the providerID was metal3://<host.Name>. Modifying it to metal3.//<host.Namespace>/<host.Name>

/cc jan-est

/cc kashifest

/lgtm


Component gravity forms

Updating current atoms to use Angular 1.5 Component instead of Directive
Update .gitignore to account for IDE specific files and build artefacts

@chrisweight can you resolve the conflicts so I can merge it?


[Feature] Implement Buffer.alloc and Buffer.allocUnsafe, add tests

Notes:

Using toThrow() is nice here because we can assert the module will panic (and be caught inside as-pect)
Downside: We need to keep track of how many references are generated and determine the correct number that should be left around inside the module using:

afterAll(() => {
   expect<i32>(RTrace.count()).toBe(value);
});

Great reuse of E_INVALIDLENGTH here

Thoughts?

I like this solution better. Count the references after each test. For some reason #allocUnsafe has 12 instead of 14, but it's nice to set a fixture like this.

Not sure what to do with the throw asserts, since everything that can be done at this point is suboptimal. Suggesting to ignore these things for now, because given the complexity this adds, asserting that an u32 comparison for example works doesn't exactly justify the effort.

Not sure what to do with the throw asserts, since everything that can be done at this point is suboptimal.
I don't know exactly what you mean by "suboptimal."

I'm okay with leaving out the checks because it seems to be good enough for the std lib, but another part of me remembers the many bug fixes I had to make in jest-canvas-mock because I didn't follow the specification correctly and didn't throw errors where they needed to be thrown.
As for the RTrace stuff, we can definitely assume that AssemblyScript does the job correctly.

With suboptimal I meant that all things throw in AS don't work properly anyway yet, thus requiring workarounds, respectively that baking reference counts into the tests is susceptible to breakage if something on either the compiler or optimizer side changes. Seems hard to maintain.

Yeah. The toThrow() assertion merely looks for unreachable(). I know it's suboptimal, but as-pect will support try/catch the moment AssemblyScript does, and I see no reason why we should avoid using it, despite being not optimal.
We should definitely remove the RTrace stuff.

Okay. I think the functions are ready for review. Anything that needs to be changed?


Dynamic (axis) title

Is it possible to change the (axis) title dynamically, for example upon a selection or transform_calculate?
I would like the y axis title to be the name of the specification I am plotting.
Using datum.spec in the Y title just returns literally the string "datum.spec".
Using the specs_sel.spec returns "name_of_selection.spec".
Using transform_calculate returns an error: name 'ylabel' is not defined.
Example:
import altair as alt
from vega_datasets import data
from altair import datum

source = data.cars()

specs = specs = ['Miles_per_Gallon', 'Cylinders', 'Displacement', 'Horsepower',
       'Weight_in_lbs', 'Acceleration']
# A dropdown filter
specs_drop = alt.binding_select(options=specs, name="Choose specification: ")
specs_sel = alt.selection_single(fields=['spec'], bind=specs_drop, name="Specification",init={'spec': 'Miles_per_Gallon'})

chart = alt.Chart(source
).transform_fold(
    specs,
    as_ = ['spec', 'value']
).transform_filter(
    specs_sel
).transform_calculate(
    ylabel = datum.spec
).add_selection(
    specs_sel
).mark_point().encode(
    x = 'Horsepower:Q',
    y = alt.Y('value:Q',scale=alt.Scale(zero=False,padding=10), title=specs_sel.spec),
    color='Origin:N'
).properties(width=400)

chart

Vega Editor

No, currently axis titles cannot be generated dynamically in Altair or Vega-Lite.

OK, thanks for the fast reply!

No, currently axis titles cannot be generated dynamically in Altair or Vega-Lite, but this may be possible in future versions.

Is this still not possible?

I'm currently facing the same problem and it doesn't seem to be the case

Agree with @Jumitti. Currently, encoding channels like alt.X() do not support expressions for the title option. As said in https://github.com/vega/altair/issues/2677#issuecomment-2532780514, chart titles can be expressed dynamically, see https://altair-viz.github.io/user_guide/interactions/expressions.html#inline-expressions-in-titles for a few examples doing so.


RaidGuild Request: indexed.wtf doc edits and additions

Hello blessed devs,
@dvush @gluk64 @ly0va @popzxc @shamatar @slumber @vladbochok
We here at Raid Guild have brought you indexed.wtf and are taking care to make sure the docs we display for each Layer 2 and side-chain project are accurate and filled with information the dev teams would like to highlight specifically. Having easily accessible information about all these solutions will bring more attention to your project.
Please find the markdown for the docs for your project below.
Kindly review, edit and provide any missing details and information at your taste and discretion as project leaders.
Moving forward we aim to keep indexed.wtf as current and beneficial to developers researching the ecosystem as possible. Please feel free at any time to submit an issue or PR to update the displayed information.
Thank you for your attention to this matter.
Best,
The Indexed Army
We stand for accurate data.
www.RaidGuild.org
@chair28980 @kittyslasher

# Matter Labs

## Description

<!-- Please update description if necessary. Please feel free to update/eliminate/include headers below.-->

zkSync (built by Matter Labs) is a scaling and privacy engine for Ethereum. Its current functionality scope includes low gas transfers of ETH and ERC20 tokens in the Ethereum network. This document is a high-level description of the zkSync development ecosystem.

## Consensus Type

## Tx Cost

## Average TPS

##Finality Time

## Governance/validator Token

## Transactional Token

## Resources

[Website](https://matter-labs.io/)

[Github](https://github.com/matter-labs)

[Developer Docs]()

## Social Media & Community

[Telegram](https://t.me/matterlabs)

[Twitter](https://twitter.com/the_matter_labs)

[Medium](https://medium.com/matter-labs)

[Gitter](https://gitter.im/matter-labs/community)

Hi @kittyslasher !
Should we make a PR here:
https://github.com/raid-guild/indexed/blob/main/docs/matter-labs-doc.md
or simply reply to your comment with the description?
Also, we would suggest to use "zkSync", because the Matter Labs is the company behind it, but not the scaling solution itself :slightly_smiling_face:

Hi @kittyslasher !
Should we make a PR here:
https://github.com/raid-guild/indexed/blob/main/docs/matter-labs-doc.md
or simply reply to your comment with the description?
Also, we would suggest to use "zkSync", because the Matter Labs is the company behind it, but not the scaling solution itself 🙂

First off you hacky hacker get out of our repo! Jk Jk Right now we simply ask you just fill out the template with the description and other requested information. Feel free to add additional links to the bottom or information you feel is important to the project. After we make this initial update we will ask you keep the docs updated make any necessary PR's to do so!
Second I appreciate the prompt and professional response. We look forward to helping your project grow!

@StanislavBreadless @keriat
Good morning/Afternoon Depending on your time zone. We plan on launching the site within the next week and are still awaiting updated docs.

Hi @kittyslasher !
Sorry for the late reply. The last two weeks have been very intense for our team :(
One question:
What should we write in the ## Transactional subheader?

Hi @kittyslasher !
Sorry for the late reply :( The last two weeks have been very intense for our team
One question:
What should we write in the ## Transactional subheader?

No worries I understand as things have been crazy here! I'm noticing the template got cut off when copying it. This is my fault and I apologize.
I went ahead and updated the original post. It should have said transactional Token.

I hope we will be able to update the docs since the NFTs and atomic swaps/limited orders will be ready very soon :slightly_smiling_face:.
# zkSync

## Description

zkSync (built by Matter Labs) is a scaling and privacy engine for Ethereum. Its current functionality scope includes low gas transfers of ETH and ERC20 tokens in the Ethereum network.

The zkSync 1.0 (the current version) will support NFTs and limited orders this spring.
The zkSync 2.0 (testnet in May, mainnet in August) will bring full EVM support.

## Consensus Type

PoS, under development

## Tx Cost

600 gas

## Average TPS

2000

## Finality Time

5 minutes

## Governance/validator Token

Under development.

## Transactional Token

ETH, ERC20 tokens. NFTs soon.

## Resources

[Website](https://zksync.io/)

[Github](https://github.com/matter-labs/zksync)

[Developer Docs](https://zksync.io/dev/)

## Social Media & Community

[Telegram](https://t.me/zksync)

[Twitter](https://twitter.com/zksync)

[Medium](https://medium.com/matter-labs)

[Gitter](https://gitter.im/matter-labs/zksync)

We are looking to launch this by this coming Sunday. We will be allowing changes and updates to the docs once pushed. We are discussing what will be the easiest method to keep them updated once we go live. I much appreciate the efforts in getting these completed and I look forward to watching the project grow!  NFT and Atomic swaps!?! Oh my!


update binary to return Optionals

https://github.com/exercism/x-common/issues/95

Your Travis integration is an amazing improvement.

I like this update a lot. We should do more with optionals.

Thanks! Travis is cool. takes about 2-3 minutes to run though, not sure if that is normal.
I was debating between throwing or optionals but I am not a fan of making all the callers have to use try try? for everything.
http://ericasadun.com/2015/07/29/nils-vs-throws-in-swiftlang-part-ii/

I think that 2-3 minutes is a small price to pay for the added layer of protection. With the test running sequentially, I'm not surprised it takes that long.
I agree with you on try?. We should look through the exercises and see which ones might be good candidates for try blocks. Maybe we set up some specific error types to be returned? I kind of like the idea of an exercise that defines some things ahead of time and expects the user to conform. Like they're extending an existing system and can't touch the existing error types.
Maybe we can push a starter exercise.swift file with a predefined class and set of errors, then ask the user to extend it without touching the existing code.

Travis might speed up if we configure it with sudo: false so that it uses containerized builds.

i did try sudo: false on a test branch but not much improvement. I can live with 2-3 mins wait per pr. ;)


Make the releaseCount configurable

Add releaseCount as a option in the action

Released in version v1.3.0