NNBD: Instantiate-to-bounds works in different ways in runtime and analyzer

Dart VM version: 2.8.0-edge.b0b06bff31b167d13ecd9217182ec7e7a8f4f937 (Tue Feb 25 04:39:10 2020 +0000) on "linux_x64"
The source code below throws compile error with analyzer and passes with dart when run in nnbd mode.
Without nnbd, it passes both with  analyzer and dart.
class A<X extends A<X>> {}
class C<T> {}

main() {
  new C<A>();
}

Sample output is:

$ dartanalyzer --enable-experiment=non-nullable test.dart
Analyzing test.dart...
error • 'A' doesn't extend 'A<A>'. • test.dart:5:9 • type_argument_not_matching_bounds
1 error found.
$ dart --enable-experiment=non-nullable test.dart
$ dartanalyzer test.dart
Analyzing test.dart...
No issues found!
$ dart test.dart

If I change type parameter in the first line to the nullable one, it passes both with analyzer and dart:
class A<X extends A<X>?> {}
class C<T> {}

main() {
  new C<A>();
}

I am not quite sure if this is a bug in the analyzer or runtime, but anyway analizer and dart should work similarly here.

@stefantsov is CFE wrong or is analyzer wrong?

To me, this code doesn't look like a compile-time error.  It actually looks like one of the primary use cases for the instantiate-to-bounds feature.
/cc @eernstg

