[SPARK-40045][SQL]Optimize the order of filtering predicates

Why are the changes needed?
select id, data FROM testcat.ns1.ns2.table
where id =2
and md5(data) = '8cde774d6f7333752ed72cacddb05126'
and trim(data) = 'a'

Based on the SQL, we currently get the filters in the following order:
// `(md5(cast(data#23 as binary)) = 8cde774d6f7333752ed72cacddb05126)) AND (trim(data#23, None) = a))` comes before `(id#22L = 2)`
== Physical Plan ==
 *(1) Project [id#22L, data#23]
 +- *(1) Filter ((((isnotnull(data#23) AND isnotnull(id#22L)) AND (md5(cast(data#23 as binary)) = 8cde774d6f7333752ed72cacddb05126)) AND (trim(data#23, None) = a)) AND (id#22L = 2))
    +- BatchScan[id#22L, data#23] class org.apache.spark.sql.connector.InMemoryTable$InMemoryBatchScan

In this predicate order, all data needs to participate in the evaluation, even if some data does not meet the later filtering criteria and it may causes spark tasks to execute slowly.
So i think that filtering predicates that need to be evaluated should automatically be placed to the far right to avoid data that does not meet the criteria being evaluated.
As shown below:
//  `(id#22L = 2)` comes before `(md5(cast(data#23 as binary)) = 8cde774d6f7333752ed72cacddb05126)) AND (trim(data#23, None) = a))`
== Physical Plan ==
*(1) Project [id#22L, data#23]
 +- *(1) Filter ((((isnotnull(data#23) AND isnotnull(id#22L)) AND (id#22L = 2) AND (md5(cast(data#23 as binary)) = 8cde774d6f7333752ed72cacddb05126)) AND (trim(data#23, None) = a)))
    +- BatchScan[id#22L, data#23] class org.apache.spark.sql.connector.InMemoryTable$InMemoryBatchScan

How was this patch tested?

Add new test
manually test：the stage execution time for reading data dropped from 6min+ to 24s

gently ping @rdblue @cloud-fan
Could you help to review this patch?

Can one of the admins verify this patch?

the point is clear and valid.
what about this case:  day(ts)=1 versus col1 > 13. where ts is a partition column while col1 is not.  and some v2 data source implementation is capable of pushing that day function down. ?  what will happen?
thought the fix should be more complicated though.

@zinking

what about this case: day(ts)=1 versus col1 > 13. where ts is a partition column while col1 is not. and some v2 data source implementation is capable of pushing that day function down. ? what will happen?

Seems to me the current implementation can only push down filters which are in the format of attribute cmp lit. Could you copy and paste the plan that pushes down day(ts)=1?

@zinking

what about this case: day(ts)=1 versus col1 > 13. where ts is a partition column while col1 is not. and some v2 data source implementation is capable of pushing that day function down. ? what will happen?

Seems to me the current implementation can only push down filters which are in the format of attribute cmp lit. Could you copy and paste the plan that pushes down day(ts)=1?

just wondering this simple patch might not work for some weird edge cases, anyways I don't have that at hand yet. this is good for now.

the point is clear and valid.
what about this case: day(ts)=1 versus col1 > 13. where ts is a partition column while col1 is not. and some v2 data source implementation is capable of pushing that day function down. ? what will happen?
thought the fix should be more complicated though.

@zinking
I think currently  only simple predicates can be pushed down and in your case, is it possible to convert day(ts)=1 and col1 > 13 to ts=20220801 and day(ts)=1 and col1 > 13?
So partition column ts can be push down and after the data scan,  day(ts)=1 can be reused for filtering.

@cloud-fan
Can you help verify this patch? Thanks

cc @sigmod

@caican00 Could you change the filters order in case r: SupportsPushDownV2Filters too?

case r: SupportsPushDownV2Filters

@huaxingao Thanks, i will optimize this

@caican00 Could you change the filters order in case r: SupportsPushDownV2Filters too?

@caican00 Could you change the filters order in case r: SupportsPushDownV2Filters too?

@huaxingao ok, i will optimize this case

@caican00 Could you change the filters order in case r: SupportsPushDownV2Filters too?

@huaxingao  Updated

@caican00 Do you think this PR is ready for another round of review? In our organization, we have seen a number of users impacted by this after migration to DSv2, so it would be nice to get this merged.

QQ: Why is this PR targeting 3.3 and not master ?

Hey @caican00! Haven't seen an update from your side in the last few months. Are you still interested in contributing this patch to Spark?

@caican00 Do you want to finish this? I think you can just remove implementing SupportsPushDownV2Filters here https://github.com/apache/spark/blob/10dbd4239787ad8db80b06cfde90380c3696c386/sql/catalyst/src/test/scala/org/apache/spark/sql/connector/catalog/InMemoryTable.scala#L258, then it's ready to be merged.

@caican00 if you don't have time for this any more, is it OK with you that I take this over and finish it up? We have quite some customers using DS V2, it would be nice if this fix can be merged. Thanks!

@caican00 I have opened a new PR https://github.com/apache/spark/pull/39892. I don't have your github account email to add you as a co-author. You can add yourself as a co-author to get the commit credit.

I will close this PR for now @caican00


add a lastUpdated option to frontmatterSchema

What problem will this feature address?
I want to be able to have a last updated option on my pages whilst having control over the last updated time. For example might only change one thing like size of an image, but the content is the same. Meaning the document i created hasn't actually changed content so hasn't technically been updated. But according to git the page has been updated meaning the existing lastModified time that uses the git file will say the file has been modified.
Describe the solution you'd like
Add an option where i can manually add a last modified time in the frontmatterSchema like so:
---
title: Tools
lastUpdated: 2023-05-01
---

and is available from page.data like so:
{
  title: 'Tools',
  lastUpdated: 2023-05-01T00:00:00.000Z,
  exports: {
    default: [Function: MDXContent],
    lastModified: undefined,
    structuredData: { contents: [], headings: [] },
    toc: []
  }
}

So that the data can be called upon and placed on the page where necessary. It will also allow me to decide which pages have the last modified time on.
And force the user to input a datetype so the data can be displayed how they want
This can be done by updating the packages/mdx/src/utils/schema.ts file to allow this
Describe alternatives you've considered
Nothing i have really considered
Additional context
I am happy to add this feature as i have got it working locally. Just let me know what you want the variable to actually be called if you don't want lastUpdated as this may cause confusion with some users as it is similar to the lastModified option within git. But i think these should be two separate things rather than interchangeable

Forgot to say i am also happy to write documentation for this too

It has to be updated on all content source adapters of Fumadocs, why don't let the user to modify the schema on their own?
https://fumadocs.vercel.app/docs/mdx/validation#example

I've improved the Last Updated Time section on the docs, welcome to check it out.


About Unsupervised Loss

Hi, thank you for the impressive work!
I have some questions about the usage of $\lambda_{TU}$ in the code. After reading the code, I find the weight of smurf loss are zero default:
https://github.com/iwbn/flow-supervisor/blob/31f50f5697f53b2a0a8a6a47a80af7ee609145ca/raft/semi.py#L546
Is the official model of C+T+ $S^u$ optimized by $L_{FS}$ and $L_{TS}$ solely? I didn't find teacher_smurf_weight here:
https://github.com/iwbn/flow-supervisor/blob/31f50f5697f53b2a0a8a6a47a80af7ee609145ca/train.sh#L9-L16
But I do find it sets a teacher_smurf_weight great than zero on C+T+ $K^u$. And the README.md indicates that ckpts/semi/kitti2/ is trained on C+T+K^u w/o unsup. However, the command in train.sh indicates that --teacher_smurf_weight=0.01 for kitti2. Did I misunderstand something?
Besides, I also find there is no Unsupervised Loss in the pytorch codes (which provides the codes for supervised finetuning C+T+S+K+H+ $Spr^u$/ $K^u$):
https://github.com/iwbn/flow-supervisor/blob/31f50f5697f53b2a0a8a6a47a80af7ee609145ca/pytorch/train_gma.py#L270-L282
Please forgive me for asking so many questions. Also, can you provide codes in pytorch for C+T+ $S^u$/ $K^u$?
Finally, I find a small 'bug', the 'elif' should by 'if' below.
https://github.com/iwbn/flow-supervisor/blob/31f50f5697f53b2a0a8a6a47a80af7ee609145ca/pytorch/wb_data/flow_datasets.py#L14-L18
Thank you very much in advance.

Thank you for your attention to our work! Thanks to your comment, we have fixed some errors in our released code.
Weight of SMURF loss
Default settings
In Table 3 in the paper, we showed that the unsupervised loss is not always helpful for a better semi-supervised accuracy. Thus, for Sintel, we set $\lambda_{TU}=0.0$ as default. Also, for

TU
Sintel Final
KITTI EPE

Off
2.46
4.69

On
2.80
3.35

For the ablation study on Sintel, you can edit the option to:
--census_weight 1. --smooth1_weight 2.5 --smooth2_weight 0. --selfsup_weight 0.0 --smurf_occlusion wang

Note that the parameters, we follow the parameters in SMURF repository; we might be able to find a better hyper-parameters or better unsupervised loss functions for our setting in the future.
Lambda value
We have re-checked the released pretrained weights, and we have found an error in the released version.
The setting used fot training is in the args.yaml in each pretrained model; and we corrected the train.sh and the readme file. See https://github.com/iwbn/flow-supervisor/commit/9e61148779533da22691d03ad90c9940c53a13f8 .
Spring and pytorch code
In our paper, we use the Tensorflow implementation of SMURF for our unsupervised loss, and for pytorch experiments, we did not utilize the TU loss.
Also, for the case where we have a partial label (such as Sintel(labeled) + Spring(unlabeled) ), we found that using unsupervised loss does not help. If you want to attach unsupervised loss to our pytorch framework, you can use an unsupervised loss function implemented in PyTorch (such as ARFlow).
Error in the pytorch dataset code
Thank you so much for reporting the typo made during exporting the original code; we fixed it. See https://github.com/iwbn/flow-supervisor/commit/9e61148779533da22691d03ad90c9940c53a13f8

Thank you for your quick reply and clarification.


The "on_top" parameter of EditorSpatialGizmoPlugin.create_material has no effect

Godot 3.2.3
Windows 10 64 bits
OpenGL ES 3.0 Renderer: GeForce GTX 1060 6GB/PCIe/SSE2
I'm making a plugin where I show a custom wireframe gizmo with EditorSpatialGizmoPlugin. I need it to be shown on top, so I set the on_top parameter to true in create_material. However it does not have any effect.

With wireframe mode turned on, you can see where the gizmo is supposed to be:

MRP:
GizmoOnTop.zip
Check the plugin is enabled in ProjectSettings, open main.tscn, select the MeshInstance.

I hit this same bug when working on a custom gizmo and I've linked a PR with a fix that worked for me.
Since the MRP was for Godot 3.x I updated it to 4.3:
GizmoOnTop_4_3.zip
With the linked PR the circle renders over the geometry when the gizmo is being used as expected:


Documentation requested for Issue #6

@cdeil : Here are the requested updates assigned in Issue #6 . I think I've successfully deleted and re-made the dependencies branch on my fork of astroplan, so this PR is independent from the API discussion.

Thanks!

The RDT build succeeded: https://readthedocs.org/builds/astroplan/2930351/


Show warnings more prominently

It's easy to skip over the warning text, and difftastic warnings are from usage that's almost certainly wrong.

This case should maybe be an outright error.


Firefox as default browser opens unlimited tabs

If you have Firefox set as default browser, when you click on the icon for directions to the car location, Firefox gets stuck in a loop and opens unlimited tabs. Need to force quit Firefox and then delete all tabs but still doesn’t open link to Apple Maps.

Hi, sounds for me more like a Firefox issue, which I can't fix in my script.
There is only a normal url which will be opened by the script: http://maps.apple.com/maps?saddr=Current%20Location&daddr=${location[0]},${location[1]}


Fix CI

@nyospe @philippecamacho I temporarily disabled the two failing tests until we upgrade the CircleCI account. I think we can merge so we can expect the CI to be green for our PRs (if we didn't break anything new).


[DATAHELP-2984] [DATAHELP-3001] load from dag directly if deepcopy failed

Tested it out in staging. Works as expected.

PTAL @feng-tao @bhanuvikasr @astahlman @lzell

👍


[BUG]: TagList doesn't change selected key

Describe the bug
The 'SelectedKey' property of TagList does not update when you select different tags.
To Reproduce
Steps to reproduce the behavior:

Add the TagList and use the default Items table as provided in the guide.
Create a label to view the 'selectedKey' output property.
Select different tags

Expected behavior
The 'selectedkey' property should update with the currently selected key, as it does in other similar components
Additional context
It doesn't appear the tags have any connection to the 'onselect' or 'onchange' properties. If you try a simple notification in 'onselect', nothing happens at all.

I have a comment regarding the tag list control you mentioned. I followed @scottdurow's tutorial and used a collection to add and remove tags. However, there is an issue when removing a tag. According to our business requirements, only one tag list can add/remove tags. The problem is that after removing a tag, the tag control still displays the last key instead of being blank as it should be, I meant (taglist.TagKey).


Failed to resolve entry for package "crypto"

Describe the bug
I'm using Vite as a scaffold for my project when out of nowhere it encountered an issue. I noticed when the live preview in browser stopped working.
The error is:
✘ [ERROR] Failed to resolve entry for package "crypto". The package may have incorrect main/module/exports specified in its package.json. [plugin vite:dep-pre-bundle]

    node_modules/esbuild/lib/main.js:1360:21:
      1360 │         let result = await callback({

  This error came from the "onResolve" callback registered here:

    node_modules/esbuild/lib/main.js:1279:20:
      1279 │       let promise = setup({
           ╵                     ^
  The plugin "vite:dep-pre-bundle" was triggered by this import

    ../../../../../../../node_modules/@appium/support/build/lib/fs.js:12:45:
      12 │ var _crypto = _interopRequireDefault(require("crypto"));

✘ [ERROR] Failed to resolve entry for package "crypto". The package may have incorrect main/module/exports specified in its package.json. [plugin vite:dep-pre-bundle]

    node_modules/esbuild/lib/main.js:1360:21:
      1360 │         let result = await callback({
           ╵                      ^
  This error came from the "onResolve" callback registered here:

    node_modules/esbuild/lib/main.js:1279:20:
      1279 │       let promise = setup({
           ╵                     ^

  The plugin "vite:dep-pre-bundle" was triggered by this import

    ../../../../../../../node_modules/package-changed/lib/get-package-hash.js:7:39:
      7 │ var crypto_1 = __importDefault(require("crypto"));
        ╵                                        ~~~~~~~~
✘ [ERROR] Failed to resolve entry for package "crypto". The package may have incorrect main/module/exports specified in its package.json. [plugin vite:dep-pre-bundle]

    node_modules/esbuild/lib/main.js:1360:21:
      1360 │         let result = await callback({
           ╵                      ^
20:18:10 [vite] error while updating dependencies:
Error: Build failed with 5 errors:
node_modules/esbuild/lib/main.js:1360:21: ERROR: [plugin: vite:dep-pre-bundle] Failed to resolve entry for package "crypto". The package may have incorrect main/module/exports specified in its package.json.

I've deleted the node module file as well as package-lock.json and clean installed, but encounter the issue straight away.
In the console:

"vite": "^4.2.0"
node v: 16.18.0

Steps to repro:
I just randomly encountered it.. was working fine before, I naturally started my project with: npm create vite@latest
Reproduction
Steps above
Steps to reproduce
No response
System Info
MacOS 12.5.1
Versions above

Used Package Manager
npm
Logs

 Click to expand
```
npm run dev                                                      1 ↵  1988  20:35:27

<EMAIL_ADDRESS>dev
vite

Port 5173 is in use, trying another one...
VITE v4.2.1  ready in 308 ms
➜  Local:   http://<IP_ADDRESS>:5174/
➜  Network: use --host to expose
➜  press h to show help
✘ [ERROR] Failed to resolve entry for package "crypto". The package may have incorrect main/module/exports specified in its package.json. [plugin vite:dep-pre-bundle]
node_modules/esbuild/lib/main.js:1360:21:
  1360 │         let result = await callback({
       ╵                      ^

at packageEntryFailure (file:///Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/vite/dist/node/chunks/dep-79892de8.js:23266:11)
at resolvePackageEntry (file:///Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/vite/dist/node/chunks/dep-79892de8.js:23263:5)
at tryNodeResolve (file:///Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/vite/dist/node/chunks/dep-79892de8.js:23000:20)
at Context.resolveId (file:///Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/vite/dist/node/chunks/dep-79892de8.js:22762:28)
at Object.resolveId (file:///Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/vite/dist/node/chunks/dep-79892de8.js:43314:46)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at async file:///Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/vite/dist/node/chunks/dep-79892de8.js:63611:21
at async file:///Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/vite/dist/node/chunks/dep-79892de8.js:23589:34
at async requestCallbacks.on-resolve (/Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/esbuild/lib/main.js:1360:22)
at async handleRequest (/Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/esbuild/lib/main.js:723:13)

This error came from the "onResolve" callback registered here:
node_modules/esbuild/lib/main.js:1279:20:
  1279 │       let promise = setup({
       ╵                     ^

at setup (file:///Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/vite/dist/node/chunks/dep-79892de8.js:23569:19)
at handlePlugins (/Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/esbuild/lib/main.js:1279:21)
at buildOrContextImpl (/Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/esbuild/lib/main.js:968:5)
at Object.buildOrContext (/Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/esbuild/lib/main.js:776:5)
at /Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/esbuild/lib/main.js:2172:68
at new Promise (<anonymous>)
at Object.context (/Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/esbuild/lib/main.js:2172:27)
at Object.context (/Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/esbuild/lib/main.js:2012:58)
at prepareEsbuildOptimizerRun (file:///Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/vite/dist/node/chunks/dep-79892de8.js:44840:35)

The plugin "vite:dep-pre-bundle" was triggered by this import
../../../../../../../node_modules/@appium/support/build/lib/fs.js:12:45:
  12 │ var _crypto = _interopRequireDefault(require("crypto"));
     ╵                                              ~~~~~~~~

✘ [ERROR] Failed to resolve entry for package "crypto". The package may have incorrect main/module/exports specified in its package.json. [plugin vite:dep-pre-bundle]
node_modules/esbuild/lib/main.js:1360:21:
  1360 │         let result = await callback({
       ╵                      ^

at packageEntryFailure (file:///Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/vite/dist/node/chunks/dep-79892de8.js:23266:11)
at resolvePackageEntry (file:///Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/vite/dist/node/chunks/dep-79892de8.js:23263:5)
at tryNodeResolve (file:///Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/vite/dist/node/chunks/dep-79892de8.js:23000:20)
at Context.resolveId (file:///Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/vite/dist/node/chunks/dep-79892de8.js:22762:28)
at Object.resolveId (file:///Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/vite/dist/node/chunks/dep-79892de8.js:43314:46)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at async file:///Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/vite/dist/node/chunks/dep-79892de8.js:63611:21
at async file:///Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/vite/dist/node/chunks/dep-79892de8.js:23589:34
at async requestCallbacks.on-resolve (/Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/esbuild/lib/main.js:1360:22)
at async handleRequest (/Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/esbuild/lib/main.js:723:13)

This error came from the "onResolve" callback registered here:
node_modules/esbuild/lib/main.js:1279:20:
  1279 │       let promise = setup({
       ╵                     ^

at setup (file:///Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/vite/dist/node/chunks/dep-79892de8.js:23569:19)
at handlePlugins (/Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/esbuild/lib/main.js:1279:21)
at buildOrContextImpl (/Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/esbuild/lib/main.js:968:5)
at Object.buildOrContext (/Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/esbuild/lib/main.js:776:5)
at /Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/esbuild/lib/main.js:2172:68
at new Promise (<anonymous>)
at Object.context (/Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/esbuild/lib/main.js:2172:27)
at Object.context (/Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/esbuild/lib/main.js:2012:58)
at prepareEsbuildOptimizerRun (file:///Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/vite/dist/node/chunks/dep-79892de8.js:44840:35)

The plugin "vite:dep-pre-bundle" was triggered by this import
../../../../../../../node_modules/package-changed/lib/get-package-hash.js:7:39:
  7 │ var crypto_1 = __importDefault(require("crypto"));
    ╵                                        ~~~~~~~~

✘ [ERROR] Failed to resolve entry for package "crypto". The package may have incorrect main/module/exports specified in its package.json. [plugin vite:dep-pre-bundle]
node_modules/esbuild/lib/main.js:1360:21:
  1360 │         let result = await callback({
       ╵                      ^

at packageEntryFailure (file:///Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/vite/dist/node/chunks/dep-79892de8.js:23266:11)
at resolvePackageEntry (file:///Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/vite/dist/node/chunks/dep-79892de8.js:23263:5)
at tryNodeResolve (file:///Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/vite/dist/node/chunks/dep-79892de8.js:23000:20)
at Context.resolveId (file:///Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/vite/dist/node/chunks/dep-79892de8.js:22762:28)
at Object.resolveId (file:///Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/vite/dist/node/chunks/dep-79892de8.js:43314:46)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at async file:///Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/vite/dist/node/chunks/dep-79892de8.js:63611:21
at async file:///Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/vite/dist/node/chunks/dep-79892de8.js:23589:34
at async requestCallbacks.on-resolve (/Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/esbuild/lib/main.js:1360:22)
at async handleRequest (/Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/esbuild/lib/main.js:723:13)

This error came from the "onResolve" callback registered here:
node_modules/esbuild/lib/main.js:1279:20:
  1279 │       let promise = setup({
       ╵                     ^

at setup (file:///Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/vite/dist/node/chunks/dep-79892de8.js:23569:19)
at handlePlugins (/Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/esbuild/lib/main.js:1279:21)
at buildOrContextImpl (/Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/esbuild/lib/main.js:968:5)
at Object.buildOrContext (/Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/esbuild/lib/main.js:776:5)
at /Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/esbuild/lib/main.js:2172:68
at new Promise (<anonymous>)
at Object.context (/Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/esbuild/lib/main.js:2172:27)
at Object.context (/Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/esbuild/lib/main.js:2012:58)
at prepareEsbuildOptimizerRun (file:///Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/vite/dist/node/chunks/dep-79892de8.js:44840:35)

The plugin "vite:dep-pre-bundle" was triggered by this import
../../../../../../../node_modules/package-changed/lib/get-packagelock-hash.js:7:39:
  7 │ var crypto_1 = __importDefault(require("crypto"));
    ╵                                        ~~~~~~~~

✘ [ERROR] Failed to resolve entry for package "crypto". The package may have incorrect main/module/exports specified in its package.json. [plugin vite:dep-pre-bundle]
node_modules/esbuild/lib/main.js:1360:21:
  1360 │         let result = await callback({
       ╵                      ^

at packageEntryFailure (file:///Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/vite/dist/node/chunks/dep-79892de8.js:23266:11)
at resolvePackageEntry (file:///Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/vite/dist/node/chunks/dep-79892de8.js:23263:5)
at tryNodeResolve (file:///Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/vite/dist/node/chunks/dep-79892de8.js:23000:20)
at Context.resolveId (file:///Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/vite/dist/node/chunks/dep-79892de8.js:22762:28)
at Object.resolveId (file:///Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/vite/dist/node/chunks/dep-79892de8.js:43314:46)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at async file:///Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/vite/dist/node/chunks/dep-79892de8.js:63611:21
at async file:///Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/vite/dist/node/chunks/dep-79892de8.js:23589:34
at async requestCallbacks.on-resolve (/Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/esbuild/lib/main.js:1360:22)
at async handleRequest (/Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/esbuild/lib/main.js:723:13)

This error came from the "onResolve" callback registered here:
node_modules/esbuild/lib/main.js:1279:20:
  1279 │       let promise = setup({
       ╵                     ^

at setup (file:///Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/vite/dist/node/chunks/dep-79892de8.js:23569:19)
at handlePlugins (/Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/esbuild/lib/main.js:1279:21)
at buildOrContextImpl (/Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/esbuild/lib/main.js:968:5)
at Object.buildOrContext (/Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/esbuild/lib/main.js:776:5)
at /Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/esbuild/lib/main.js:2172:68
at new Promise (<anonymous>)
at Object.context (/Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/esbuild/lib/main.js:2172:27)
at Object.context (/Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/esbuild/lib/main.js:2012:58)
at prepareEsbuildOptimizerRun (file:///Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/vite/dist/node/chunks/dep-79892de8.js:44840:35)

The plugin "vite:dep-pre-bundle" was triggered by this import
../../../../../../../node_modules/etag/index.js:21:21:
  21 │ var crypto = require('crypto')
     ╵                      ~~~~~~~~

✘ [ERROR] Failed to resolve entry for package "crypto". The package may have incorrect main/module/exports specified in its package.json. [plugin vite:dep-pre-bundle]
node_modules/esbuild/lib/main.js:1360:21:
  1360 │         let result = await callback({
       ╵                      ^

at packageEntryFailure (file:///Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/vite/dist/node/chunks/dep-79892de8.js:23266:11)
at resolvePackageEntry (file:///Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/vite/dist/node/chunks/dep-79892de8.js:23263:5)
at tryNodeResolve (file:///Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/vite/dist/node/chunks/dep-79892de8.js:23000:20)
at Context.resolveId (file:///Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/vite/dist/node/chunks/dep-79892de8.js:22762:28)
at Object.resolveId (file:///Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/vite/dist/node/chunks/dep-79892de8.js:43314:46)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at async file:///Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/vite/dist/node/chunks/dep-79892de8.js:63611:21
at async file:///Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/vite/dist/node/chunks/dep-79892de8.js:23589:34
at async requestCallbacks.on-resolve (/Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/esbuild/lib/main.js:1360:22)
at async handleRequest (/Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/esbuild/lib/main.js:723:13)

This error came from the "onResolve" callback registered here:
node_modules/esbuild/lib/main.js:1279:20:
  1279 │       let promise = setup({
       ╵                     ^

at setup (file:///Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/vite/dist/node/chunks/dep-79892de8.js:23569:19)
at handlePlugins (/Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/esbuild/lib/main.js:1279:21)
at buildOrContextImpl (/Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/esbuild/lib/main.js:968:5)
at Object.buildOrContext (/Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/esbuild/lib/main.js:776:5)
at /Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/esbuild/lib/main.js:2172:68
at new Promise (<anonymous>)
at Object.context (/Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/esbuild/lib/main.js:2172:27)
at Object.context (/Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/esbuild/lib/main.js:2012:58)
at prepareEsbuildOptimizerRun (file:///Users/chaffe/Documents/Code/JavaScript/personal/frontend-mentor-react/multi-step-form-main/multi-step-form/node_modules/vite/dist/node/chunks/dep-79892de8.js:44840:35)

The plugin "vite:dep-pre-bundle" was triggered by this import
../../../../../../../node_modules/cookie-signature/index.js:5:21:
  5 │ var crypto = require('crypto');

</details>

### Validations

- [X] Follow our [Code of Conduct](https://github.com/vitejs/vite/blob/main/CODE_OF_CONDUCT.md)
- [X] Read the [Contributing Guidelines](https://github.com/vitejs/vite/blob/main/CONTRIBUTING.md).
- [X] Read the [docs](https://vitejs.dev/guide).
- [X] Check that there isn't [already an issue](https://github.com/vitejs/vite/issues) that reports the same bug to avoid creating a duplicate.
- [X] Make sure this is a Vite issue and not a framework-specific issue. For example, if it's a Vue SFC related bug, it should likely be reported to [vuejs/core](https://github.com/vuejs/core) instead.
- [X] Check that this is a concrete bug. For Q&A open a [GitHub Discussion](https://github.com/vitejs/vite/discussions) or join our [Discord Chat Server](https://chat.vitejs.dev/).
- [X] The provided reproduction is a [minimal reproducible example](https://stackoverflow.com/help/minimal-reproducible-example) of the bug.

@Chaffexd How do you have solved that issue?

i found it. Do not use crypto as an npm package... it is deprecated and built in in Node JS. https://www.npmjs.com/package/crypto


Coefficient fix

@googlebot I signed it!

>  is correct. It is according to Dirac Bra–ket notation.

@vtomole Done


⚠ Bofrost.fr has degraded performance

In 5db1c2d, Bofrost.fr (https://www.bofrost.fr) experienced degraded performance:

HTTP code: 200
Response time: 1283 ms

Resolved: Bofrost.fr performance has improved in 26df76e after 6 minutes.


Fix invalid declaration of DefineConstants

Semicolons should have been used instead of comas to separate the defines.

@dotnet-bot test this please


Speed up of converting from pauli to matrix

What is the expected enhancement?
Speed up the conversion from pauli to matrix
As stated in #717, scipy tends to use coo matrix to build matrix for either bmat or kronecker.
Furthermore, since we know all matrix form for all paulis rather than the random matrix, we can use the simple way to build the matrix rather than general Kronecker product.
E.g. use bmat method to build block matrix rather than Kronecker product.
if we change to bmat with coo format (even though it is not optimal), we still gain about 1.6 speedup (see benchmark below).
Here are the numbers I benchmarked with three configurations.
number of paulis: 10, each pauli has 22 qubits
os: macOS 10.13
env: python 3.6.5
terra version: the newest master branch
The average time for 10 runs:

baseline (csr + kron): 6.58 seconds
method 1 (coo + kron) and convert to csr at the end: 4.83 seconds
method 2 (coo + bmat) and convert to csr at the end: 3.85 seconds

Here is my benchmark script (just use default timer in python)
import time
import itertools
import numpy as np
import random
from tqdm import tqdm

from qiskit.tools.qi.pauli import Pauli, label_to_pauli, sgn_prod

num_qubits = 22
num_pauli_term = 10
pauli_term = []
for pauli_label in itertools.product('XIZY', repeat=num_qubits):
    coeff = np.random.random(1)[0]
    pauli_term.append([coeff, label_to_pauli(pauli_label)])
    if len(pauli_term) > num_pauli_term:
        break

print("start converting to matrix")
start = time.time()
for _ in tqdm(range(10)):
    for p in pauli_term:
        p[1].to_spmatrix()

end = time.time()

print(end-start)

Method 2 represents a 40% of speedup over baseline which seems like a great local improvement. Can you profile real uses of this function and tell the fraction of the time it is used?

For a 12 qubit system, LiH molecule.
The conversion from paulis to matrix takes 85.6% of time with the master branch. (wall time: 13.1509 seconds)
After using method 2, the portion for conversion reduces to  80.4% (wall time: 7.94011 seconds)
the reduction in wall time is about 2x.

Well, 1.66x actually. It seems like a good improvement to me. It is a 34% faster which means a near 1:1 ratio according to the local speed-up. @nonhermitian do you want to add something more? @chunfuchen can you provide another example and summarize times in a table for posterity, please? I'm happy with implementing this. :)

Here is the prototype for the implementation
    def to_spmatrix(self):
        """Convert Pauli to a sparse matrix representation (CSR format).

        Order is q_n x q_{n-1} .... q_0

        Returns:
            scipy.sparse.csr_matrix: a sparse matrix with CSR format that
            represnets the pauli.
        """
        p_v = self.v.astype(np.bool)
        p_w = self.w.astype(np.bool)
        mat = sparse.coo_matrix(1)
        for v, w in zip(p_v, p_w):
            if not v and not w:  # I
                mat = sparse.bmat([[mat, None], [None, mat]], format='coo')
            elif v and not w:  # Z
                mat = sparse.bmat([[mat, None], [None, -mat]], format='coo')
            elif not v and w:  # X
                mat = sparse.bmat([[None, mat], [mat, None]], format='coo')
            else:  # Y
                mat = mat * 1j
                mat = sparse.bmat([[None, -mat], [mat, None]], format='coo')

        return mat.tocsr()

Here is the benchmark on different number of qubits

Number of qubits
Speedup of this implementation

4
1.65x

5
1.74x

6
1.65x

7
1.87x

and this does not change the output data format of the method, all existing users won't encounter any issue.

#1142 is now going to track this. Closing it as it is one part of the redoing of the Pauli


Fix bug with parsing WrapModes from config file

Currently isort crashes trying to parse multi_line_output from a config file due to the fact that WrapModes(str) is not a valid str -> type instance callable.

Looks great, thank you!


chore(deps): update npm dev (major)

Redo of https://github.com/slsa-framework/slsa-verifier/pull/654

Fix dev-dependencies related to es-lint that the renovate-bot couldn't auto-fix

a few commas automatically added by the new linter

use node20 for tests to avoid caompatibility warnings

npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE   package: '<EMAIL_ADDRESS>npm WARN EBADENGINE   required: { node: '^18.18.0 || >=20.0.0' },
npm WARN EBADENGINE   current: { node: 'v16.20.2', npm: '8.19.4' }
npm WARN EBADENGINE }

@laurentsimon


C# status and plans towards 3.1

I'm opening this issue to inform other developers interested in the mono module about the current status and the plans towards 3.1.
As you may have notice, I've been quite inactive during the last month and a half. This is related to my studies, and there is nothing that can be done about it. This low activity will sadly continue until June 14, approximately, when I will finally be free once and for all to focus entirely on Godot.
Since I will have very little time to dedicate to Godot during this period of time, I decided to make a list of essential tasks that need to done for the 3.1 milestone, and postpone everything else for future releases. The list is the following:

Finish the C# API. This means that any changes that break compatibility will have to be done, in principle, before 3.1beta. The most important part of the API that is missing are the Dictionary, Array and Pool*Array wrapper classes.
Finish project exporting. This is almost done. It's just missing exporting the right mono runtime library for the target platform, making it work with the Export PCK/Zip(-only) option, and more testing of course.
Upgrade GodotSharpTools to reference the Microsoft.Build nuget packages (these are Windows-only, need to build msbuild from source) instead of Mono's Microsoft.Build assemblies, and bundle with the Roslyn compilers. This way we can provide a working build environment on all platforms. It will increase the editor size, but I consider it to be necessary.
Bundle all the assemblies that can break compatibility between versions of mono (because of internal calls), not only mscorlib as we are doing right now. Godot shouldn't require Mono 5.4 to be the installed version.
Bug fixing. Although last in the list, this is the main focus.

Other developers are free to make contributions to any area. However, keep in mind that I may leave them aside for review after 3.1 is released if I don't consider them essential for this release. Please, let me know if you think I'm forgetting something in the list above.
I'm keeping this issue open for discussion.

Finish project exporting. This is almost done. It's just missing exporting the right mono runtime library for the target platform, making it work with the Export PCK/Zip(-only) option, and more testing of course.

Just to clarify, it's already possible to test project exporting. All you need is to compile the export templates and place them in $HOME/.local/share/godot/templates/3.1.dev.mono/ (%APPDATA%/Godot/templates/3.1.dev.mono/ on Windows). You will have to copy the mono runtime library manually as mentioned above. Keep in mind only desktop platforms are supported for now.

Long term which platforms can we expect to support mono exports?

I believe that eventually the plan is to support ALL platforms, even web (MSIL -> wasm is something that mono and such are working on).
With the GodotSharpTools bit & build: don't you mean GodotSharpEditor? I thought that was the one that needed it to build the csproj files and such.

Platforms:
Desktop: Right now, we support the x11, Windows and OSX platforms. I didn't test on Server, UWP, *BSD and Haiku yet, but they may be working already.
Mobile: We will support both Android and iOS. The Android port should be straightforward. iOS exporting will require the extra step of compiling the assemblies ahead of time.
WebAssembly: There is work to bring the Mono runtime to WebAssembly, so this should be possible in the future. I'm not sure if embedders can test it at its current state.
Consoles: No idea. All I know is there are ports provided by third parties.

With the GodotSharpTools bit & build: don't you mean GodotSharpEditor? I thought that was the one that needed it to build the csproj files and such.

GodotSharpTools is the one that the editor uses for reading/editing with csproj files, building solutions and executing MonoDevelop.
GodotSharp and GodotSharpEditor are the API assemblies. I will rename them to GodotAPI and GodotEditorAPI respectively before 3.1 to avoid confusion.

For what it's worth, I can definitely tell you that Server loads up
successfully for the purposes of exporting to Windows. Haven't tried to run
actual code on it though.
On Mon, Apr 23, 2018, 10:47 Ignacio Etcheverry<EMAIL_ADDRESS>wrote:

Platforms:
Desktop: Right now, we support the x11, Windows and OSX platforms. I
didn't test on Server, UWP, *BSD and Haiku yet, but they may be working
already.
Mobile: We will support both Android and iOS. The Android port should
be straightforward. iOS exporting will require the extra step of compiling
the assemblies ahead of time.
WebAssembly: There is work to bring the Mono runtime to WebAssembly, so
this should be possible in the future. I'm not sure if embedders can test
it at its current state.
Consoles: No idea. All I know is there are ports provided by third
parties.
With the GodotSharpTools bit & build: don't you mean GodotSharpEditor? I
thought that was the one that needed it to build the csproj files and such.
GodotSharpTools is the one that the editor uses for reading/editing with
csproj files, building solutions and executing MonoDevelop.
GodotSharp and GodotSharpEditor are the API assemblies. I will rename
them to GodotAPI and GodotEditorAPI respectively before 3.1 to avoid
confusion.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/godotengine/godot/issues/18364#issuecomment-383500986,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AHu1w6os8QgftKsVEE3aMDufzeSygNMaks5trZUWgaJpZM4Te_7X
.

I'm interest a lot in C#.
Mainly because Object Oriented language and because game source code is obfuscated when the game is published unlike GDscript.

Instead of to-do create new individual issues for each item.

@DevMagicLord Isn't GDScript compiled to bytecode before packaging?

Just to clarify, it's already possible to test project exporting. All you need is to compile the export templates and place them in $HOME/.local/share/godot/templates/3.1.dev.mono/ (%APPDATA%/Godot/templates/3.1.dev.mono/ on Windows). You will have to copy the mono runtime library manually as mentioned above. Keep in mind only desktop platforms are supported for now.

So, I tried to do exactly this. It didn't work! I thought I'd report my findings for the record - perhaps it can be of some use for you later @neikeq!
My commands were (from a totally clean repository clone at 1113a738baeabebbee0d51f9c51d4f842fba0fda):
# Build Godot to Generate Glue
scons p=x11 tools=yes module_mono_enabled=yes mono_glue=no -j 32
bin/godot.x11.tools.64.mono --generate-mono-glue modules/mono/glue

# Build Godot w/Mono
scons p=x11 target=release_debug tools=yes module_mono_enabled=yes -j 32

# Generate Export Templates
scons p=x11 target=debug tools=no module_mono_enabled=yes -j 32
scons p=x11 target=release tools=no module_mono_enabled=yes -j 32

I then copied the export templates to $HOME/.local/share/godot/templates/3.1.dev.mono/ as described, and renamed them to match the distributed export templates.
I proceeded to open the built editor, godot.x11.opt.tools.64.mono, with a test project (which contains no C# code whatsoever - it's entirely GDscript; there isn't even a .csproj file) and export a Linux/X11 Build to res://bin/. I then copied the following files to the same folder as the export:

GodotSharpTools.dll
libmonosgen-2.0.so
mscorlib.dll

When I ran the exported project, this happened:
$ ./test.x86_64
Mono: Initializing module...
ERROR: _initialize_and_check_api_hashes: Mono: Core API hash mismatch!
   At: modules/mono/mono_gd/gd_mono.cpp:318.
Mono: Runtime initialized
Mono: INITIALIZED
<Black Screen>
^C

There's the error! It is, in fact, the error described in #14584 .
My mono version is 5.10 - not sure if that matters:
Mono JIT compiler version <IP_ADDRESS> (tarball Thu Mar 29 10:48:35 UTC 2018)
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
	TLS:           __thread
	SIGSEGV:       altstack
	Notifications: epoll
	Architecture:  amd64
	Disabled:      none
	Misc:          softdebug
	Interpreter:   yes
	LLVM:          supported, not enabled.
	GC:            sgen (concurrent by default)

My mono version is 5.10 - not sure if that matters:

Yes it matters, Godot supports only 5.4.

My mono version is 5.10 - not sure if that matters:

Yes it matters, Godot supports only 5.4.

That is only true when you're using the released binaries. When you're compiling yourself you can pretty much use any recent Mono version.

@so-rose I believe that is the issue to be fixed by #18514

Yes, that issue is fixed by #18514. Although it shouldn't prevent your game from working, it's just a false warning.
You don't need to copy GodotSharpTools.dll and mscorlib.dll with the exported game.  GodotSharpTools is editor only, and the editor already copies mscorlib (inside the PCK file).
libmonosgen-2.0.so is not needed when static linking mono. You can do that with mono_static=yes when building.
Export PCK/ZIP works with Mono now, so the only thing missing is copying the mono shared libraries (if they were linked dynamically), and project exporting will be done.

From https://github.com/godotengine/godot/issues/19101:
Things that I'd expect before I'd consider C# production ready, in order of importance:

Crashes (there are ~25 known ones currently)
Exporting (https://github.com/godotengine/godot/issues/15615)
API should be mostly final. There is still some discussion that doesn't appear resolved? (https://github.com/godotengine/godot/issues/14466)
Editing, renaming, (re)moving files should be supported; there should be no need to hand-edit generated project files (https://github.com/godotengine/godot/issues/12917, https://github.com/godotengine/godot/issues/12415, https://github.com/godotengine/godot/issues/11930)
Debugging should work (https://github.com/godotengine/godot/issues/13837, https://github.com/godotengine/godot/issues/14822)
We should have at least one minor version (so 3.1) with working exporting for C# supported before we can declare the exporter production ready

To explain the last point:
IMO, we need to test C# more widely before calling it production ready. I propose to release 3.1 (or 3.0.3) with working exporting and wait for some (to be determined) time after that, seeing what issues crop up, before calling it that.
Because if I was one of the first users to run into export issues because thats a new functionality, and C# as a whole was called production ready, I'd be upset. Opinions?

Agree. It could be released a a preview.

That's what beta is for, isn't it?

Would anyone be opposed to renaming Fposmod() in Mathf to Mod()?

None of the other float-returning methods start with the letter F

It's not PascalCase if you count pos and mod as words

The pos distinction is not necessary because for "non-pos mod" also known as "remainder" there's already an operator in C# called %. People using the Mathf function would only ever be looking for something that wasn't in the C# language.

Mod() looks a lot cleaner than Fposmod().

For the info, I will be finally back on Wednesday next week.

@PJB3005 I fear that would lead to two completely distinct sets of documentation in the long term.

@PJB3005 @mhilbrunner Is there no way to do this similar to how Unity has their docs, which has examples for both C# and JS? https://docs.unity3d.com/ScriptReference/MonoBehaviour.Start.html See language toggle at top-right.

@aaronfranke current docs already do something like that (see the code snippets http://docs.godotengine.org/en/latest/getting_started/step_by_step/your_first_game.html). The problem I see is writing a whole new Class API docs just for C#.

@vnen http://godotsharp.net/api/ someone seemed to already generated it.

@exts I don't know who maintains that, but generating such pages isn't that hard and not even the problem. My issue is with writing new docs just for C# (that is, something that can't be automated).

Also, not only writing those new docs but *maintaining them.

The class reference description for the generated API is automatically generated from the existing class reference. It's still not translating it from bbcode to xml tags, but that can be easily solved. A problem would be translating the GDScript code examples (inside code tags) in the generated bindings to C#, if we desire to do so.
I don't see any problem in maintaining docs for the part of the API we write manually.

Should Printerr be changed to PrintErr? Currently kinda looks like "Printer".

I've opened some issues to discuss Mono/C# support for the remaining platforms:

[ ] #20267 for Android
[ ] #20268 for iOS
[ ] #20270 for HTML5
[ ] #20271 for UWP

@Nufflee Good luck. You may get stuck due to #10946 though. At least that's what happened to me last time I tried.

@neikeq Hmm, I'm not too sure how that's really related to this but we should probably continue this conversation in the PR.

Another minor issue, I noticed that the Lerp method in Godot is called "LinearInterpolate" rather than the shorter and probably more familiar "Lerp". More familiar to users, since it's called Lerp in Unity. The name "LinearInterpolate" is also inconsistent with the other method "Slerp" which isn't expanded to "SphericalLinearInterpolate".
Would anyone be opposed to changing "LinearInterpolate" to "Lerp"? I would also have to change the C++ code to "lerp" in order to be consistent, or I can just change the C# code if that's desired.

I think your suggestion would make the Godot API itself more consistent since the default floating point math function is also called lerp. I wouldn't be opposed to it being Lerp in C#, and at some point it would make sense for the C++ side to also be called lerp. I'm not opposed at all to changing the C++/GDScript side now, but I think API breakages may not be wanted in the 3.x series. I guess it can't hurt to just make a PR explaining the issue.

@NathanWarden I believe since c# is unstable breakage should be allowed with 3.1

Should Sync Script Changes work with .cs files as well? Live updating code would be super handy for exploratory development and fine-tuning.

Maybe a bit offtopic, but as the code of my game is constantly growing, and I prefer C#/Mono for a list of reasons, but haven't used it so far because its non fnished status, perhaps a good idea would be to have a GDScript to C# converter, so that there is a basis that will make refactoring code to C# easier.

@aaronfranke that would be imperfect for sure and the user will have to review and tune each source file, but the amount of tedious work writing file per file as a middle age scribe monk is saved, at least a considerable part :) (or that's the idea)

For those wondering how you’d even approach a gdscript converter, there was
a guy a few years ago who made a Obj-C to C# converter. The way he did it
was first convert it to TXL, which is an intermediary language made for
this thing, then convert it to C#.
http://razum.si/automagical/about
On Sat, Aug 25, 2018 at 1:15 AM immccc<EMAIL_ADDRESS>wrote:

@aaronfranke https://github.com/aaronfranke that would be imperfect for
sure and the user will have to review and tune each source file, but the
amount of tedious work writing file per file as a middle age scribe monk is
saved, at least a considerable part :) (or that's the idea)
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/godotengine/godot/issues/18364#issuecomment-415952428,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ACRvBzJ4xG-aRijv4Vy5h523AJm3YBSmks5uUQe0gaJpZM4Te_7X
.

Should Cartesian2Polar and Polar2Cartesian be in Vector2 instead of Mathf?

@aaronfranke I say Vector2 makes more sense. As even a polar vector is a vector.

@Byteron This has already been fixed, but it hasn't arrived in a release version yet. In 3.1 and possibly 3.0.7, Godot.Dictionary will be moved to Godot.Collections.Dictionary.

How soon is the bundled Mono coming?

@aaronfranke only for Dictionary, or for all shadowing classes?
And thank you for the quick answer! :)

Only Dictionary and Array for now. Are there any others that cause problems? For one, I know Thread. I would like to move it to Godot.Threading together with other related classes like Mutex and Semaphore.

There also is Godot.Directory and System.IO.Directory.

Similar to @Byteron, I had System.IO.File and Godot.File conflict a day or two ago and it took me a minute to figure out what was going on. Can we put those both under Godot.IO to mirror the System namespace? I'd be happy to make this change if it's wanted. :) I could take a look and see if there is any other IO related code we could tuck in there too.

Issues I think should make 3.1:

#20012
#18969 (redirect mono's print and printerr to the editor output dock)
#15558
#17409
#19898 (api issue that should work the same as it does in gdscript)
#12415

is mostly done. It's something that will be constantly evolving. More changes will be made in 3.2. And important changes may have to wait for 4.0 to avoid badly breaking compat.
is done. Exporting should work now for desktop platforms.
will take some work since we need to build msbuild from source and figure out how to bundle it with the editor, so I'm pushing it to the next milestone.
is done. We bundle the mono bcl with the editor so the user doesn't need to install a specific Mono version.
is all that's left and can be tracker here: https://github.com/godotengine/godot/issues?q=is%3Aopen+is%3Aissue+label%3Atopic%3Amono+milestone%3A3.1

I'm closing this issue.


feat: add ECS tracing fields to stringify() schema

:green_heart: Build Succeeded

the below badges are clickable and redirect to their specific view in the CI or DOCS

Expand to view the summary

Build stats

Build Cause: Pull request #38 opened

Start Time: 2021-01-20T17:24:35.513+0000

Duration: 6 min 25 sec

Commit: 50f6aa9e64a06fcde378c08322e5d6e96bf1264a

:green_heart: Build Succeeded

the below badges are clickable and redirect to their specific view in the CI or DOCS

Expand to view the summary

Build stats

Build Cause: Pull request #38 opened

Start Time: 2021-01-20T17:24:35.513+0000

Duration: 6 min 25 sec

Commit: 50f6aa9e64a06fcde378c08322e5d6e96bf1264a


http: Add metric for active outbound frames

Want to add the ability to detect current number of active outbound frames.
While outbound_frame_flood counter helps us understand how many connections were destroyed but without knowing about what's the current value for active frames, its hard to tune max_outbound_frames.

Commit Message: Add metric for active outbound frames / control frames
Additional Description: Want to add the ability to detect current number of active outbound frames. While outbound_frame_flood counter helps us understand how many connections were destroyed but without knowing about what's the current value for active frames, its hard to tune max_outbound_frames.
Risk Level: Low
Testing: Unit Test added
Docs Changes:
Release Notes:
Platform Specific Features:
[Optional Runtime guard:]
[Optional Fixes #Issue]
[Optional Fixes commit #PR or SHA] - Reopens / Fixes this stale PR -> https://github.com/envoyproxy/envoy/pull/24285
[Optional Deprecated:]
[Optional API Considerations:]

/retest

/retest

/retest

/retest

/retest

/retest

/retest

/retest

/assign-from @envoyproxy/envoy-maintainers

@yanavlasov - this is the same PR that you were reviewing few months ago https://github.com/envoyproxy/envoy/pull/24285 but I did not get a chance earlier to work on the integration test enhancement and eventually got stale and closed. When you have a moment, could you please take a look at this ? Thanks!


clients: use flags for integration.zig

What happened to the old one? :D

I originally implemented https://github.com/tigerbeetle/tigerbeetle/pull/1098 on top of matklad/more-falgs branch, but then decided to split out it to a separate PR, as it was unrelated.
I have a git spinoff script for this use-case, which takes several commits on top of the current branch and moves them to a new branch (removing them from the old branch), exactly for this use-case of "I changed my mind and want a branch here after all". That script however works only with main/master, so in this case I did just git switch -c matklad/diff-diff, which left the old commits also on that old branch.
So when I came back and rebased on top of master, the tip was the same commit as on the diff-diff branch. So when I pushed that, github noticed that #1096 now ends in a commit which is in the mastre branch, and hopefully closed the PR. Removing the offending commit and pushing the branch didn't reopen the PR though, as the logic here seems to be edge triggered. So I had to create a new PR from the same branch.
:0)


fix(nextjs): Adjust shared imports to remove edge runtime warnings

Description

Updates our @clerk/shared imports to remove some warnings about importing unsupported methods in certain runtimes. As part of this, I've also moved some utils out of shared/utils into their own dedicated files so that they can be imported on their own.

isDevelopmentFromApiKey has been moved to shared/keys
isProductionFromApiKey has been moved to shared/keys
Moved callWithRetry into its top-level file

Example:
<EMAIL_ADDRESS>--
A Node.js API is used (MessageEvent at line: 23) which is not supported in the Edge Runtime.
Learn more: https://nextjs.org/docs/api-reference/edge-runtime

Import trace for requested module:
<EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS>
Note: This does not address the warnings that arise from import { authMiddleware } from '@clerk/nextjs'. This is a separate case that we'll need to handle differently.

related to JS-599
Checklist

[ ] npm test runs as expected.
[ ] npm run build runs as expected.
[ ] (If applicable) JSDoc comments have been added or updated for any package exports
[ ] (If applicable) Documentation has been updated

Type of change

[ ] 🐛 Bug fix
[ ] 🌟 New feature
[ ] 🔨 Breaking change
[x] 📖 Refactoring / dependency upgrade / documentation
[ ] other:

Packages affected

[ ] @clerk/clerk-js
[x] @clerk/clerk-react
[x] @clerk/nextjs
[ ] @clerk/remix
[ ] @clerk/types
[ ] @clerk/themes
[ ] @clerk/localizations
[ ] @clerk/clerk-expo
[x] @clerk/backend
[ ] @clerk/clerk-sdk-node
[x] @clerk/shared
[ ] @clerk/fastify
[ ] @clerk/chrome-extension
[ ] gatsby-plugin-clerk
[ ] build/tooling/chore

This PR has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.


Laravel 4 - Model save() won't work with chunk() function.

I know I should be doing the hashing of password while creating a new user, that is exactly what I am doing but I need to hash the previously present passwords which were in a pure PHP written system and are now converted to Laravel.
My code looks like this,
$users = User::where('password','!=','0')->select(array('password'))->chunk(50,function($users){
    foreach ($users as $user) {
        $user->password = Hash::make($user->password);
        $user->save();
    }
 });

I tried using try catch around save() and also tried transaction nothing helped. Any idea? Also, if I try to var_dump $user right after save() it shows the updated value of password but the DB will still be unaltered. Also, I don't have $guarded on password. Mass update works when I do it without chunk() but I don't want to deal with time out issue.

In case anybody is really looking for an answer to this problem, then here you go, chunk() won't work with custom select. I was selecting only password for the obvious reasons. But turns out it doesn't like that. So I had to get() everything in order to make it work. Can this be thought of as an improvement for the function?

It makes sense if you think about it. If you select only password, that means it won't have the id of the users, so it doesn't know what to save.

could you dd($user) inside the loop and share with us dumped object?

yeah correct @MaartenStaa, I was doing it wrong way, when I tried selecting id with passwords, I could save the model. genius :) closing the issue.


Updating Release Notes to 1.1.0

Signed-off-by: Ricardo Zanini<EMAIL_ADDRESS>@Kaitou786 can we add an option to the bot to also comment in the PR when RELEASE_NOTES.md is not updated for changes on the operator (do not consider BDD changes)?

@Kaitou786 can we add an option to the bot to also comment in the PR when RELEASE_NOTES.md is not updated for changes on the operator (do not consider BDD changes)?

@ricardozanini  Sure, will work on it this week for bot to comment this if RELEASE_NOTES is not updated :) Created KOGITO-3941


Mention rack 2.1.0 support in UPGRADING.md

I'm currently upgrading a fairly big rails app I did not write myself which uses grape. Since I unfortunately never used grape before (I want to though :wink:), I was in unknown territory and it took me quite I while to figure out that grape added support for rack >= 2.1.0 first on 1.3.0.
First thing I did when running into [https://github.com/ruby-grape/grape/issues/1966](this error) was checking the Upgrade.md file for any signs of rack incompatibility, but I did not find any. I wish I did, since it took me a few hours to find the mentioned issue. (I really have to up my google-fu, I know :see_no_evil:)
But for any poor soul in the future, who is just as bad as googling as I am, it might be helpful to mention this in the Upgrade guide :)

Thanks! Explain what the developer that's upgrading has to do though? Does one have to upgrade and therefore add a specific version of Rack to Gemfile? Link to the issue?

Well that got merged fast :grin: Always feels good to contribute to oss, even when it's a tiny bit :relaxed:
I had the option to either upgrade to grape >= 1.3.0 or ensure that we are using a compatible version of rack.
Since I want to wait with the upgrade of grape til we are done with the upgrade to rails 5.0 I opted to pin the version of rack to ~> 2.0.0 so it will be below version 2.1.0.
Since rack isn't part of a Gemfile in rails project per se I needed to add it altogether like this:
gem 'rack', '~> 2.0.0'

I will remove this line from my Gemfile once I'm done upgrading to grape >= 1.3.0 :)
Does this answer your questions?

First, thanks. But I am looking for a sentence of instructions below the line that you're adding to the user UPGRADING. So I am confused to what we're trying to tell the user. UPGRADING instructions should tell users what to do, CHANGELOG says what changed and feels like we're mixing the two.

Know I understand and I think this is kind of tricky. The information I thought I might find here is the incompatibility of grape versions with other "big" gems/dependencies. When I looked at the file I wasn't looking for instructions of how I upgrade to a specific version, but rather of why I would want to.
The line I added tells me that versions <= 1.3.0 don't work with rack >= 2.1.0 and from there I can decide what to do next. This is probably very project specific. Pinning the rack version worked for me, but might not for someone else.
So if you are looking for instructions it might be something like
In the section "Upgrading to >= 1.3.0":
"You will need to upgrade to this version if you depend on rack >= 2.1.0"
Or in the section "Upgrading to >= 1.2.5":
"If something prevents you from upgrading to version >= 1.3.0 it might be helpful to pin rack to ~> 2.0.0 in your Gemfile, since version 1.2.5 does not work with rack >= 2.1.0"
What do you think?

Your suggestions sound good! Go for it.

Sure, you can. Added it :v:


Encrypting Confidential Data at Rest - Minor UI issue on Safari browser

Description
There is an overflow issue on a pre element after the h2 element with id = understanding-the-encryption-at-rest-configuration on Encrypting Confidential Data at Rest page.
Scroll along the y-axis is going beyond the content in the element. Attaching screenshots for reference.
This issue seems to be appearing only on Safari browser with a resolution of 1512 x 982 or less.
Element with issue:

Overflow issue along y-axis:

Not so ideal fix: (set overflow-x and overflow-y properties)

Page reported in the issue: https://kubernetes.io/docs/tasks/administer-cluster/encrypt-data/
/area web-development

This doesn't seem to be a single page. There's similar behaviour on this page as well.


liburing-ffi headers

im linking to liburing-ffi.a
you says that

Users wishing to consume liburing purely as a binary dependency
should link against liburing-ffi. It contains definitions for every 'static
inline' function.

im using rustbindgen to generate rust definition of c headers
but rustbindgen cannot handle inline functions
i need liburing-ffi.h instead of liburing.h

@axboe there's two libraries "liburing.a" and "liburing-ffi.a",but
there's only one header. It makes no sense

@cmazakas

is ffi varient just -fno-inline-functions
What's the difference

Languages and applications that can't use 'static inline' functions in
liburing.h should use the FFI variants.
If you can use the header, then there is no point in using FFI.
The FFI version is supposed to be used by programming languages that
can't use the liburing.h header. IOW, other than the C/C++ language.

how do i get metadata without header

I don't even know the signature of the function because there is no header

I don't even know the signature of the function because there is no header

The signature doesn't change; still the same as the non-FFI version.
What programming language are you working on?

In other words, how do I create function signatures in other languages without C header

Use the same signature as the non-FFI version.

im using rustbindgen to generate rust definition of c headers
but rustbindgen cannot handle inline functions
Does it mean that if liburing-ffi.h exists, just delete all static inline and function body?

Does it mean that if liburing-ffi.h exists, just delete all static inline and function body?

Yes, exactly.

rustbindgen is an automated tool to generate rust bindings from c language headers, I don't like manual bindings because manual is fragile and complicated

I mean liburing-ffi.h is needed because the existing C header files are not suitable for rustbindgen or similar automation tools, and this may make things less complicated

I don't know about rustbindgen, but from a quick google, I found this:
https://github.com/rust-lang/rust-bindgen/pull/2335
Does that solve your problem?

I tried, it didn't help, it just made things more complicated

Link time optimization should be able to ignore static inline

The header file is static inline, but the binary is an normal function, I am curious how this is done

The header file is static inline, but the binary is an normal function, I am curious how this is done

All static inline definitions in the header uses the IOURINGINLINE macro.
In the FFI version, we get rid of those static inline marks
by defining the macro as an empty macro like this:
#define IOURINGINLINE

It's defined in:
https://github.com/axboe/liburing/blob/master/src/ffi.c
The ffi.c is what liburing-ffi.a and liburing-ffi.so are made of.

Looking at your case where other languages can generate the binding
from the C header file. I think it's reasonable to create liburing-ffi.h.

If IOURINGINLINE is empty, isn't the function body redundant?
Will the code compile？
I only need to define IOURINGINLINE to be empty to create liburing-ffi.h?

I found that I know little about C language

If IOURINGINLINE is empty, isn't the function body redundant?

No, the body is not redundant. If IOURINGINLINE is empty, the body
will be included in the binary file. The compiler is not allowed to
remove the functions. That's when FFI.
If IOURINGINLINE is static inline, the function is allowed to be
completely removed if not used at compile time. That is when we use C/C++.

Will the code compile？

Obviously, that's how the current FFI binaries are made.

I only need to define IOURINGINLINE to be empty to create liburing-ffi.h?

You need to remove the body as well.
The original liburing.h is still needed to create the FFI binaries
because the function body is there.

Perhaps the c header is not suitable for ffi.  Perhaps XML should be used to describe metadata.  That's what vulkan does, and so does the Windows api

I tried, it didn't help, it just made things more complicated

Can you expand on that? Why it made things more complicated?
I can easily generate the binding this way:
bindgen --experimental --wrap-static-fns src/include/liburing.h --wrap-static-fns-suffix="" -o q.rs

and get all io_uring static inline function signatures:
https://gist.github.com/alviroiskandar/be31d247d8e152913ba38465e5e44883

I don't like experimental, and it's the equivalent of translating c to rust, which isn't ffi at all

I actually just mantain the bindings by hand in Rust, I don't like bindgen exactly for the reasons discovered in this issue.
liburing's API even includes macros. bindgen is good for simple tools but in general, it's more robust to own your own declarations from Rust.

I seem to have solved it, renamed ffi.c to ffi.h, bindgen ffi.h -o bindings.rs

Tested and it works

我好像已经解决了，将ffi.c重命名为ffi.h，bindgen ffi.h -o bindings.rs

miniuring on crates.io

@cmazakas

I don't like experimental

This is actually not a liburing problem. Any language that opt in to use liburing FFI should provide their way to connect with liburing-ffi, not the other way around. bindgen and what @cmazakas does are the examples of it.

and it's the equivalent of translating c to rust

Only the signatures. Not the body.

which isn't ffi at all

That's FFI, the functions are still defined in liburing-ffi.so and liburing-ffi.a.  --wrap-static-fns doesn't convert the function body to Rust. It converts the C function signatures to Rust, not the body.

I seem to have solved it, renamed ffi.c to ffi.h, bindgen ffi.h -o bindings.rs

BTW, the rename is not necessary, the following also works:
bindgen src/ffi.c -o bindings.rs

It generates exactly the same binding as the experimental feature except that it doesn't have something like
#[link_name = "io_uring_prep_readv"]

you are right


Init commit for swbd

This pull request creates the init commit for the Switchboard dataset. It is currently very rough and produces a high Word Error Rate, requiring more improvement and refinement.
More info please refer to the README and RESULTS markdown files.

Dear Desh,
This PR is pending review now and should be able to merge at any moment. I
intend to make a separate PR for Zipformer as there are still some
parameters to tune.
Best Regards
Desh Raj @.***>于2023年9月28日 周四22:28写道：

@JinZr https://github.com/JinZr any progress on this? I was looking for
some pretrained English narrowband zipformer model.
—
Reply to this email directly, view it on GitHub
https://github.com/k2-fsa/icefall/pull/1146#issuecomment-1739363284, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AOON42CLTVAMLSOZ3JSP73DX4WCRZANCNFSM6AAAAAAZT4AFZE
.
You are receiving this because you were mentioned.Message ID:
@.***>

@desh2608 Dear Desh,
The PR has been merged, please check.
Thank you!
Best

Hello, I was wondering about the sampling rate of swbd data in the recipe:
https://github.com/k2-fsa/icefall/blob/master/egs/swbd/ASR/local/compute_fbank_swbd.py#L108
The original swbd data is 8kHz, but here you are specifying 16kHz instead. Is there any reason we do this? Thanks.

Dear Huangruizhe,
the resampling here is for the musan related data augmentation we applied
later, you can skip the resampling stage if you want to get rid of the
musan part.
hope this would help.
Best Regards
Jin
huangruizhe @.***>于2023年10月13日 周五00:42写道：

Hello, I was wondering about the sampling rate of swbd data in the recipe:
https://github.com/k2-fsa/icefall/blob/master/egs/swbd/ASR/local/compute_fbank_swbd.py#L108
The original swbd data is 8kHz
https://github.com/lhotse-speech/lhotse/blob/master/lhotse/recipes/switchboard.py#L4,
but here
https://github.com/k2-fsa/icefall/blob/master/egs/swbd/ASR/local/compute_fbank_swbd.py#L108
you are specifying 16kHz instead. Is there any reason we do this? Thanks.
—
Reply to this email directly, view it on GitHub
https://github.com/k2-fsa/icefall/pull/1146#issuecomment-1759981508, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AOON42GKAXIGS6JPTWBFIJTX7AMXXANCNFSM6AAAAAAZT4AFZE
.
You are receiving this because you modified the open/close state.Message
ID: @.***>

Thanks for the explanation. Is it more natural to downsample MUSAN to 8kHz instead? E.g., https://github.com/pyannote/pyannote-audio/issues/300
If we are using upsampled 16kHz swbd audio to compute features -- fbanks here -- we are probably wasting the 8kHz~16kHz part in the feature, as it contains no information except noise. By speculation, will it degrade the performance?

Dear Huangruizhe,
I haven’t done any experiment in terms of the performance but I suppose
that makes sense, especially when you want a system for narrowband
scenarios.
i’ll work on that later.
Best Regards
Jin
huangruizhe @.***>于2023年10月13日 周五01:39写道：

Thanks for the explanation. Is it more natural to downsample MUSAN to 8kHz
instead? E.g., pyannote/pyannote-audio#300
https://github.com/pyannote/pyannote-audio/issues/300
If we are using upsampled 16kHz swbd audio to compute features -- fbanks
here -- we are probably wasting the 8kHz~16kHz part in the feature, as it
contains no information except noise. By speculation, will it degrade the
performance?
—
Reply to this email directly, view it on GitHub
https://github.com/k2-fsa/icefall/pull/1146#issuecomment-1760068890, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AOON42HNIKBZT5U3SVME5HTX7ATMBANCNFSM6AAAAAAZT4AFZE
.
You are receiving this because you modified the open/close state.Message
ID: @.***>

Yes, I agree. Looking forward to the updates.

Dear huangruizhe,
Sorry for kept you waiting, a new narrowband setup is created
https://github.com/k2-fsa/icefall/pull/1391, PR is currently pending
results from the latest experiments.
Stay tuned!
best
jin
On Fri, Oct 13, 2023 at 2:04 AM huangruizhe @.***>
wrote:

Yes, I agree. Looking forward to the updates.
—
Reply to this email directly, view it on GitHub
https://github.com/k2-fsa/icefall/pull/1146#issuecomment-1760114666, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AOON42AEGR2W44ONTSV2NQ3X7AWMBANCNFSM6AAAAAAZT4AFZE
.
You are receiving this because you modified the open/close state.Message
ID: @.***>


HTML Format does not work with attributes

VSCode Version: Code 1.8.1 (ee428b0eead68bf0fb99ab5fdc4439be227b6281, 2016-12-19T14:42:49.304Z)
OS Version: Darwin x64 16.3.0
Extensions:

Extension
Author
Version

Steps to Reproduce:

Create a file with the extension html and open in code
Add the following lines:

    <meta http-equiv="content-type" content="text/html; charset=us-ascii">

        <col width="100" />

                Week 31, Monday 1 August 2016

....

The last tag in this example is not aligned correctly. Any tag with attributes is left aligned.

I think it's a dupe of #18081 and the format is broken due to the style attribute in your tag.
The issue seems corrected in vscode-insiders version.

Thanks, this indeed seems to be a duplicate.


How can i encrypt an existed plain db with data already in it?

Hi, I try to open an existed plain db with data, but when i connect, there is error "NOTADB"
I wonder if i need to encrypt the db first, so i tried many api from sqlite-jdbc-crypt but failed
there this some ways to encrypt an existed db with original sqlcipher phase i know:
$ ./sqlcipher plaintext.db
sqlite> ATTACH DATABASE 'encrypted.db' AS encrypted KEY 'testkey';
sqlite> SELECT sqlcipher_export('encrypted');
sqlite> DETACH DATABASE encrypted;
i wonder whether i can do the similar thing with [sqlite-jdbc-crypt] sdk?
what i want to do is :

encrypt an existed plain db
reserve the data from plain db
open db and connect db with cipher crypt

Expect your reply, thank you very much!

Hello,
Opening a plain (not encrypted) database should not be an issue. sqlite-jdbc-crypt is mainly tested with plain databases.
I see you are using sqlcipher, all options for that cipher are documented here. You can use the  SQLiteMCSqlCipherConfig class to help you configure the connection to the (encrypted or not) database in your java source code.
The general key encryption manipulations are documented here : https://github.com/Willena/sqlite-jdbc-crypt/blob/master/USAGE.md#encryption-key-manipulations; If you are configuring the connection using helper configuration classes, like SQLiteMCChacha20Config, SQLiteMCConfig, SQLiteMCRC4Config, SQLiteMCSqlCipherConfig, SQLiteMCWxAES128Config or SQLiteMCWxAES256Config step 2 of the previous instructions is automatically done.
The README files on this repository are a little bit messed up, make sure you are using this dependency to use encryption capabilities.
<dependency>
  <groupId>io.github.willena</groupId>
  <artifactId>sqlite-jdbc</artifactId>
  <version><IP_ADDRESS></version>
</dependency>

Note: I would back-up (copy) the original file before doing this kind of operation.

Thanks very much for your kindly reply first.
I used the previous version, here is my pom:

io.github.willena
sqlite-jdbc
<IP_ADDRESS>

And I have tried your way before:
try {
String url = "jdbc:sqlite:C:/sqlite/test.db";
SQLiteMCSqlCipherConfig config = SQLiteMCSqlCipherConfig.getV3Defaults().build();
Connection connection = config.createConnection(url);
}
In this way I can connect my plain db (test.db),
but when I tried to encrypt it with key, it occurs connection error:
SQLiteMCSqlCipherConfig config = SQLiteMCSqlCipherConfig.getV3Defaults().withKey("111111").build();
the error is "org.sqlite.SQLiteException": [SQLITE_NOTADB] File opened that is not a database file (file is not a database)
Is it for this reason for wrong pom version or my coding way?
What my confusion is, whether I can just use sqlite-jdbc-crypt and java code to achieve my goal:

I have a test.db (exist plain db, with data already in)
Connect the db
Encrypt the db by sqlite-jdbc-crypt and java code ,automatically, using my custom key (maybe generate a new encrypted db? I saw somewhere , it says sqlcipher can't encrypt a plain db directly, only by generating a new db and transfer data from the old db to it)
Use as usual
Keep the original data of plaint db (test.db) during the whole process

Currently I have achieved the goal by using original sqlcipher phase, but I want to change to coding way.

Hello,

but when I tried to encrypt it with key, it occurs connection error:
SQLiteMCSqlCipherConfig config = SQLiteMCSqlCipherConfig.getV3Defaults().withKey("111111").build();
the error is "org.sqlite.SQLiteException": [SQLITE_NOTADB] File opened that is not a database file (file is not a database)
Is it for this reason for wrong pom version or my coding way?

The code is indeed not correct; To encrypt an existing plain database with data:

You must open the database with the cipher configuration without setting the key.
Connection connection = SQLiteMCSqlCipherConfig.getV3Defaults().build().createConnection(url);
Manually execute the PRAGMA rekey statement (as described here https://github.com/Willena/sqlite-jdbc-crypt/blob/master/USAGE.md#encrypt-a-plain-database) :
connection.createStatement().execute(String.format("PRAGMA rekey=%s", yourKey));

After the connection to the DB is closed, you can use a configuration that sets the key and use the database as usual:
SQLiteMCSqlCipherConfig.getV3Defaults().withKey("111111").build()

it says sqlcipher can't encrypt a plain db directly, only by generating a new db and transfer data from the old db to it

The implementation in this library is not based on sqlcipher source code, I cannot guaranty having the same behavior. The library only provides the cipher primitives and function to be compatible with sqlcipher encryption and sqlcipher produced databases.

Keep the original data of plaint db (test.db) during the whole process

Just copy the file before encrypting it, it would be easier. After the rekey operation, the original file will be altered !

ok,i'll try,thanks!


Do not template out k3s configuration when k0s is choosen

k0s is being worked on, this is to remind myself to try and implement this
https://github.com/onedr0p/flux-cluster-template/pull/1123

This will likely require some major refactoring to the templating logic.


I'd add some more information on actions that should be taken to better improve the efficiency of Windows.

It took me two days to realize why my computer had slowed down, I don't blame you for it but I do blame my ignorance for not remembering to disable the SmartScreen.
Make sure this is turned off, all users, before doing anything else:

None of my programs had worked until I did that.

When you run an unrecognized app, SmartScreen checks to see if the app might be malicious, which could cause a delay, especially if the app needs to be analyzed further or if there's an issue with the SmartScreen service itself.

I will test this for Windows 10 and see how it goes