Agreed, instantiate to bounds should yield a correctly super-bounded type as the desugaring of the raw type A (in any location where it isn't equipped with type arguments via type inference, e.g., except A<Never> a = A();).

Here is a smaller example causing the same response from the analyzer:
class A<X extends A<X>> {}
A get g => throw 0;

I suspect that this is caused by a missing nnbd update: If the check for whether a given type is super-bounded replaces each occurrence of a top type by Null (where it should use Never), we get exactly the test where a bound with ? will be a supertype as required, but the plain A<X> won't:
A<dynamic> is clearly not regular-bounded; so we replace covariant top by bottom, get A<Never>, and check: Never <: A<Never> is true, so that's regular-bounded, so A<dynamic> is correctly super-bounded. But if we check with Null then we need Null <: A<Null>, and that's not true.

https://dart-review.googlesource.com/c/sdk/+/137280

This CL adds the test from the comment, but it fails for CFE :-(
/====================================================================================================================\
| cfe-strong-linux:language/instantiate_to_bound/issue40764_test is new and failed (CompileTimeError, expected Pass) |
\====================================================================================================================/

--- Command "fasta" (took 737ms):
(cd /b/s/w/ir/cache/builder/sdk/ ; DART_CONFIGURATION=ReleaseX64NNBD ./out/ReleaseX64NNBD/dart ./pkg/front_end/tool/_fasta/compile.dart --verify -o ./out/ReleaseX64NNBD/generated_compilations/fasta/tests_language_instantiate_to_bound_issue40764_test/out.dill --platform ./out/ReleaseX64NNBD/vm_platform_strong.dill --enable-experiment=non-nullable --force-nnbd-checks --nnbd-strong --packages=./.packages ./tests/language/instantiate_to_bound/issue40764_test.dart )

exit code:
1

stdout:
tests/language/instantiate_to_bound/issue40764_test.dart:3:9: Error: Type argument 'A<dynamic>' doesn't conform to the bound 'A<X>' of the type variable 'X' on 'A' in the return type.
 - 'A' is from 'tests/language/instantiate_to_bound/issue40764_test.dart'.
Try changing type arguments so that they conform to the bounds.
A get g => throw 0;
        ^
tests/language/instantiate_to_bound/issue40764_test.dart:1:9: Context: This is the type variable whose bound isn't conformed to.
class A<X extends A<X>> {}
        ^

--- Re-run this test:
python tools/test.py -n cfe-strong-linux language/instantiate_to_bound/issue40764_test


($haystack) of type string is deprecated

Summary
When trying to reach "/app-settings/emails" I get the error "Whoops, looks like something went wrong — check logs in /storage/logs."
Steps to reproduce
Using the latest image with php 8.2.5 and going to " /app-settings/emails"
What is the expected correct behavior?
The page loads normally.
Relevant logs and/or screenshots
[2023-05-12 09:48:22] production.ERROR: strstr(): Passing null to parameter #1 ($haystack) of type string is deprecated (View: /www/html/resources/views/settings/emails.blade.php) (View: /www/html/resources/views/settings/emails.blade.php) {"userId":2,"email":"tim@korverholland.com","exception":"[object] (ErrorException(code: 0): strstr(): Passing null to parameter #1 ($haystack) of type string is deprecated (View: /www/html/resources/views/settings/emails.blade.php) (View: /www/html/resources/views/settings/emails.blade.php) at /data/storage/framework/views/afc08c962418014aaf4c6cb9bea7b0d488830cba.php:49, ErrorException(code: 0): strstr(): Passing null to parameter #1 ($haystack) of type string is deprecated (View: /www/html/resources/views/settings/emails.blade.php) at /data/storage/framework/views/afc08c962418014aaf4c6cb9bea7b0d488830cba.php:49, ErrorException(code: 0): strstr(): Passing null to parameter #1 ($haystack) of type string is deprecated at /data/storage/framework/views/afc08c962418014aaf4c6cb9bea7b0d488830cba.php:49)

Environment

Image version / tag:  1.17.4
Host OS: Ubuntu 22.04

Possible fixes

Open the affected file in a text editor:
nano /var/www/html/resources/views/settings/emails.blade.php

Locate the line containing strstr() (as per the log, it's around line 49). It should look like this:
strstr(null, ...)

Replace the strstr() function with the following code to perform a null check before calling the function:
(!is_null($haystack) && strstr($haystack, ...))

Replace $haystack with the name of the variable actually used in your file and ... with the remaining arguments passed to the strstr() function.

Thanks for this! This seems to be a code issue and would be better suited for the https://github.com/freescout-helpdesk/freescout repository, as this handles only image issues.


No Dirmngr

I tried to run the second step of the installation tutorial but it ended with the following error.
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5
Executing: /tmp/apt-key-gpghome.voA0lZRTwz/gpg.1.sh --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5
gpg: connecting dirmngr at '/tmp/apt-key-gpghome.voA0lZRTwz/S.dirmngr' failed: IPC connect call failed
gpg: keyserver receive failed: No dirmngr

@TCsTheMechanic were you able to get this solved?


hwmv2: Mismatch between SOC_SERIES name and value

For hwmv2, there should be a match between the names and values of SoCs, this should take the form of:
config SOC_SERIES
        default "nrf51" if SOC_SERIES_NRF51
        default "nrf52" if SOC_SERIES_NRF52

As it stands today without any exceptions, the following would be wrong:
config SOC_SERIES
        default "nrf51" if SOC_SERIES_NRF51X
        default "nrf52" if SOC_SERIES_NRF52X

The reason for needing alignment in SOC_SERIES and SOC names/values is so that CI checks can be added for spotting typos, as there currently is with boards in hwmv2 now. An example hwmv2 Kconfig.<board> file:
config BOARD_V2M_BEETLE
        select SOC_BEETLE_R0

and corresponding board.yml file:
board:
  name: v2m_beetle
  vendor: ARM
  socs:
  - name: beetle_r0

If there is a typo in a board name, the following illustrates how a mismatch is now detected in hwmv2 which would not be caught had the bool prompt be left:
config BOARD_V2M_BEETLE
        bool
        select SOC_BEETLE_R0

config BOARD_V8M_BEETLE
        bool
        select SOC_BEETLE_R0

There is similar checking which has been added for SOC_PART_NUMBER whereby issues have been found and corrected.
This checking can be expanded to SOC_SERIES and SOC, as of right now the aim is for the values of these to match the name without any rules or exceptions but this is not currently adhered to by all converted hwmv2 SoCs.
@manuargue has helpfully put together a script which lists the current mismatches for SOC_SERIES:

soc/andes/ae350/Kconfig.soc @nordicjm

[ ] default string != option name ('ae350', 'ANDES_AE350')

soc/nordic_nrf/Kconfig.soc @nordicjm

[ ] default string != option name ('nrf51', 'NRF51X')
[ ] default string != option name ('nrf52', 'NRF52X')
[ ] default string != option name ('nrf53', 'NRF53X')
[ ] default string != option name ('nrf54h', 'NRF54HX')
[ ] default string != option name ('nrf54l', 'NRF54LX')
[ ] default string != option name ('nrf91', 'NRF91X')

soc/st/stm32/stm32f0/Kconfig.soc @erwango

[ ] default string != option name ('stm32f0', 'STM32F0X')

soc/st/stm32/stm32u5/Kconfig.soc @erwango

[ ] default string != option name ('stm32u5', 'STM32U5X')

soc/st/stm32/stm32h5/Kconfig.soc @erwango

[ ] default string != option name ('stm32h5', 'STM32H5X')

soc/st/stm32/stm32l4/Kconfig.soc @erwango

[ ] default string != option name ('stm32l4', 'STM32L4X')

soc/st/stm32/stm32l5/Kconfig.soc @erwango

[ ] default string != option name ('stm32l5', 'STM32L5X')

soc/st/stm32/stm32wl/Kconfig.soc @erwango

[ ] default string != option name ('stm32wl', 'STM32WLX')

soc/st/stm32/stm32h7/Kconfig.soc @erwango

[ ] default string != option name ('stm32h7', 'STM32H7X')

soc/st/stm32/stm32c0/Kconfig.soc @erwango

[ ] default string != option name ('stm32c0', 'STM32C0X')

soc/st/stm32/stm32l1/Kconfig.soc @erwango

[ ] default string != option name ('stm32l1', 'STM32L1X')

soc/st/stm32/stm32g4/Kconfig.soc @erwango

[ ] default string != option name ('stm32g4', 'STM32G4X')

soc/st/stm32/stm32f1/Kconfig.soc @erwango

[ ] default string != option name ('stm32f1', 'STM32F1X')

soc/st/stm32/stm32f3/Kconfig.soc @erwango

[ ] default string != option name ('stm32f3', 'STM32F3X')

soc/st/stm32/stm32f4/Kconfig.soc @erwango

[ ] default string != option name ('stm32f4', 'STM32F4X')

soc/st/stm32/stm32f2/Kconfig.soc @erwango

[ ] default string != option name ('stm32f2', 'STM32F2X')

soc/st/stm32/stm32wb/Kconfig.soc @erwango

[ ] default string != option name ('stm32wb', 'STM32WBX')

soc/st/stm32/stm32mp1/Kconfig.soc @erwango

[ ] default string != option name ('stm32mp1', 'STM32MP1X')

soc/st/stm32/stm32f7/Kconfig.soc @erwango

[ ] default string != option name ('stm32f7', 'STM32F7X')

soc/st/stm32/stm32l0/Kconfig.soc @erwango

[ ] default string != option name ('stm32l0', 'STM32L0X')

soc/st/stm32/stm32g0/Kconfig.soc @erwango

[ ] default string != option name ('stm32g0', 'STM32G0X')

soc/st/stm32/stm32wba/Kconfig.soc @erwango

[ ] default string != option name ('stm32wba', 'STM32WBAX')

soc/microchip/mec/Kconfig @fabiobaltieri @jvasanth1

[ ] default string != option name ('mec152x', 'MEC1501X')

soc/raspberry_pi/rp2/Kconfig.soc @nordicjm

[ ] default string != option name ('rp2', 'RP2XXX')
[ ] default string != option name ('rp2040', 'RP2XXX')

soc/intel/intel_adsp/ace/Kconfig.soc @golowanow

[ ] default string != option name ('ace', 'INTEL_ACE')

soc/intel/intel_adsp/cavs/Kconfig.soc @golowanow

[ ] default string != option name ('cavs', 'INTEL_ADSP_CAVS')

soc/xilinx/zynq7000/xc7zxxx/Kconfig.soc @nordicjm

[ ] default string != option name ('xc7zxxx', 'XILINX_XC7ZXXX')
[ ] default string != option name ('xc7zxxxs', 'XILINX_XC7ZXXXS')

soc/nxp/s32/s32k1/Kconfig.soc @manuargue

[ ] default string != option name ('s32k1', 'S32K1XX')

soc/nxp/s32/s32k3/Kconfig.soc @manuargue

[ ] default string != option name ('s32k3', 'S32K3XX')

soc/nxp/kinetis/k2x/Kconfig.soc @dleach02

[ ] default string != option name ('k2x', 'KINETIS_K2X')

soc/nxp/kinetis/ke1xf/Kconfig.soc @dleach02

[ ] default string != option name ('ke1xf', 'KINETIS_KE1XF')

soc/nxp/kinetis/k8x/Kconfig.soc @dleach02

[ ] default string != option name ('k8x', 'KINETIS_K8X')

soc/nxp/kinetis/kwx/Kconfig.soc @dleach02

[ ] default string != option name ('kwx', 'KINETIS_KWX')

soc/nxp/kinetis/k6x/Kconfig.soc @dleach02

[ ] default string != option name ('k6x', 'KINETIS_K6X')

soc/nxp/kinetis/kl2x/Kconfig.soc @dleach02

[ ] default string != option name ('kl2x', 'KINETIS_KL2X')

soc/nxp/kinetis/kv5x/Kconfig.soc @dleach02

[ ] default string != option name ('kv5x', 'KINETIS_KV5X')

soc/arm/designstart/Kconfig.soc @nordicjm

[ ] default string != option name ('designstart', 'ARM_DESIGNSTART')

Therefore, the possible options that need to be decided upon:

[ ] Fix the above so that they match without exceptions
[ ] Make some exceptions for the above and fix the rest:

[ ] Allowing 1 (or multiple) 'X' characters at the end
[ ] Allowing a name with underscore character at the beginning

[ ] Make all exceptions for the above and have no checking

@fabiobaltieri/@jvasanth1 I think yours is the exception

@nordicjm This is doable but my initial question is what is the use of Kconfig symbol SOC_SERIES ?

@nordicjm This is doable but my initial question is what is the use of Kconfig symbol SOC_SERIES ?

It should match up with what is in soc.yml. Can think of it as how boards no longer have bool in their Kconfig.<board> files but the build system generates it automatically, that too should be possible for SOC fields in future e.g. SOC, SOC_FAMILY, SOC_SERIES.
Actually here is a good example, take this soc.yml file https://github.com/zephyrproject-rtos/zephyr/blob/collab-hwm/soc/aspeed/soc.yml:
series:
- name: ast10x0
  socs:
  - name: ast1030

and Kconfig.soc files https://github.com/zephyrproject-rtos/zephyr/blob/collab-hwm/soc/aspeed/Kconfig.soc and https://github.com/zephyrproject-rtos/zephyr/blob/collab-hwm/soc/aspeed/ast10x0/Kconfig.soc:
config SOC_FAMILY_ASPEED
	bool

config SOC_FAMILY
	default "aspeed" if SOC_FAMILY_ASPEED

config SOC_SERIES_AST10X0
	bool
	select SOC_FAMILY_ASPEED
	help
	  Enable support for ASPEED AST10X0 series

config SOC_AST1030
	bool
	select SOC_SERIES_AST10X0
	help
	  AST1030

config SOC_SERIES
	default "ast10x0" if SOC_SERIES_AST10X0

config SOC
	default "ast1030" if SOC_AST1030

The soc.yml file here is wrong because it defines a soc series and soc but does not define a soc family, so if the build system parses all soc.yml files and generated all the SOC_FAMILY_<X> symbols automatically then this would fail for this board because the soc.yml file does not define it when it should, indicating an error

Please see this PR which introduces SoC name checking in existing compliance check: https://github.com/zephyrproject-rtos/zephyr/pull/69309

that too should be possible for SOC fields in future e.g. SOC, SOC_FAMILY, SOC_SERIES.

See reason here why this haven't been implemented so far: https://github.com/zephyrproject-rtos/zephyr/pull/69309#issuecomment-1958907445

soc/intel/intel_adsp/ace/Kconfig.soc
default string != option name ('intel_ace15_mtpm', 'INTEL_ACE')

@nordicjm
this one is for toolchain selection
https://github.com/zephyrproject-rtos/zephyr/blob/d6cb9c967227b05e59a3f8e5a619fa695c174594/soc/intel/intel_adsp/ace/Kconfig.soc#L13-L14

@fabiobaltieri @jvasanth1 I think yours is the exception here and the name is incorrect

yeah that one gave me some head scratching, initially tried to rename the directory to match and then bumped into a dependency with the HAL modules/hal/microchip/mec/CMakeLists.txt and figure I'd leave it alone, @nordicjm do you think it's worth fixing it now a the cost of having a dependency on a hal change?

@nordicjm STM32 https://github.com/zephyrproject-rtos/zephyr/pull/69325

@fabiobaltieri @jvasanth1 I think yours is the exception here and the name is incorrect

yeah that one gave me some head scratching, initially tried to rename the directory to match and then bumped into a dependency with the HAL modules/hal/microchip/mec/CMakeLists.txt and figure I'd leave it alone, @nordicjm do you think it's worth fixing it now a the cost of having a dependency on a hal change?

HAL update is fine, think we have about 5 or 6 repos that have changes for hwmv2 that will need merging

HAL update is fine, think we have about 5 or 6 repos that have changes for hwmv2 that will need merging

Cool, @jvasanth1 @albertofloyd is this something you could look into? I'm OOO at the moment.

https://github.com/zephyrproject-rtos/zephyr/pull/69528 for the MEC stuff

I don't think this is an issue for Raspberry Pi's SoCs on the HEAD of main https://github.com/zephyrproject-rtos/zephyr/blob/main/soc/raspberrypi/rp2xxx/Kconfig.soc


Change step increment for Mining productivity bonus from 2 to 10

Fix for issue #141

While this is correct for 0.17, it is not correct for 0.16, which remains the current stable version, as well as the calculator's default dataset.
It would be possible to change this property depending on the version, but it might be simplest just to wait until 0.17 is stable and I decide to remove 0.16 support from the calculator.

I think 0.17 is stable and this could be merged now.


ARC-210 Buy AR Screen (UI with mock data - pre api)

This includes the basic state management logic as well as the styling/display for the buy screen. In this PR, mock data is used. In the next PR, we will be using the Onramper API for real data.

Closing branch. This branch is now included within https://github.com/arconnectio/ArConnect/pull/157 (ARC-210-buy-ar-screen-live).


Release v2.0.0

Following https://github.com/iiasa/message_ix/wiki/Release-procedure.

Currently this await iiasa/ixmp_source#256—@zikolach to review & merge that, and add the resulting .jar file to this branch.

Corresponding PR for the conda package: conda-forge/ixmp-feedstock#15


Guru Claim Request: Quarkus

Gurubase Username:
<EMAIL_ADDRESS>Guru Link:

Proof of Maintainership:
I'm admin and co-lead of quarkus - pr's merged by me here
https://github.com/quarkusio/quarkus/pulls?q=author%3Amaxandersen
account used for gurubase is using our quarkus bot/account so if/when get hit by a bus admin team can get access :)

I’ve assigned it to your Gurubase account. You can find it on the 'My Gurus' page. While I’m closing this issue, please let me know if you need any help here or on our Discord Channel.


Fix twitter (x) posts for v2 api

A few small things to clean up: we should remove the extwitter dependency since we are no longer using it -and- pull/repurpose the it's config in config/config.exs. You might be able to adjust it a bit so that you can use it in the oauther_credentials function.


update sample policies

Added titles to policies that require them
Updated names and descriptions
Removed duplicates, etc.

@chipzoller - instructions on rendering policy markdown are available at:
https://github.com/kyverno/website/blob/feature/update_sample_policies/render/README.md
If you have the time, can you please try out and let me know your feedback.
We can potentially automate using a GitHub action or as part of the Netlify site build (not sure if this is necessary at the moment...)

@chipzoller - instructions on rendering policy markdown are available at:
https://github.com/kyverno/website/blob/feature/update_sample_policies/render/README.md
If you have the time, can you please try out and let me know your feedback.
We can potentially automate using a GitHub action or as part of the Netlify site build (not sure if this is necessary at the moment...)

@JimBugwadia some feedback:

Might be good to make this process more "go newbie" friendly such as:

Add step to chmod +x the render binary after go build process.
May need to change the output of the build process to be something other than render if executed in the root of the website dir since render already exists as a directory.
Link to instructions on how to install go(?)

When I run render on the current state of the policies repo, it's generating title and linkTitle with dashes and not with spaces (as the MD files currently have). weight is also different. Haven't checked the code.

Submitted: https://github.com/kyverno/website/issues/59
I like the idea or adding a minimum version for a policy. We can discuss the expected behaviors, if we want to check / enforce at runtime.

Submitted: https://github.com/kyverno/website/issues/59
I like the idea or adding a minimum version for a policy. We can discuss the expected behaviors, if we want to check / enforce at runtime.

Created: https://github.com/kyverno/website/issues/59

Created: https://github.com/kyverno/website/issues/59


Improved template mode for CLI (#310)

The template mode of the CLI is now able to match modules in the template. This is required to allow signed modules to work with the template mode.
In addition any external modules, plugins, probe paths and the packer settings are now transferred from the template project.
fixes #310

:white_check_mark: Build ConfuserEx 739 completed (commit https://github.com/mkaring/ConfuserEx/commit/2ea1fd43a2 by @mkaring)

:white_check_mark: Build ConfuserEx 741 completed (commit https://github.com/mkaring/ConfuserEx/commit/9124104aea by @mkaring)

:white_check_mark: Build ConfuserEx 743 completed (commit https://github.com/mkaring/ConfuserEx/commit/1666eb421e by @mkaring)


Re-organize the actions and dependencies UI

Use a tab-widget to place the dependencies view and the cargo actions on
the same "level". This is a slightly less custom look.
Before:

After:

Two levels of tabs are not really great.
Maybe the dependency tab should be a top level tab.
We should probably ask help for the UX design

The dependency tab can't be top-level because then the other tab has the method for selecting the package, unless we also duplicate that.
I think the best would be a tool bar (with icons), but we don't have a toolbar. Anyway, this patch is not the way.

Maybe the tab bar is right, bit the toolchain options should go somewhere else


Add content from old site

Move over existing textual content (paragraphs, tables, lists, links, etc.) from https://functionalprogramming.in/ to here. Should be done after #17

Working on it.


Added MacOS instructions for imagemagick and argument parser

Not sure what the contributing guidelines are for this but got this running on my MacOS, only thing I had to do was install the  imagemagick open source package. Worked nicely!
Changes

Updated README.md to include MacOS instructions
Added argument parsing for calling the script (default is still sample.py) so you can optionally specify the path e.g. python main.py --video '../../my_video.mp4' (also documented in the README file)

Hey Charlie! Thanks for the PR. Will take some time to review the code changes on my machine, and if everything works and looks good then I'll be sure to merge it in by some time tomorrow at the latest.


feat: use presigned s3 urls

:pencil: Description

Sending base64 encoded images over the network is latent. Leveraging s3 presigned URLs should improve performance for the user when paginating large images.

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


Support more types in sf::Shader::setParameter

Add overloads for:

4x4 matrices (const float[16])
integers
booleans

To be discussed:

3x3 raw matrices (const float[9])
arrays

Since #983 is merged, this can be closed, right?

Yes, totally.


Feature headless

Fixed headless rendering; you now create a window without setting the Windows API instance. This won't create a OS-backed window but rather a virtual one.

Still uses triple buffering. This is not a good enough solution.

Why not? @VZout using triple buffering allows the GPU to keep on working on the next frames while you readback from the result from a while ago


Renderdoc D3D12 shader hash is incorrect

Description
Renderdoc doesn't show the correct hash for D3D12 (DXBC and DXIL) shaders.
.

Steps to reproduce
PIX:

Run analysis on"GPU Capture" a D3D12 app that uses DXBC and/or DXIL in PIX 2004.27.
In Pipeline tab, click on a draw/dispatch call.
In the bottom Pipeline tab, click "Shader"->GPU Instructions->Disassembly (this option is only available on AMD GPU)
This "D3D12 Shader Hash" is used in driver for shader detection.

Similar steps on Nsight Graphics using Nvidia GPU to see the correct D3D12 shader hash.
Renderdoc:
1.Capture and then open D3D12 app that uses DXBC and/or DXIL in Renderdoc
2. Click on same draw/dispatch call from PIX's step 2.
3. From Pipelineview go to shader disassembly
4.Renderdoc's shader hash is different fro Pix's step 4.

Environment

RenderDoc version:  ce908cf1da8691222ec8d692646697e1f1fd6613
Operating System: Win10
Graphics API: DX12
AMD 5700XT (or any AMD GPU).

I've double checked RenderDoc's hash display and it comes correctly from the hash stored in the DXBC container. I don't know where the driver hash comes from but I can't debug that hash code.
If you can provide a case where the hash displayed in RenderDoc does not match that in the file, I can investigate. For obvious reasons I can't debug why PIX might display something different because I'm not responsible for PIX or the driver.


new feature to access HFSSExtentInfo in EDB

Description of the feature

Steps for implementing the feature
No response
Useful links and references
No response

edbapp.hfss.hfss_extent_info

@housamomar


Ignore migrations from coverage report

This ignores the files from the migration folders, so we have a better coverage report. In the future would be nice to integrate coverage into the CI pipeline.

Yea, I tried to setup coveralls at one point, but might be worth trying again. There's a few free for OSS hosted services.

This is probably a good file for the common repo: https://github.com/rtfd/readthedocs-common

We could also use this inside tox itself, but due to we use chdir it doesn't work (weird). I'll be moving this later (at least now I know it works p:)


docs(fix): render inline code in headlines

I picked this up in #117 to touch up on some further issues.


Use helperText props in FormGroup for help and validation messages in cluster form

Fixes #356.
Discussing with @vconzola, we decided that to align with PatternFly design guidelines for forms, the help text mocked up as popovers in the issue should instead be placed below the text fields using the helperText prop of FormGroup. Also, this form previously used a special FormErrorDiv below the fields to display validation errors, but we should instead use helperTextInvalid and mark the FormGroups and TextInputs as isValid={false} when validation errors are present for that field. This takes up less vertical space, replaces the initial helperText if errors are present, and gives the field error styles (red border on the bottom, red alert icon at the right side).
This PR makes these changes in the AddEditClusterForm only, but we should use this anywhere we have form help text and validation messages and we should remove FormErrorDiv once we've done this everywhere. I opened a new issue for that: https://github.com/fusor/mig-ui/issues/692
This PR also fixes a bug where the azureResourceGroup field would not display its validation error due to a typo in the validate function.
Before
No validation errors

With validation errors

After
No validation errors

With validation errors

Thanks for catching that @ibolton336 , I had left a || there instead of &&. My first pass had all those isValid props defined as {!touched.foo || !errors.foo} and I changed it to {!(touched.foo && errors.foo)} so it would match the helperTextInvalid` expressions and be a bit more intuitive. Missed that one when making that switch.
Just amended and force-pushed to fix it.


BZ1306 — get_fsm crashes when riak_object value is not a binary

Fixes issue in riak_kv_get_fsm:update_stats/2 calling erlang:size/1 on a riak_object value which isn't a binary.
https://issues.basho.com/show_bug.cgi?id=1306

Rebasing against 1.0 and resubmitting.


(feat req) OpenMP acceleration in parallel_for

It would be great if, when CUDA is disabled, hemi::paralell_for ran on all available CPUs.
I tried adding a simple #pragma omp for myself, but for some reason OpenMP refused to cooperate...

I agree. I would like to look at this in the future if somebody doesn't get to it before me.

does this meet the requirement?
https://github.com/louietsai/hemi/commit/216f912d87f72f13ca8d7463ce21b275a634a452


Trivial Markdown fix to remove trailing #'s

This seems like a small (but important) contribution, so no Contribution License Agreement is required at this point. We will now review your pull request.
Thanks,
Microsoft Pull Request Bot

@Plasma : Thanks for your contribution to the Azure documentation! The author, @HeidiSteen, has been notified to review your proposed change.

Looks good to me -- @plasma thanks for the edits!
#sign-off


refactor: abstract InviteModal component so that it can be reused

Description
As the title, this component can be reused by both variants of the invite experiment
Other changes
N/A
Tested
Unit tests and manually
How others should test
N/A
Related issues
N/A
Backwards compatibility
Yes

Hey @MuckT since NA is mentioned in how other should test section ,we are skipping this PR
CC: @kathaypacific
Thanks.!


Remove version: REALiX.HWiNFO version 6.26

all package installer URLs are broken
Microsoft Reviewers: Open in CodeFlow

URL: https://www.sac.sk/download/utildiag/hwi_626.exe
Response Error: The remote server returned an error: (404) Not Found.
(Automated message - build 920)


Communicate NAT type via signalling messages

So that we can diagnose when things go wrong, or even tell the user that this pair of NAT types are incompatible.

Perhaps we can tell the user to try and setup port control on their router?

Another issue I think would have an outsized usability payoff. Thanks for adding this @mollyling!
May I humbly nominate this for P1?

fine by me

Sweet! Ok, added the P1 label. Not fully up-to-speed on the triage process so please make any further adjustments necessary.


Hammerspoon shortcuts for throwing windows to different monitors

I'm mostly interested in moving windows to another monitor and maximizing them. I can split screen them from there with my existing shortcuts. I guess that I am interested in a "move to other monitor and split screen" shortcut as well, but it's not necessary to close this issue.

Try ⌘⌥⏎ for plain maximize, then ⌘⌥Page Up and Down for next and previous monitors, respectively. Page Up and Down won't be as easy on the laptop keyboard, but that will be perfect because I don't foresee using the laptop keyboard with additional monitors!


Dual floppy doesn't appear to be supported

I have an Epson SD-700, one of the more common and better models of dual 3.5" & 5.25" dual floppy drives, and I can't seem to get the Greaseweazel to read from the 3.5" -- even though it appears to map as Drive B, the gw binary only wants to image Drive A (the 5.25"). I already had to make my own cable to fit the molex plug off of the gw power supply so it would be nice if this could be fixed :)

FWIW I'm currently using Greaseweazle with two drives (separate ones, not a dual drive). Are you sure that the SD-700 is configured for IBM PC and not Shugart pinout (have you tried --drive=0,1,2)?

I've got @axfelix's drive on my desk right now so I'll answer. --drive=1/B works to access it. I also found the manual that details the jumper to switch the drive configuration: http://ftp.epson.com/desktop/SD800.TXT
I can't get anything off the 3.5" drive, though Alex says the 5.25" works, which at this point I think sounds more like a hardware problem (or a cabling problem?) than a Greaseweazle problem.

Which Greaseweazle model is this? The F1 does not support drive bussing.

If the Greaseweazle does support multiple drives then this is almost certainly indeed a drive hardware issue. Coincidentally I also have one of these dual drives, and the 3.5-inch drive is dead on mine, too.

It does support multiple drives, and it's happening even after I rejumpered the drive so the 3.5" drive is A, so - yeah, I think the 3.5" drive is just dead here.

Not much more to say here then :)


Make the LoP follow GSM states

This PR builds on top of #980 but includes the commits of #975. You might want to read commit-per-commit or you'll also see the changes of the latter.

We also need to (maybe in another PR) disable the LoE and the GDD based on the GSM.

@amesgen The last commit breaks the LoP and I have yet to figure out why. I suppose the function updateConfig of the leaky bucket is broken in a way. But anyway, do you like this other approach better on principle?

Rebased on top of #1033; will now proceed to integrate into @tek's ChainSyncStates.

Done in 5807d4cb27d75ab5d0327812c8ff5551b2c899ae.

So, for the time, I am still very disappointed that I can't read the time in an STM transaction, but maybe we can go the m (STM m ()) route and that's fine. For the starting and stopping threads, we could instead always have a thread running (maybe started on demand the first time) that reads a TMVar to know whether it should actually do something or not. That would be a way to “pause” the thread when need be, and that could all be done from STM.
Alternatively, we could go for a lock mechanism that would be acquired and released in STM but where whatever happens in between could run in IOLike.

Which one do you prefer, @amesgen? Which one should I pursue?

I don't have a strong a priori opinion, might start with the STM approach and if that seems to brittle/invasive switch to using an explicit lock/MVar.

I am now working to get the tests to pass. I think I made good progress: things used to crash immediately and then now need hundreds of test cases before finding things. Still, not fully there yet. Hopefully it will be fine tomorrow!

As of the last commit, the implementation of the leaky bucket seems robust enough to pass the tests correctly. This involved quite a few changes, but I think the quality improved drastically with them. @amesgen WDYT of the current state of things?

FTR: This needs to be rebased

FTR: This needs to be rebased

Indeed; I will take care of this now. Must I understand from the absence of comments from you that you like this approach? Or have you just not reviewed the whole thing yet?

I ran out of time to fully finalize a review, but it definitely looks good :+1:

You might want to have another look at the changes to bracketChainSyncClient; they are now very different.

FTR: I was first confused as I thought you changed sth there in the most recent force pushes today; but I think you referred to what you changed last week, right?

Sorry, I just meant that bracketChainSyncClient had changed quite a lot on milestone 12 and that therefore this last rebase was more of a re-implementation. I thought you maybe wanted to check how it was done after the rebase.

I'm not exactly sure why the CI is red; the actions are describes as cancelled? There does not seem to be failed tests, though.

I'm not exactly sure why the CI is red; the actions are describes as cancelled? There does not seem to be failed tests, though.

I think some tests now have a deadlock; I can locally reproduce this for eg wait almost too long.

Rebased on top of more recent commits and added<PHONE_NUMBER>a1f4fa3ec4c4bf2604dcc3bccf4b45.


Modify Dockerfile to support different go files

solves #78 by introducing environment parameter RUNFILE to set a file to be run by go.

@z404 could you have a look at this please?


[SD-App] Please add M5Stack_FlappyBird_game

https://github.com/pcelli85/M5Stack_FlappyBird_game

pre-hook:
sed -i -e 's/#By Ponticelli Domenico/\/\/#By Ponticelli Domenico/g' $inofile

post-hook:
#

The app has been scheduled for rebuild

Compilation of this package failed, it has been labeled as invalid until the source of the problem is identified and addressed


pos_orders_history_return not working on offline

Online mode can't return more quantity what remaining, but if not connection to server(offline) you can return same order many time, please see video:
Part 1 mode online working fine

part 2 and part 3 mode offline, returned more quantity of available

Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

I will check it soon


N/A sorting

make N/A show "wired" or ethernet when wpa3/wpa2 not set.
set N/A

count total number?


DOC/REL: 1.7.0 (current) author list preview

This already includes the mailmap updates currently in #14110.
If you see a duplicated/incomplete/incorrectly formatted name, feel free to suggest the appropriate change or GitHub handle to ping.
I've been having to manually deleted a "user" named GitHub for the last several releases--not sure where that is getting injected from, but not a big deal anyway.
Authors

@endolith
Jelle Aalbers +
Adam +
Tania Allard +
Sven Baars +
Max Balandat +
baumgarc +
Christoph Baumgarten
Peter Bell
Lilian Besson
Robinson Besson +
Max Bolingbroke
Blair Bonnett +
Jordão Bragantini
Harm Buisman +
Evgeni Burovski
Matthias Bussonnier
Dominic C
CJ Carey
Ramón Casero +
charlotte12l +
Benjamin Curtice Corbett +
Falcon Dai +
Ian Dall +
Terry Davis
droussea2001 +
DWesl +
dwight200 +
Thomas J. Fan +
Joseph Fox-Rabinovitz
Max Frei +
Laura Gutierrez Funderburk +
gbonomib +
Matthias Geier +
Pradipta Ghosh +
GitHub
Ralf Gommers
Evan H +
h-vetinari
Matt Haberland
Anselm Hahn +
Alex Henrie
Piet Hessenius +
Elisha Hollander +
Stephan Hoyer
Tom Hu +
Kei Ishikawa +
Julien Jerphanion
Robert Kern
Shashank KS +
Peter Mahler Larsen
Eric Larson
Cheng H. Lee +
Gregory R. Lee
Jean-Benoist Leger +
lgfunderburk +
liam-o-marsh +
Xingyu Liu +
Alex Loftus +
Christian Lorentzen +
Cong Ma
Marc +
MarkPundurs +
Markus Löning +
Liam Marsh +
Nicholas McKibben
Jamie Morton
Andrew Nelson
Nikola Forró
Tor Nordam +
Olivier Gauthé +
Rohit Pandey +
Tirth Patel
paugier +
Alex H. Wagner, PhD +
Jeff Plourde +
Ilhan Polat
Vladyslav Rachek
Bharat Raghunathan
Recursing +
Tyler Reddy
Lucas Roberts
Gregor Robinson +
Pamphile Roy +
Atsushi Sakai
Benjamin Santos
Martin K. Scherer +
Thomas Schmelzer +
Daniel Scott +
Sebastian Wallkötter +
serge-sans-paille +
Namami Shanker +
Masashi Shibata +
Alexandre de Siqueira +
Albert Steppi +
Adam J. Stewart +
Kai Striega
Søren Fuglede Jørgensen
Mike Taves
Dan Temkin +
Robert Uhl
christos val +
Bas van Beek +
Ashutosh Varma +
Sebastiano Vigna
Aditya Vijaykumar
VNMabus
Arthur Volant +
Samuel Wallan
Stefan van der Walt
Warren Weckesser
Anreas Weh
Josh Wilson
Rory Yorke
Marc Zoeller +
zoj613 +
秋纫 +

A total of 117 people contributed to this release.
People with a "+" by their names contributed a patch for the first time.
This list of names is automatically generated, and may not be fully complete.
NOTE: Check this list manually! It is automatically generated and some names
may be missing.

Superseded by #14118 -- might as well just comment directly on the draft release notes PR at this point.


Any plans to add iv?

Specifically,
scipy.special.iv
scipy.special.ive
tensorflow_probability.math.bessel_iv_ratio
tensorflow_probability.math.log_bessel_ive

You could just lift the code from here.

Seems feasible, I will look into it!

Awesome!  I did about half the work of porting from Tensorflow to simple Jax here: https://github.com/NeilGirdhar/tjax/tree/bessel
Half the tests pass, the other half need some investigation.  I don't plan on continuing, but this might save you some time :smile:


Integrate Fabric's Resource Conditions API to Apoli

This PR integrates Fabric's Resource Conditions API to Apoli's power loader system. It also adds two new resource conditions: apoli:any_namespace_loaded and apoli:all_namespaces_loaded which can be used to check if any or all of the namespaces listed are loaded respectively. It only works when loading powers
Here's an example power that will only be registered if the eggolib namespace is loaded:
{
    "type": "apoli:action_on_callback",
    "entity_action_gained": {
        "type": "apoli:execute_command",
        "command": "say Hello world!"
    },
    "fabric:load_conditions": [
        {
            "condition": "apoli:any_namespace_loaded",
            "namespaces": [
                "eggolib"
            ]
        }
    ]
}

Please wait for my PR to this PR.


Mandarin speech editing test result bad

i did the Mandarin speech editing test
i download the model in the huggingface, but the result is too bad, the edited region is meaningless speech

Hi! Please check the version of espeak-ng and phonemizer first. See https://github.com/WangHelin1997/SSR-Speech/issues/5

已经改变了espaeak的版本为1.51还是不行，同样您能给出phonemize --version的结果吗，我的phonemize 版本是3.2.1

可以提供您的测试sample吗


cant access MPOS/public

Hi I have installed MPOS but when I try to access the MPOS/public page I get an unauthorized error

Setup issue not a MPOS problem.

I followed everything as described are you able to point me in the right direction?


Data model playground

In addition to the data model playground, I've also added the generic autofill component, and new api for retrieving schemas from server

Passed manual testing (we should really add CI soon), merging


Callback function - not triggering

I'm using latest version of Filterizr. But callback function which are funcation in documentation site, it is not working. Can you please help on this.
$(function() {
var f = $('.filtr-container').filterizr({
controlsSelector: '.fltr-controls',
 callbacks: {
      onFilteringStart: function() {
alert("filter started");
},
      onFilteringEnd: function() { },
      onShufflingStart: function() { },
      onShufflingEnd: function() { },
      onSortingStart: function() { },
      onSortingEnd: function() { }
   }
});

I have the same issue.
Inline callback functions within option array are not triggered but if you use the jquery method as mentioned in documents, it works perfectly.
Here is code:
filtrizr.on('filteringStart', function() {   alert("filter started"); })

As a workaround you can listen for the events in the element. In your example it would be e.g.:
f.on('filteringStart.Filterizr', function () {
  console.log('filteringStart');
});

Should now be fixed in v2


React native app - Upgrade fbsdk to version 9.0.0

i want to upgrade fbsdk from version 7.3.3 to 9.0.0 but i have an error when tried open app in the android device.
Envinroment:
"react-native": "0.64.4"
android emulator:
Android version: 13
Here is the error in log:

Should i clean cache in root project?


[Feature] Add Chainlist link and update header styles

#3899  👈
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @jnsdls and the rest of your teammates on  Graphite


Return an error instead of aborting on panics in C API

The C API will currently abort after catching a panic, for safety reasons. However, we shouldn't abort, but rather catch it and return an error code.

A tricky part to this is that the various FFI functions have different return types, so we can't just always return some HYPERE_INTERNAL_BUG code.
One way I considered to do this was to have some trait implemented for return types. However, it's slightly scary to me to execute some indirect function outside of the catch_unwind, since it could technically panic also. We could just promise to be careful not to do anything too fancy in them... Another issue is that sometimes the type returned has different meanings per function, and returning -1 or 0 might make sense in different functions.

A tricky part to this is that the various FFI functions have different return types, so we can't just always return some HYPERE_INTERNAL_BUG code.
One way I considered to do this was to have some trait implemented for return types. However, it's slightly scary to me to execute some indirect function outside of the catch_unwind, since it could technically panic also. We could just promise to be careful not to do anything too fancy in them... Another issue is that sometimes the type returned has different meanings per function, and returning -1 or 0 might make sense in different functions.

Wouldn't unsafe trait with contract requiring absence of panic solve this?

Wouldn't unsafe trait with contract requiring absence of panic solve this?

The trait would need to be unsafe, yes. However, there's a difference between "literally can't happen" and "I promise I won't". 🤷

The trait would need to be unsafe, yes. However, there's a difference between "literally can't happen" and "I promise I won't". 🤷

Here's a hack to at least force abort in case it goes wrong:
/// Calls the closure and guarantees to abort if the closure panics
pub fn force_abort_on_panic<R, F: FnOnce() ->R>(fun: F) -> R {
    let mut output = MaybeUninit::uninit();
    // drop impl of RunOnDrop is guaranteed to write the result into output
    // and any panic inside it would turn to abort, so uninitialized value can't be observed
    unsafe {
        drop(RunOnDrop(&mut output, ManuallyDrop::new(fun)));
        output.assume_init()
    }
}

struct RunOnDrop<'a, R, F: FnOnce() ->R>(&'a mut MaybeUninit<R>, ManuallyDrop<F>);

impl<'a, R, F: FnOnce() ->R> Drop for RunOnDrop<'a, R, F> {
    fn drop(&mut self) {
        // The struct is private, and the caller guarantees to initialize it
        // panic in drop always causes abort
        unsafe {
            *self.1 = MaybeUninit::new(self.1.take()());
        }
    }
}

Didn't try to compile it but I guess you get the idea.

Here's a hack to at least force abort in case it goes wrong:
/// Calls the closure and guarantees to abort if the closure panics
pub fn force_abort_on_panic<R, F: FnOnce() ->R>(fun: F) -> R {
    let mut output = MaybeUninit::uninit();
    // drop impl of RunOnDrop is guaranteed to write the result into output
    // and any panic inside it would turn to abort, so uninitialized value can't be observed
    unsafe {
        drop(RunOnDrop(&mut output, ManuallyDrop::new(fun)));
        output.assume_init()
    }
}

struct RunOnDrop<'a, R, F: FnOnce() ->R>(&'a mut MaybeUninit<R>, ManuallyDrop<F>);

impl<'a, R, F: FnOnce() ->R> Drop for RunOnDrop<'a, R, F> {
    fn drop(&mut self) {
        // The struct is private, and the caller guarantees to initialize it
        // panic in drop always causes abort
        unsafe {
            *self.1 = MaybeUninit::new(self.1.take()());
        }
    }
}

Didn't try to compile it but I guess you get the idea.

Seeing as we might want different error handlers and values for different functions I suggest we create a new ffi_fn! macro rule instead of using a trait. Something that will allows us to write ffi functions like this:
ffi_fn! {
    /// Create a new "empty" body.
    ///
    /// If not configured, this body acts as an empty payload.
    fn hyper_body_new() -> *mut hyper_body {
        Box::into_raw(Box::new(hyper_body(Body::empty())))
    } | std::ptr::null_mut() // Error value or closure here
}

There are no guarantees that whatever error closure is used won't panic, but at least it will be clearly visible by the function definition. As such, it adds clarity. We might need to repeat ourselves when using commonly used error handling closures, but any verbosity could be minimized by making such closures into constants, like so:
const DANGER_HANDLER: fn(ErrorType) -> usize = |e| { /* ... */ };

ffi_fn! {
    fn danger_func1() -> usize  {
        // ...
    } | DANGER_HANDLER
}

ffi_fn! {
    fn danger_func2() -> usize  {
        // ...
    } | DANGER_HANDLER
}

For error values (i.e. non-closures), the rule could look something like this:
($(#[$doc:meta])* fn $name:ident($($arg:ident: $arg_ty:ty),*) -> $ret:ty $body:block | $err:expr) => {
    $(#[$doc])*
    #[no_mangle]
    pub extern fn $name($($arg: $arg_ty),*) -> $ret {
        use std::panic::{self, AssertUnwindSafe};

        match panic::catch_unwind(AssertUnwindSafe(move || $body)) {
            Ok(v) => v,
            Err(_) => {
                eprintln!("panic unwind caught, returning default");
                $err
            }
        }
    }
};

@nylanderdev That actually sounds very good to me, thanks for the write-up! The trait way seemed to easy to return a value that is "bad" in one context and "good" in another.
Would you want to try adding that? At least to a few functions, we don't have to update all the functions in a single go...

@seanmonstar I've never actually contributed to or used hyper, so I'm not entirely sure which default values would be appropriate, but I could add some nulls for some pointer-returning ones, to set an example. If that's alright I'll do it for a couple of functions and someone can review it carefully just to be safe.

Yea, that's fine! Even just having the updated macro and an example of how it works, it'd be easier to audit each function and define a proper "error value" in later PRs. I assume any function that doesn't have it set will just continue to abort for now, and once we've got them all updated, we could remove that default to force all new functions to pick an error value.

Now we can easily catch panics on functions that don't return anything. A different issue is functions that return numbers. In a lot of cases, I imagine -1 would be a good value, however most functions seem to return unsigned values, so how do we want to handle that? We could retype some functions, such as those returning buffer length, so that we can return negative numbers too. It's just a matter of making sure we can still return as many different lengths as we could before and rewriting any header-files, lest we return some really big unsized integer by accident and cause massive memory access violations.

I suppose for hyper_buf_len we could actually just return 0, but point to null in hyper_buf_bytes, like we're already doing.


adding static_keynames support

Added support for static_keynames which lets you specify key names to ignore for jax transformations  #64
, all tests seem to be passing I've attached the test log (bash test.sh > test_out.txt)
test_out.txt
I'd love to have a cleaner way to get the static_keynames in the flatten func if anyone has ideas, this way there's no indication to users that static_keynames is something placed in there by chex, but calling it _static_keynames set off the tests for private access.
To demonstrate a use case with this I can dataclassify this:
@chex.dataclass(frozen=True)
class Foo:
    name: str
    data: jnp.ndarray

def noise(key, foo):
    rng, key = jax.random.split(key)
    noise = jax.random.normal(rng, foo.data.shape)
    return foo.data + noise

but when I try to JIT the noise function it will crash because the name in the dataclass is a str which is not a valid jax type.
If I do this instead:
@chex.dataclass(frozen=True, static_keynames=["name"])
class Foo:
    name: str
    data: jnp.ndarray

def noise(key, foo):
    rng, key = jax.random.split(key)
    noise = jax.random.normal(rng, foo.data.shape)
    return foo.data + noise

then it won't crash since it will make the name field static
now I can jit it just fine (but if I try to use a static field in a jax transformed function in a non-static way then it will crash)

Is there anything else I should do to get this change in?


Update test matrix. Drop Rails 4.1, add 5.1

@cbeer I think the 5.1 build will depend on https://github.com/cbeer/engine_cart/pull/76

@cbeer FYI, I fixed the capybara thing in rails/rails https://github.com/rails/rails/commit/943efa30f5475f51fe90df5f85703d191dbd7d6e

Coverage remained the same at 85.586% when pulling 0893ffb0e08d1740f19977686216bf36ef7281a9 on test_matrix into 322c8dc4a04f85792ded13dbab81de0a4ae922cc on master.


Fixes bug #46. recurse_over_arrays now preserves array

I changed the way recurse_over_array works to reuse the existing array instead of returning a new array(that was happening when using map).
That way we can rely on @table w/o problems. The only side effect of that is that ros.to_h was showing RecursiveOpenStruct object within the arrays, this was fixed inside deep_dup

is there any plan to integrate this @aetherknight  ?

Apologies for the slowness on this, but I'm not working with Ruby much anymore on a daily basis, so I have been slow about reviewing PRs and bugs.

The PR looks good. I will get it merged and try to release it over the weekend. Please comment on this again on Monday if I haven't released an update yet.

@aetherknight friendly reminder 😃

Thanks! It should be merged and deployed to rubygems now in version 1.0.2.


Find the last created record by created_at field, not primary key

The .last method by default finds the last record ordered by primary key.
The created_at column and a primary key column don't always come in the same order.
So, in order to find the last created record we should order explicitly by created_at column.
Since we only need to get the created_at value, there is no need to load and instantiate the whole record.
We can fetch just created at value using .pluck method.

We can't make this default, because users don't always have created_at column indexed.


Enable Broker Authentication usign SASL mechanism

Superseeds https://github.com/ansible-middleware/amq_streams/pull/35

@rmarting I've looked into this. The issue is that Connect can't connect to zk and the brokers:
[2023-07-06 07:45:32,750] ERROR Stopping due to error (org.apache.kafka.connect.cli.ConnectStandalone:126)
org.apache.kafka.connect.errors.ConnectException: Failed to connect to and describe Kafka cluster. Check worker's broker connection and security properties.
        at org.apache.kafka.connect.util.ConnectUtils.lookupKafkaClusterId(ConnectUtils.java:77)
        at org.apache.kafka.connect.util.ConnectUtils.lookupKafkaClusterId(ConnectUtils.java:58)
        at org.apache.kafka.connect.cli.ConnectStandalone.main(ConnectStandalone.java:82)
Caused by: java.util.concurrent.ExecutionException: org.apache.kafka.common.errors.IllegalSaslStateException: Unexpected handshake request with client mechanism SCRAM-SHA-512, enabled mechanisms are []
        at java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:395)
        at java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1999)
        at org.apache.kafka.common.internals.KafkaFutureImpl.get(KafkaFutureImpl.java:165)
        at org.apache.kafka.connect.util.ConnectUtils.lookupKafkaClusterId(ConnectUtils.java:71)
        ... 2 more
Caused by: org.apache.kafka.common.errors.IllegalSaslStateException: Unexpected handshake request with client mechanism SCRAM-SHA-512, enable

Do you have an idea on what's going wrong here?

I think, it is related to the authentication mechanism used by Kafka connect againts the Kafka Broker. If I am not wrong, that issue is because the Kafka connect is using sasl.mechanism=SCRAM-SHA-512 to establish the authentication, however the Kafka broker is not defined with that value.
Please, review the way you are configuring the Kafka broker, and then Kafka connect must use the same configuration.
If the property amq_streams_connect_broker_auth_scram_enabled is enabled, then Kafka connect will use that mechanism to connect to the user, otherwise PLAIN will be used.
Can you share your playbook to deploy the kafka broker (with authentication), and the kafka connect cluster?

@rmarting I'm testing your PR ! So it's your setup :)
It's running the playbooks/playbook.yml and it's using default from the two other roles (zk and brokers) to setup the rest of the cluster.

Ok! Let me review my original PR with the default playbook, as it seems that the Kafka connect is failing the authentication ... so maybe there is something wrong! Thanks for the heads up!

Last question, could you share here the content of the connect-standalone.properties of the Kafka connect cluster deployed? thanks

It's the one based on the templates in the collection: roles/amq_streams_connect/templates/connect-standalone.properties.j2
I'm running the PR locally so I can post here the resulting file.

And here is the resulting conf:
# Ansible managed

# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# These are defaults. This file just demonstrates how to override some settings.
bootstrap.servers=localhost:9092

security.protocol=SASL_PLAINTEXT
sasl.mechanism=SCRAM-SHA-512
sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required \
                 username=broker \
                 password=PLEASE_CHANGEME_IAMNOTGOOD_FOR_PRODUCTION;

# The converters specify the format of data in Kafka and how to translate it into Connect data. Every Connect user will
# need to configure these based on the format they want their data in when loaded from or stored into Kafka
key.converter=org.apache.kafka.connect.json.JsonConverter
value.converter=org.apache.kafka.connect.json.JsonConverter
# Converter-specific settings can be passed in by prefixing the Converter's setting with the converter we want to apply
# it to
key.converter.schemas.enable=true
value.converter.schemas.enable=true

offset.storage.file.filename=/tmp/connect.offsets
# Flush much faster than normal, which is useful for testing/debugging
offset.flush.interval.ms=10000

# Set to a list of filesystem paths separated by commas (,) to enable class loading isolation for plugins
# (connectors, converters, transformations). The list should consist of top level directories that include
# any combination of:
# a) directories immediately containing jars with plugins and their dependencies
# b) uber-jars with plugins and their dependencies
# c) directories immediately containing the package directory structure of classes of plugins and their dependencies
# Note: symlinks will be followed to discover dependencies or plugins.
# Examples:
# plugin.path=/usr/local/share/java,/usr/local/share/kafka/plugins,/opt/connectors,
plugin.path=/opt/kafka_2.13-3.3.2/libs/connect-file-3.3.2.jar

By default the variable amq_streams_connect_broker_auth_enabled is false, so the following block should not be included in that file:
security.protocol=SASL_PLAINTEXT
sasl.mechanism=SCRAM-SHA-512
sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required \
                 username=broker \
                 password=PLEASE_CHANGEME_IAMNOTGOOD_FOR_PRODUCTION;

So, I think that the issue is because the if clause is not well declare to skip that section. I tested with the following commit in my original PR for your review and test with this branch.
https://github.com/ansible-middleware/amq_streams/pull/35/commits/e946b68a1b0bfa7b908bb97b699d861e6fca771b
The file must not include anything related to authentication, as the default values are false.

Thanks @rpelisse for your review, and extended contributions to close this amazing PR. It is a huge step in the collection to cover more complex scenarios.

@rmarting, @rpelisse: Good job!
Linked to:

https://github.com/scram-sasl/info/issues/1
https://github.com/ansible-middleware/amq_streams/pull/35
https://github.com/ansible-middleware/amq_streams/pull/43


Preserve order from CP when saving entries

This goes some of the way to resolving issue #43 in that it preserves the order, however if we're using incrementing IDs then ordering will fail once IDs hit double digits as it will treat it as string ordering rather than numeric ordering (so 1, 10, 2, 3 etc).
I'm not sure how to resolve this in the JSON field with getting into specific code for specific database types.
The best option might be to make an order column in the database for handling this?

Update: I've tapped into laravel core builder methods to cast the order a real field which seems to do the trick.

Hi , i tried this pr again and i have time format issue while reordering , is it something to do with my mysql configuration ?

i'll try to supply a sample tonight but i temporarily eleminated the problem like this in the CollectionRepository

That shouldnt be necessary as updated_at should come from the laravel model timestamps.

@enespolat24 can you create a sample repository so I can look into this further?

hi , sorry for the latency

@ryanmitchell I tested this with one of my live projects. We use mariaDb instead of mysql. Can we use DOUBLE PRECISION instead of REAL since mariadb doesn't support REALdatatype ?

What’s the support for that on SQLite, Postgres and MySQL?On 28 Sep 2022, at 15:04, Enes Polat @.***> wrote:
@ryanmitchell I tested this with one of my live projects. We use mariaDb instead of mysql. Can we use DOUBLE PRECISION instead of REAL since mariadb doesn't support REALdatatype ?
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you were mentioned.Message ID: @.***>

I checked their docs. they all support DOUBLE PRECISION but  in the Postgres there's a storage size difference. REAL uses 4 byte but DOUBLE PRECISION uses 8 byte

Ok. I ran some quick tests and it seems ok to switch to that.

On 28 Sep 2022, at 16:02, Enes Polat @.***> wrote:
I checked their docs. they all support DOUBLE PRECISION but in the Postgres there's a storage size difference. REAL uses 4 byte but DOUBLE PRECISION uses 8 byte
—
Reply to this email directly, view it on GitHub https://github.com/statamic/eloquent-driver/pull/57#issuecomment-1261047140, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAAMVO66USZ3QH2T5QUWKYLWARMY3ANCNFSM6AAAAAAQFE2MXA.
You are receiving this because you were mentioned.

@jasonvarga would be great to get this merged as ordering isn't working in the CP at the moment.

@ryanmitchell What's the reason for using the orderByRaw and CAST stuff? Is it because you don't want to add an order column?
I'm using MariaDB 10.5.8 and it doesn't seem to like that syntax. I get the following error when I visit the reorder entries screen in the CP.
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'PRECISION) ASC' at line 1

select
  *
from
  `entries`
where
  `collection` = 'more_pages'
order by
  CAST(
    json_unquote(json_extract(`data`, '$."order"')) AS DOUBLE PRECISION
  ) ASC
limit
  50 offset 0

@jasonvarga works like a charm with mysql but i tried this with our Mariadb 10.6.3 and got same error as you do. the walk around i did was changing DOUBLE PRECISION as DOUBLE. Still not optimum but does the job. with this temporary solution i need to click save button more than once

Yeah I was trying to avoid adding a column but I guess in hindsight it’s just making things more complicated. I’ll refactor it to use a nullable order columnOn 26 Oct 2022, at 22:06, Jason Varga @.***> wrote:
@ryanmitchell What's the reason for using the orderByRaw and CAST stuff? Is it because you don't want to add an order column?
I'm using MariaDB 10.5.8 and it doesn't seem to like that syntax. I get the following error when I visit the reorder entries screen in the CP.
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'PRECISION) ASC' at line 1
select
*
from
entries
where
collection = 'more_pages'
order by
CAST(
json_unquote(json_extract(data, '$."order"')) AS DOUBLE PRECISION
) ASC
limit
50 offset 0
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you were mentioned.Message ID: @.***>

Two things:

Why are you calling the column sort_order instead of just order?
How can we get that migration going? It's just a stub, how are people supposed to use it once they upgrade?

Order is a reserved word in some db engines. I’ve always avoided using it as a result.
Yeah the migrations annoyed me too - I don’t like the approach of publishing then every time but others contributing to the big PR wanted it so I gave in.
To me it should automatically publish but I think we are stuck now?

Order is a reserved word in some db engines. I’ve always avoided using it as a result.

I would think as long as its quoted appropriately it'll be fine with it being a column name.
ie. select `title`,`order` from `entries`  as opposed to just select title,order from entries
Laravel adds the quotes.
As for publishing the migrations.... even if you publish the migrations again, it publishes all of them, not just new ones. 🤔

Ok I’ll change it over later on.
Yeah I should have really pushed back on the migrations, I knew it wasn’t the right approach - sorry about that.
do we need to do something like the upgrade to logic in core that you use for adding permissions etc?

Thanks. We'll figure out the migration side of it from here. Leave it with us.
Much appreciated!

Sorry that ive left you with a mess to clean up!


ytt provides a semver library

Describe the problem/challenge you have
I use ytt to package up software to be shipped and run by other people. That means that the people that run the software run it in a variety of environments and for some feature flags it's intuitive to have the operator declare a version of software that they're using, in order to tune the installation to the versions they use. For example, running on different versions of kubernetes (1.23.x vs 1.24.x) might lead you to change the kubernetes resources you create, or the parameters you provide to those kubernetes resources.
Describe the solution you'd like
A semver library as part of the standard library for ytt. It could even probably be a thin wrapper over something like Masterminds/semver
Anything else you would like to add:
I thought about writing this library in starlark directly, but I find it difficult to distribute ytt libraries (without inventing something like NPM...)

Vote on this request
This is an invitation to the community to vote on issues, to help us prioritize our backlog. Use the "smiley face" up to the right of this comment to vote.
👍 "I would like to see this addressed as soon as possible"
👎 "There are other more important things to focus on right now"
We are also happy to receive and review Pull Requests if you want to help working on this issue.

@mstergianis there's a proposal for `@ytt:semver: https://github.com/vmware-tanzu/carvel/pull/539


Is there a way to animate the fill in a SVG path ?

I have the following SVG animation , i looked up the anime.js documentation and there are examples on how to animate the strokeDashoffset , but how do i animate the fill in a svg path ? is there a way around this ?
Example fiddle here

The fill animation it's working for me, but if you have a css class with fill property the will not work. This is normal? They shouldn't overwrite the css?
With class:
https://jsfiddle.net/lincolnlemos/nhkggvut/3/

In case anyone else comes across this problem:
When the starting property is fill="none", anime generates an invalid color and the fill will appear to be black. The solution is to provide an initial color value:
      await anime({
        targets: '#logo > svg > g > g > g > g',
        fill: ['rgba(0,0,0,0)', '#ff3d00'],
        easing: 'easeInOutSine',
        duration: 1000,
      }).finished;

how can i reverse it?
i mean when i click i want the color to change, and if i click again i want the color to change to its original color


Move "Edit layer" to the first option of layer's contextual menu

Context
While doing Usability tests, we've identified a common user behavior of accessing a layer through the "Edit layer" option of the contextual menu. We just want to streamline that flow by moving the action to the top of the list.
Current Result

Expected result
Edit layer will appear on top of Collapse.

In production! :rocket:

As of today:
Previous version: From 20k users, 17% of interaction.
Current version: From 10k users, 13% of interaction.


Error in Scale function

#3 I created a pull request to fix an issue with scale when size is specified.  I was getting an error in Zsh and there are a few special characters in there.  It seems best to wrap it in quotes.

Hi,
I should mention that I am not developing this project any further. I have merged your request and I'll publish it, but I've gone other ways. I need to clean up a little some time, and mark my dicontinued projects somehow.
I don't believe that streaming-approach is the right thing to do anymore with video-scaling. It may cause a problems when there are network errors. Error handling is more difficult with streaming.
In my "new" project (https://gachou.org), I've reverted to storing the video on disk an then calling ffmpeg directly.

Besides, the npm-packages exiftool-vendored, ffmpeg-static and ffprobe-static are much easier to use than what I used in this package.

I was actually using this to stream files on disk to another location in
multiple formats which it does quite well.  I also found how to save files
in hls as well which is useful in Safari.  I agree streaming files over the
network is a bad idea.
On Thu, Oct 4, 2018, 4:41 PM Nils Knappmeier<EMAIL_ADDRESS>wrote:

Besides, the npm-packages exiftool-vendored, ffmpeg-static and
ffprobe-static are much easier to use than what I used in this package.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/nknapp/html5-media-converter/issues/4#issuecomment-427161824,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AF9vGDc1_DJP0ATRuiJSs5lF-XrobTW8ks5uhnJfgaJpZM4XIEmP
.


Update init.py

Update of the code for support  to alternative server
fix bug in subtract_from_days
Throwing an exception when the serial cannot be posted to the server, so as not to generate invalid serials
Customization of serial validity time and number of activations

Thank you! The biggest problem has been so far the inconstant server (and API changes) from transfer. On the weekend, I will check your code and merge it. Is there anything I need to know?

I also had instability problems with the transfer. I looked for several alternative servers, but this also changed compatibility with client-side. And since my software was already serving several users and needed to maintain compatibility, I needed to find a server that met this requeriment.
https://oshi.at/ work well for me, I've been testing it, and I haven't had any issues, except for one day when its certificate was expired. It was still possible to use it over HTTP, but that would require changes on the client side, in addition to the security issues it would cause. On that day, I used Transfer, which was working fine.
To using Transfer.sh again, just use "oshi=False". I put two functions to upload, uplodad_file_to_oshi and uplodad_file_to_transfer to maintain compatibility with both. Furthermore, I added "raise_for_status()" when request it returns a status code other than 200, in order avoid generate invalid keys.
Both server and client codes will remain compatible with old codes, as the new parameters I added in the code are optional. I tested here using the standard version of client-side and it worked perfectly.
in the future, I will further improve this code. One cool thing about oshi.at is that it also generates an admin link when a file is posted. The link encrypted in the serial is the user link, which allows only one download. The admin link, for example, allows deleting a link, which would be useful in a future version of the code to revoke a license that I want to cancel. This is one of the issues with this license manager because sometimes, I sell a 1-year subscription to the client, but they start using it and give up within 7 days. I refund their money, but the subscription remains valid for 1 year. Soon, I will implement this in the software to be able to revoke the license within 30 days
At last, I found an issue that may occur in the software. Since the library's name (jerryrigserialver) is visible to the software user, and it is open source, a user can simply replace this code with a modified version that always returns that the signature is valid.
Some simple solutions I found to address this:

Include a couple of vital functions from your program in the library file to create coupling and make the program not work correctly with the tampered version.
Return a hash of jerryrigserialver to be checked during the check_serial call.

I also achieved source code security using these settings in pyarmor:
pyarmor gen --enable themida --assert-import --assert-call init.py

Nice!! Thank you very much for your help! Yes, the code is 100 % MIT, and always will be. Before I wrote this script, I had been looking for a free / open source license system, but there was nothing (really nothing!) at all. I have read about pyarmor, but haven't gotten into it. The problem is that an experienced programmer can bypass any license protection. Not event the big techs can do anything about it. That's why they are selling software (e.g. Windows) nowadays as a service. I don't know what you are selling, but there are probably no more than 0.1 percent of your users that know how to bypass your license system. So I wouldn't worry much about that. A bigger problem is that the license is still valid after the cancelation of subscription.


Failure to build on powerpc64le

Hi,
When I try to gem install memcache on powerpc64le, I get the following failure:
Building native extensions.  This could take a while...
ERROR:  Error installing memcache:
        ERROR: Failed to build gem native extension.

    /usr/local/rvm/rubies/ruby-2.2.2/bin/ruby -r ./siteconf20160229-63-6g2jvf.rb extconf.rb
Building libmemcached.
tar xzf libmemcached-1.0.16.tar.gz 2>&1
./configure --prefix=/usr/local/rvm/gems/ruby-2.2.2/gems/memcache-1.5.1/ext --without-memcached --disable-dependency-tracking  2>&1
checking build system type... build-aux/config.guess: unable to guess system type

This script, last modified 2012-06-10, has failed to recognize
the operating system you are using. It is advised that you
download the most up to date version of the config scripts from

  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
and
  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD

If the version you run (build-aux/config.guess) is already up to date, please
send the following data and any information you think might be
pertinent to<EMAIL_ADDRESS>in order to provide the needed
information to handle your system.

config.guess timestamp = 2012-06-10

uname -m = ppc64le
uname -r = 4.2.0-30-generic
uname -s = Linux
uname -v = #35-Ubuntu SMP Fri Feb 19 13:50:54 UTC 2016

/usr/bin/uname -p =
/bin/uname -X     =

hostinfo               =
/bin/universe          =
/usr/bin/arch -k       =
/bin/arch              =
/usr/bin/oslevel       =
/usr/convex/getsysinfo =

UNAME_MACHINE = ppc64le
UNAME_RELEASE = 4.2.0-30-generic
UNAME_SYSTEM  = Linux
UNAME_VERSION = #35-Ubuntu SMP Fri Feb 19 13:50:54 UTC 2016
configure: error: cannot guess build type; you must specify one

I'm pretty sure this is due to the version of libmemcached that you bundle: I'm just checking to see if installing a system version of libmemcached-dev is sufficient to work around this.

So I've done some further checks: because you're gem doesn't seem to let the system version of libmemcached override the bundled version, you can fix this by bumping the version of libmemcached you bundle to 1.0.18.
I can send a pull request to this effect if you like.


chore: upgrade nx to be able to use @nx/eslint-plugin with the<EMAIL_ADDRESS>

https://github.com/nrwl/nx/issues/28414


fix(scripts): dream.py typo

Stumbled on this while playing with blue, and thought it looked like a typo.
Introduced in 239f41f https://github.com/lstein/stable-diffusion/blob/239f41f3e0027900ee73196ac89850a9d172c0e9/scripts/dream.py#L274
Signed-off-by: Ben Alkov<EMAIL_ADDRESS>

Grid is still not working with this fix:
>>   3 image(s) generated in 27.66s
Traceback (most recent call last):
  File "/Users/spencer/Documents/Code/stable-diffusion/scripts/dream.py", line 355, in <module>
    main()
  File "/Users/spencer/Documents/Code/stable-diffusion/scripts/dream.py", line 95, in main
    main_loop(gen, opt, infile)
  File "/Users/spencer/Documents/Code/stable-diffusion/scripts/dream.py", line 272, in main_loop
    metadata = metadata_dumps(
TypeError: metadata_dumps() got an unexpected keyword argument 'weights'

Changing the call of metadata_dumps() here:
https://github.com/tildebyte/stable-diffusion/blob/c19a5fe08f24c7f20fb89c6c202fadf52d9f135f/scripts/dream.py#L272-L277
to this:
opt.weights = gen.weights
metadata = metadata_dumps(
    opt,
    seeds      = grid_seeds,
    model_hash = gen.model_hash
    )

seems to work.


Cache the compiled templates for FieldBlock and StreamBlock form fields

As per https://github.com/torchbox/wagtail/issues/3062#issuecomment-253264260 - cache the compiled templates for StreamBlock and FieldBlock after first use, so that they don't have to be recompiled every time. This leads to a ~15% performance improvement on edit pages with complex StreamFields.

Wouldn't this be super annoying if you're editing one of these templates? This would force you to restart the server each time you've edited a template.
Django ships a template loader that caches compiled templates (so not the rendered result of a template, but the compiled node tree) https://docs.djangoproject.com/en/1.10/ref/templates/api/#django.template.loaders.cached.Loader
This loader should be enabled in production on any serious Django deploy anyway (and will be by default (in some cases) in a future Django version: https://code.djangoproject.com/ticket/25788)

@jaap3 I think it'll be very rare for anyone to edit these templates, and only if they're hacking on Wagtail core. (If a user wants to customise it for their site, they're more likely to subclass FieldBlock / StreamBlock instead.) That's a fair point about the cached template loader, though - there's no point in optimising here if Django already has an optimisation for the same thing. I'll test the performance of this PR against the cached template loader, and close this PR if there's no meaningful difference.

With the cached template loader enabled, there's a significant performance improvement, and no visible difference with or without this patch -> closing.

Should a note about using the cached template loader be added to the Performance section of the Wagtail docs?

@jaap3 Sure, sounds like a good idea!


provision vm from clone leads to panic interface {} is nil, not string

Hello,
I'm trying to provision a virtual machine from a template in proxmox (6.4-15) and I get this error:
╷
│ Error: Plugin did not respond
│
│   with proxmox_vm_qemu.proxmox_vm["vm_name"],
│   on main.tf line 87, in resource "proxmox_vm_qemu" "proxmox_vm":
│   87: resource "proxmox_vm_qemu" "proxmox_vm" {
│
│ The plugin encountered an error, and failed to respond to the plugin.(*GRPCProvider).ApplyResourceChange call. The plugin logs may contain more details.
╵

Stack trace from the terraform-provider-proxmox_v2.9.14 plugin:

panic: interface conversion: interface {} is nil, not string

goroutine 41 [running]:
github.com/Telmate/proxmox-api-go/proxmox.NewConfigQemuFromApi(0xc0000c6718, 0xc9d509?)
	github.com/Telmate/proxmox-api-go@v0.0.0-20230319185744-e7cde7198cdf/proxmox/config_qemu.go:789 +0x4310
github.com/Telmate/terraform-provider-proxmox/proxmox.resourceVmQemuCreate(0xc000107880, {0xb66f60?, 0xc000264050})
	github.com/Telmate/terraform-provider-proxmox/proxmox/resource_vm_qemu.go:972 +0x2c4d
github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema.(*Resource).create(0xdd7840?, {0xdd7840?, 0xc000445ec0?}, 0xd?, {0xb66f60?, 0xc000264050?})
	github.com/hashicorp/terraform-plugin-sdk/v2@v2.25.0/helper/schema/resource.go:695 +0x178
github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema.(*Resource).Apply(0xc0002f67e0, {0xdd7840, 0xc000445ec0}, 0xc0001f7380, 0xc000107700, {0xb66f60, 0xc000264050})
	github.com/hashicorp/terraform-plugin-sdk/v2@v2.25.0/helper/schema/resource.go:837 +0xa85
github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema.(*GRPCProviderServer).ApplyResourceChange(0xc00038eb70, {0xdd7840?, 0xc000445d10?}, 0xc0002866e0)
	github.com/hashicorp/terraform-plugin-sdk/v2@v2.25.0/helper/schema/grpc_provider.go:1021 +0xe8d
github.com/hashicorp/terraform-plugin-go/tfprotov5/tf5server.(*server).ApplyResourceChange(0xc000000460, {0xdd7840?, 0xc0004452c0?}, 0xc00010bc00)
	github.com/hashicorp/terraform-plugin-go@v0.14.3/tfprotov5/tf5server/server.go:818 +0x574
github.com/hashicorp/terraform-plugin-go/tfprotov5/internal/tfplugin5._Provider_ApplyResourceChange_Handler({0xc6bc20?, 0xc000000460}, {0xdd7840, 0xc0004452c0}, 0xc00010bb90, 0x0)
	github.com/hashicorp/terraform-plugin-go@v0.14.3/tfprotov5/internal/tfplugin5/tfplugin5_grpc.pb.go:385 +0x170
google.golang.org/grpc.(*Server).processUnaryRPC(0xc0003a8000, {0xddb420, 0xc00023e1a0}, 0xc0002a8ea0, 0xc0003aacf0, 0x128f7a0, 0x0)
	google.golang.org/grpc@v1.53.0/server.go:1336 +0xd23
google.golang.org/grpc.(*Server).handleStream(0xc0003a8000, {0xddb420, 0xc00023e1a0}, 0xc0002a8ea0, 0x0)
	google.golang.org/grpc@v1.53.0/server.go:1704 +0xa2f
google.golang.org/grpc.(*Server).serveStreams.func1.2()
	google.golang.org/grpc@v1.53.0/server.go:965 +0x98
created by google.golang.org/grpc.(*Server).serveStreams.func1
	google.golang.org/grpc@v1.53.0/server.go:963 +0x28a

Error: The terraform-provider-proxmox_v2.9.14 plugin crashed!

This is always indicative of a bug within the plugin. It would be immensely
helpful if you could report the crash with the plugin's maintainers so that it
can be fixed. The output above should help diagnose the issue.

I'm using terraform version 1.5.3
This is what the .tf config file that I'm running:
terraform {
	required_providers {
		proxmox = {
			source = "Telmate/proxmox"
			version = "2.9.14"
		}
  	}
}

provider "proxmox" {
	pm_parallel = 1
	pm_tls_insecure = false
	pm_user = "root@pam"
	pm_log_enable = true
	pm_log_file = "terraform-plugin-proxmox.log"
	pm_log_levels = {
		 _default = "debug"
		 _capturelog = ""
	}
}

# In Terraform 0.12 and later, the templatefile function offers a built-in mechanism for rendering a template from a file. Use that instead of `template_file` data source.

# Source the cloud-init config file
data "template_cloudinit_config" "work" {
	for_each = var.instances
	# split in parts - 1st is cloud-init cfg as such; from 2nd onwards, shell scripts.
	# default gzip is true + base64 encoded (for proxmox don't encode or zip the cloud-init)
	gzip = false
	base64_encode = false
	part {
		filename = "cloud-init.cfg"
		content_type = "text/cloud-config"
		content = templatefile("${path.module}/files/cloud_init_ub2204.tpl", {
			root_ssh_key = "${each.value["ssh_key"]}"
			example-cert = file("${path.module}/files/example-cert.yaml")
			haproxy-deploy = file("${path.module}/files/haproxy-deploy.yaml")
			haproxy-ingress = file("${path.module}/files/haproxy-ingress.yaml")
			dockerconfigjson = file("${path.module}/files/dockerconfigjson")
  			tf_hostname = each.key
			dns_server = var.dns_server
			ip_address = each.value["ip_address"]
		})
	}
	part {
		filename = "kube-init.sh"
		content_type = "text/x-shellscript"
		content = templatefile("${path.module}/files/kube-init.sh", {
  			tf_hostname = each.key
			dns_server = var.dns_server
		})
	}
}

# Create a local copy of the template to transfer to Proxmox. `rendered` refers to interpreting the template.
resource "local_file" "cloud_init_ub2204" {
  	for_each = var.instances
	content = data.template_cloudinit_config.work["${each.key}"].rendered
	filename = "${path.module}/files/rendered-templates/cloud_init_ub2204-${each.key}.yaml"
	file_permission = 0640
}

# Transfer cloud-init to proxmox snippets (connect to the hypervisor)
resource "null_resource" "transfer_cloud_init" {
# trick using triggers and build_number to make the null_resource to execute each time and not store its state
	for_each = var.instances
	triggers = {
		build_number = "${timestamp()}"
	}
	connection {
		type = "ssh"
		user = "root"
		private_key = file("~/.ssh/id_ed25519")
		agent = false
		host = "pve1.example.com"
		port = 7800
	}
	provisioner "file" {
		# if you use template:
		# source = local_file.cloud_init_ub2204
		source = "files/rendered-templates/cloud_init_ub2204-${each.key}.yaml"
		destination = "/mnt/pve/cloudinit/snippets/cloud_init_ub2204-${each.key}.yaml"
	}
}

# Create the virtual machine
resource "proxmox_vm_qemu" "proxmox_vm" {
	for_each = var.instances

# cloud-init config needs to exist before continuing
	depends_on = [
		null_resource.transfer_cloud_init
	]
	name = "${each.key}-work"
	target_node = var.targetnode

# provision from clone:
	clone = "work.example.internal"
	full_clone = "true"
	os_type = "cloud-init"

# cloud-init options:
	cicustom = "user=cloudinit:snippets/cloud_init_ub2204-${each.key}.yaml"
	cloudinit_cdrom_storage = "cloudinit"
	ipconfig0 = "ip=${each.value["ip_address"]}/24,gw=${var.gw}"
	nameserver = "<IP_ADDRESS>"
	searchdomain = "example.com"

# assign resources and set general options:
	cores = "4"
	sockets = "1"
	cpu = "kvm64"
	memory = "12288"
	scsihw = "virtio-scsi-pci"
	bootdisk = "scsi0"
	boot = "c"
	force_create = "false"
	bios = "seabios"
	agent = 1
	numa = true
	hotplug = "network,disk,memory,cpu"
	balloon = "0"
	disk {
	  size = "100G"
	  type = "scsi"
	  storage = "local-lvm"
	  cache = "writeback"
	  ssd = "0"
	}
	network {
	  model = "virtio"
	  bridge = "vmbr1"
	}
	serial {
	  id = "0"
	  type = "socket"
	}

# Ignore changes to the network. MAC address is generated on every apply, causing
# TF to think this needs to be rebuilt on every apply
	lifecycle {
		ignore_changes = [
			network
	   	]
	}
}

I'm not sure how to debug it further, because it isn't saying exactly what is trying to convert into string.

With the same configuration applied on Proxmox 7.4-3 I get:
╷
│ Error: scsi0 - cloud-init drive is already attached at 'ide0'
│
│   with proxmox_vm_qemu.proxmox_vm["matejamaric"],
│   on main.tf line 87, in resource "proxmox_vm_qemu" "proxmox_vm":
│   87: resource "proxmox_vm_qemu" "proxmox_vm" {

Which I can't understand, really. I wonder if the same thing happens in the background on Proxmox 6.4-15, but the API is not smart enough to report it.

A little bit a correction:
-scsi0 local-lvm:vm-108-cloudinit

This is the parameter for scsi0 for some weird reason (the ID of the VM here is 108).
In a much older configuration (from more than a year ago), I have:
-scsi0 local-lvm:vm-121-disk-0

This is the correct one, because scsi0 is where the main disk resides. I don't understand how the terraform configuration translates into trying to attach the cloud-init drive to scsi0.

I've just switched to version 2.9.11 which also has a similar error:
()
update VM 108: -cdrom cloudinit:cloudinit
TASK ERROR: ide2 - cloud-init drive is already attached at 'ide0'

The huge difference though is that it actually works. The error is ignored and it goes on to configure everything and the provisioning is finished.
I tried several version, but 2.9.12 wasn't available in the terraform registry (see https://github.com/Telmate/terraform-provider-proxmox/issues/815), so I ended up using 2.9.11 for now.


Questions about DDXPlus

Hi, thanks for the outstanding work on this project!
I am currently working on scaling the DDXPlus dataset within StreamBench for validation. However, I am encountering some difficulties in converting the DDXPlus dataset, which is originally in raw csv format, to the format required by StreamBench.
Could you please provide some guidance or the script on how to perform this conversion? Thank you in advance for your assistance!

Hello, @guosyjlu. Can you specify the issue you encounter by providing an actual example?
By the way, you may lookup our HuggingFace page for the desired format of DDXPlus: https://huggingface.co/datasets/appier-ai-research/StreamBench/viewer/ddxplus

Yeah, I mean the dataset in the original DDXPlus is in csv format, like:

{
"AGE": 18,
"DIFFERENTIAL_DIAGNOSIS": [["Bronchitis", 0.19171203430383882], ["Pneumonia", 0.17579340398940366], ["URTI", 0.1607809719801254], ["Bronchiectasis", 0.12429044460990353], ["Tuberculosis", 0.11367177304035844], ["Influenza", 0.11057936110639896], ["HIV (initial infection)", 0.07333003867293564], ["Chagas", 0.04984197229703562]],
"SEX": "M",
"PATHOLOGY": "URTI",
"EVIDENCES": ["E_48", "E_50", "E_53", "E_54_@V_161", "E_54@V_183", "E_55@V_89", "E_55@V_108", "E_55@V_167", "E_56@4", "E_57@V_123", "E_58@3", "E_59@3", "E_77", "E_79", "E_91", "E_97", "E_201", "E_204@_V_10", "E_222"],
"INITIAL_EVIDENCE": "E_91"
}

How to convert the original dataset of DDXPlus to the format in StreamBench as below?

Sex: Female, Age: 53 - I have severe Chronic Obstructive Pulmonary Disease (COPD). - I am experiencing shortness of breath or difficulty breathing in a significant way. - I have had one or several flare ups of chronic obstructive pulmonary disease (COPD) in the past year. - I have a cough that produces colored or more abundant sputum than usual. - I smoke cigarettes. - I have been diagnosed with gastroesophageal reflux. - I work in agriculture. - I have a cough.

Hi @guosyjlu , I see! You may refer to my other repo https://github.com/Brian-Ckwu/dr-cot and use the preprocessing script. Feel free to let me know if you still encounter other issues.

Thanks you so much for your help!