Start Inflight Exit should be input tx type agnostic

What
In start IFE PR: https://github.com/omisego/plasma-contracts/pull/196, it directly uses PaymentTransaction as input transaction. We would like to not hardcode input tx in the PaymentInflightExitable.
Why
We want to be able to not audit again the main code when we are adding DEX feature or extend to any other tx that can be input of Payment transaction.
Proposal solution
We could probably have a verifyStateTransition predicate for IFE. This would basically check given input txs and the tx with the proof/witness, the state transition in such transaction is valid.
We would swap the predicate when we are changing/adding new input txs. Dependency tx types can be hardcoded there.
Successful Critieria

The PaymentInflightExitable should not hardcode PaymentOuput as input. (one example here, should be more in current code base)
In PaymentExitDataModel, inputs of InflightExit should not be PaymentOutput: code here. (I guess need to be sth like bytes, or if there is better idea?)

[side note]
I have a feeling this verifier would need to return the youngestUtxo (potentially more?). Something similar to our ERC20 deposit verifier: https://github.com/omisego/plasma-contracts/blob/master/plasma_framework/contracts/src/vaults/verifiers/Erc20DepositVerifier.sol#L14

In PaymentExitDataModel, inputs of InflightExit should not be PaymentOutput

When I was writing piggybackInFlightExit, I have this idea of using another struct that is defined in this InFlightExit file. So this new struct would become our interface that all input tx need to be able to provide data to:
   struct WithdrawData {
        address payable exitTarget;
        address token;
        uint256 amount;
    }

    struct InFlightExit {
        uint256 exitStartTimestamp;
        uint256 exitMap;
        uint256 position;
        WithdrawData[MAX_INPUT_NUM] inputs;
        WithdrawData[MAX_OUTPUT_NUM] outputs;
        address payable bondOwner;
        uint256 oldestCompetitorPosition;
    }

my wip piggyback branch code: https://git.io/fjQAN

[side note]
I have a feeling this verifier would need to return the youngestUtxo (potentially more?). Some construction similar to our ERC20 deposit verifier: code

@boolafish It looks hard to work around not providing input utxos positions when starting IFE. As we have those utxoposes, we can find the youngest just by comparing between them, so no need to return them from verifier.

How much do we want to abstract from wire transaction format?
If we want to take that far, we should probably provide uint256[] inputTxsTypes as another argument to start in-flight exit.
Based on those input tx types, a concrete StateTransitionVerifier (predicate to implement in this issue) could query another abstraction (let's say Transaction interface) about transaction's inputs / outputs. Tomorrow I should have some pseudo-code to illustrates that, I will keep you updated @boolafish.

so no need to return them from verifier.

Ah...you're right on this. And in fact, youngest position has nothing to do with the state transition verification anyway.

a concrete StateTransitionVerifier (predicate to implement in this issue) could query another abstraction (let's say ITransaction interface, in fact it's implementations for concrete tx types) about transaction's inputs / outputs to get what it needs to verify that transition is correct (no overspending, etc.).

Looking at the description I am confused actually. Then how is the StateTransitionVerifier different with ITransaction ? Seems like doing the same verification?
Yeah, if you got anything to show the concept please let me know. Or even just the interface that you're aiming to do would be good.


experiment previews

[ ] on explore page
[ ] on main page

@regexBuster I'm going to split this into two separate issues since we might do things differently on the home and explore pages

alright. got all my stuff working again so that's a plus

the branch has been updated to have images appear. they look a little wild due to some cropping issues from the links doc. also, links are missing because  wasn't scaling nicely

always more work to be done. however, this branch now has 6 images that also have links to their labs

I'll just merge it for now @regexBuster

Never mind, not going to merge it right now

links are done and images look good. feel free to double check and merge. onwards to the milestone!

merged


E5105: Error while calling lua chunk

Good day. First of all want to thank you for the nice idea to implement such a plugin.
I've tried to install the plugin via Plug and just was following the readme page. But whatever I try (install with Plug or executing make command before my usage) the following error is popping up:
/home/idanko/.config/nvim/plugged/sql.nvim/lua/sql/defs.lua:6: attempt to index field 'g' (a nil value)
...o/.config/nvim/plugged/lispdocs.nvim/lua/lispdocs/db.lua:33: attempt to index local '_local_0_' (a nil value)
E5105: Error while calling lua chunk: ....config/nvim/plugged/lispdocs.nvim/lua/lispdocs/init.lua:33: attempt to index local '_local_0_' (a nil value)
Press ENTER or type command to continue

What did I miss to install or configure?
I already installed sqlite (sudo apt install sqlite3 libsqlite3-dev) and conjure itself works without any errors or warnings.
Setup & environment
$ nvim --version                                                                                [0:08:33]
NVIM v0.4.4
Build type: Release
LuaJIT 2.1.0-beta3
Compilation: /usr/bin/cc -g -O2 -fdebug-prefix-map=/build/neovim-aKIhK1/neovim-0.4.4=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=1 -DDISABLE_LOG -Wdate-time -D_FORTIFY_SOURCE=1 -O2 -DNDEBUG -DMIN_LOG_LEVEL=3 -Wall -Wextra -pedantic -Wno-unused-parameter -Wstrict-prototypes -std=gnu99 -Wshadow -Wconversion -Wmissing-prototypes -Wimplicit-fallthrough -Wvla -fstack-protector-strong -fno-common -fdiagnostics-color=always -DINCLUDE_GENERATED_DECLARATIONS -D_GNU_SOURCE -DNVIM_MSGPACK_HAS_FLOAT32 -DNVIM_UNIBI_HAS_VAR_FROM -I/build/neovim-aKIhK1/neovim-0.4.4/build/config -I/build/neovim-aKIhK1/neovim-0.4.4/src -I/usr/include -I/usr/include/lua5.1 -I/build/neovim-aKIhK1/neovim-0.4.4/build/src/nvim/auto -I/build/neovim-aKIhK1/neovim-0.4.4/build/include
Compiled by<EMAIL_ADDRESS>
Features: +acl +iconv +tui
See ":help feature-compile"

   system vimrc file: "$VIM/sysinit.vim"
  fall-back for $VIM: "/usr/share/nvim"

Run :checkhealth for more info

$ sqlite3 --version                                                                                [0:10:53]
3.31.1 2020-01-27 19:55:54 3bfa9cc97da10598521b342961df8f5f68c7388fa117345eeb516eaa837balt1

$ lsb_release -a                                                                                [0:11:23]
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 20.04.2 LTS
Release:        20.04
Codename:       focal

Minimal vimrc (init.vim) (assumes Plug is installed):
call plug#begin()
Plug 'Olical/conjure'
Plug 'tami5/sql.nvim'
Plug 'tami5/lispdocs.nvim'
call plug#end()

Steps to reproduce

run cider-repl
run neovim
open clj buffer
put the cursor on a first word
hit <leader>hh

Expected behaviur

The vim buffer with preformated text is opened and contains documentation from https://clojuredocs.org/clojure.core/first

Actual behavior

the following error message is shown

/home/idanko/.config/nvim/plugged/sql.nvim/lua/sql/defs.lua:6: attempt to index field 'g' (a nil value)
...o/.config/nvim/plugged/lispdocs.nvim/lua/lispdocs/db.lua:33: attempt to index local '_local_0_' (a nil value)
E5105: Error while calling lua chunk: ....config/nvim/plugged/lispdocs.nvim/lua/lispdocs/init.lua:33: attempt to index local '_local_0_' (a nil value)
Press ENTER or type command to continue

@tami5 if you need more input to debug with let me know

@tami5 if you need more input to debug with let me know

I'm truly sorry, I totally missed the bug report, yah that shouldn't happen. I'll do some testing in few hours and get back to you. I'm glad you like: the concept so far.

Oh I see the issue, @idanko you need a nightly version of neovim for this to work okay. Tell me if updating neovim fixed the issue

@tami5 yes, I can confirm that switching to NVIM v0.5.0-dev resolves the issue. But in general, it might hurt the user experience since lots people stick to a stable version.

@tami5 yes, I can confirm that switching to NVIM v0.5.0-dev resolves the issue. But in general, it might hurt the user experience since lots people stick to a stable version.

Nice, Yah unfortunately all the cool features and advancements in nvim 0.5.0 is required for this plugin to work and for sql.nvim as well.
Hopefully neovim core will release 0.5.0 in following weeks.
Play around with it feel free to open issues if you have ideas or issues.
btw way if you are using telescope you can load telescope extension and run Telescope lispdocs to fuzzy search


[FEATURE] Set flow-framework plugin 3.0.0 baseline JDK version to JDK-21

Is your feature request related to a problem? Please describe
Set flow-framework plugin 3.0.0 baseline JDK version to JDK-21
Describe the solution you'd like
See please https://github.com/opensearch-project/OpenSearch/issues/10745
Related component
Build
Describe alternatives you've considered
N/A
Additional context
See please https://github.com/opensearch-project/OpenSearch/issues/14011

Fixed in #730


Use srcdeps instead of Maven SNAPSHOTs

we need to test against the very latest bits of quarkus so I won't remove the snapshot profile that will be de activated soon in any case


Can't import htmls with different parameters

For example:
@@include("block-list", {
"title1": "title1",
"title2": "title2"
})
@@include("block-list", {
"title1": "title1"
})
Result:
title1 title2
title1 @@title2
If I use the If statement
@@include("block-list", {
"title1": "title1",
"title2": "title2"
})
@@include("block-list", {
"title1": "title1"
})
and the block-list content:
@@if (typeof title1 != "undefined") { @@title1 }
@@if (typeof title2 != "undefined") { @@title2 }
the result is same:
title1 title2
title1 @@title2
In my opinion if input a html then input that again (with other parameters), the values don't reset, only inherit.

Found a solution:
@@if (text == "@text") {
@@text
}
But I don't understand why work this...

Experiencing a similar issue when executing the following code:
@@include("block-list", {
"title": "title1"
})
@@include("block-list", {
"title": "title2"
})
block-list content:
@@title
@@if (title === 'title1') {
// Do something for 1
} @@if (title === 'title2') {
// Do something for 2
}
Result:
title1
// Do something for 2
title2
// Do something for 2
Thus when calling the same include with different parameters, it will use the last known parameters for every include.

Reference on #62.
This issue could be closed.


NS and SOA records

Hi,
General question, but especially relevant to OctoDNS users.
Should I match the NS and SOA records between the different providers we use?
Should I create the records in the YAML file and then sync them back to both providers or maybe these records can be ignored and we just need to add the DNS servers from both providers to the registrar?
Thanks

These are relevant issues:
https://github.com/github/octodns/issues/38
https://github.com/github/octodns/issues/39
I'd say having them in sync is a good idea, so you don't have differences between providers. However there are definitely differences between providers in their features, eg. Dyn you cannot remove their nameservers, but you can add some. Some providers do not allow you to change the SOA, eg DigitalOcean
The one SOA option I have seen that you cannot usually control is the Serial, so those would definitely be out of sync, but that's only really relevant to secondaries. If you're using OctoDNS you probably aren't using secondaries though.
If you're doing multi-provider, you would have your name servers from both providers in the registar, and configured in the providers, you would want both name servers, eg. Dyn in NS1, and NS1 in Dyn.

There are 2 WIP PRs (that have were created long ago) for SOA, https://github.com/github/octodns/pull/45,  and NS, https://github.com/github/octodns/pull/53, record management. The SOA one probably isn't going anywhere. I ran into too many problems with providers support of managing them and couldn't really come up with a cohesive plan for them.
The NS record PR can probably ship with a bit of updating and care, though it's a VERY sensitive change and the behaviors of providers there are less than idea, some will let you add more NS records, but not remove their own etc. That usually isn't an issue, but could result in situations where the resulting values don't match what's configured.

Thanks!
I reviewed the issues you mentioned, but I still don't understand what the recommended configuration.
Currently we have a single provider. I was inspired by the post in the engineering blog and want to add a secondary provider and "DNS as code". We don't have secondaries, meaning that all the records for a specific domain are managed by the same provider.
If it helps, I don't mind updating a few NS records manually. I'm not sure what you recommend regarding NS and SOA records and would appreciate clarification.

If you have multiple providers configured to serve your records it is best to have all of the name servers include in both the registrar and zone ROOT NS records.
github.com's registrar records:
otter:~ ross$ dig NS github.com. @ns1.p16.dynect.net.

; <<>> DiG 9.8.3-P1 <<>> NS github.com. @ns1.p16.dynect.net.
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30944
;; flags: qr aa rd; QUERY: 1, ANSWER: 8, AUTHORITY: 0, ADDITIONAL: 0
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;github.com.			IN	NS

;; ANSWER SECTION:
github.com.		900	IN	NS	ns-421.awsdns-52.com.
github.com.		900	IN	NS	ns3.p16.dynect.net.
github.com.		900	IN	NS	ns4.p16.dynect.net.
github.com.		900	IN	NS	ns1.p16.dynect.net.
github.com.		900	IN	NS	ns-1283.awsdns-32.org.
github.com.		900	IN	NS	ns-1707.awsdns-21.co.uk.
github.com.		900	IN	NS	ns-520.awsdns-01.net.
github.com.		900	IN	NS	ns2.p16.dynect.net.

;; Query time: 21 msec
;; SERVER: <IP_ADDRESS>#53(<IP_ADDRESS>)
;; WHEN: Tue Nov 14 13:29:12 2017
;; MSG SIZE  rcvd: 248

octoDNS doesn't support editing either location (currently) so they will need to be hand managed as you mention.
It was recommended to us to include all name severs in both locations. We don't have anything concrete/presentable (I hope that will change at some point) but in lightweight testing we've found that some DNS resolvers do look to and use/prefer the ROOT NS records for a zone. It's not absolutely required, but it seems to be a good idea.
There was a talk at Velocity NYC by @lexelby that might be of interest as well: https://www.youtube.com/watch?v=Y1frKCKL8xA

I think you had a copy + pasta error :)
Registrar:
-> whois github.com | grep -e "^Name Server"
Name Server: ns-520.awsdns-01.net
Name Server: ns-1707.awsdns-21.co.uk
Name Server: ns1.p16.dynect.net
Name Server: ns3.p16.dynect.net
Name Server: ns-1283.awsdns-32.org
Name Server: ns-421.awsdns-52.com
Name Server: ns2.p16.dynect.net
Name Server: ns4.p16.dynect.net

com. nameservers
-> dig NS github @$(dig NS com. +short | tail -n 1)

; <<>> DiG 9.9.7-P3 <<>> NS github @d.gtld-servers.net.
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 38919
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 13, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;github.				IN	NS

;; AUTHORITY SECTION:
.			518400	IN	NS	k.root-servers.net.
.			518400	IN	NS	l.root-servers.net.
.			518400	IN	NS	m.root-servers.net.
.			518400	IN	NS	a.root-servers.net.
.			518400	IN	NS	b.root-servers.net.
.			518400	IN	NS	c.root-servers.net.
.			518400	IN	NS	d.root-servers.net.
.			518400	IN	NS	e.root-servers.net.
.			518400	IN	NS	f.root-servers.net.
.			518400	IN	NS	g.root-servers.net.
.			518400	IN	NS	h.root-servers.net.
.			518400	IN	NS	i.root-servers.net.
.			518400	IN	NS	j.root-servers.net.

;; Query time: 40 msec
;; SERVER: <IP_ADDRESS>#53(<IP_ADDRESS>)
;; WHEN: Tue Nov 14 20:18:43 PST 2017
;; MSG SIZE  rcvd: 246

Thanks. I'll update the NS records in both providers manually and ignore the SOA record.
There are many tools to check the DNS configuration online after the change in the registrar. Can you recommend tools to check the configuration by specifying the name servers before applying the change to the registrar?

Google used to have a decent Dig service, but they removed the ability to specify a nameserver to query.
I'm partial to just using whois and dig. nslookup on windows would be equivalent.

Hi,
I used https://zonemaster.net for the tests. The domain I'm testing is tccsetup dot com. I'm getting error which says The smallest possible legal referral packet is larger than 512 octets (it is 536). I tried to read about that error but couldn't find anything valuable.
Any idea what the issues is and how to fix that?
Thanks

The smallest possible legal referral packet is larger than 512 octets (it is 536).

Not familiar with that. I checked a few other (octoDNS managed split domains) and don't get that error for them. Some quick googling didn't turn up anything for me. You might try contacting the people who own that site and see what they say. Maybe it's just a non-standard error message/warning. No clue if they'd be responsive or not, but might be worth a shot.


Camera always offline on CameraUI/cameras or CamView but recordings and notifications working

The camera always offline on CameraUI/Cameras, CameraUI/Dashboard, or CameraUI/CamView but recordings and notifications working. The camera feed and still photos working on the Home app as well. Tested on Firefox, Chromium, and Safari browsers.
{             "name": "CameraUI",             "port": 8181,             "auth": "form",             "debug": true,             "reset": false,             "http": {                 "active": false,                 "port": 7777,                 "localhttp": false             },             "options": {                 "videoProcessor": "ffmpeg"             },             "cameras": [                 {                     "name": "Camera1",                     "motion": true,                     "switches": true,                     "doorbell": true,                     "motionTimeout": 5,                     "videoConfig": {                         "source": "-i http://<IP_ADDRESS>/mjpeg/1",                         "stillImageSource": "-i http://<IP_ADDRESS>/jpg",                         "maxStreams": 5,                         "maxHeight": 720,                         "maxWidth": 1280,                         "audio": false,                         "maxFPS": 24,                         "debug": true                     }                 }             ],             "platform": "CameraUI"         }

Environment

Node.js Version: v10.21
Homebridge Version: v1.1.7
Camera UI Version: v3.1.5
Operating System: Ubuntu 20.04
Browser: Chromium

@rashmendis
does it work if you give the camera source a port?
The ping takes 554 as default port to check if a camera is online/offline if no port is given in source.

Fixed with v3.2.2

Hello,
I have homebridge-camera-ui v3.3.0 (2021-03-22) but I am still getting this same error.
https://tinyurl.com/yelyfezp
Thanks
Shahzad Godil


OOM issue

Hi, I try to use my own data to train lara, and I find during training the GPU memory gradually increases and cause OOM, I didn't change any network, could you please give me some advice on how to fix this? Thanks a lot!

I notice it usually broken  at gs_renderer(), ssim() and backward, but I can’t be sure that OOM will only happen in these places...

Thanks! Which type of GPU and how many GPUs are you using for the model training?

I use 4x H100 with 80gb for training, the batch size is 3, I try to set smaller bs but not help. And my data are albedo that without light clue, but it's still wired to cause the OOM issue

It's weird, Batch size of 3 should be able to fit into A100-40G, but I don't have H100 in hand for testing. You may need to double check the version compatibility (pytorch lightning, driver, cuda and Gaussian Splating)

I use torch2.1.2+cuda12.1 and pytorch-lightning is 2.1.3, the GS render is installed from your given repo, I guess it may not be the version problem

Good question, I think this is mainly due to the low-volume resolution. One possible way is to increase the volume resolution, together with voxel filtering and sparse convolution.

Thanks for replying! Now I have used my own data to train 30 epochs on Lara, and the psnr is roughly around 24 when training, but the mesh in test is very poor, and the input 4 view rendered by gs reconstruction in the visualization looks at the quality is okay, please ask what could be the reason for this, thank you in advance.

https://github.com/user-attachments/assets/c58d2365-d420-4e29-82db-d50a823083a5


Use unnumbered relative links.

This allows the outline order to change without invalidating the links.
Signed-off-by: Drew Moseley<EMAIL_ADDRESS>

@oleorhagen  this is the same content I mentioned on slack in proper PR form this time for the master branch.


other ports and using CRLF as line terminator

Hi.
Nice little script.
I improved your script to support ports other than 80. Additionally you should use CRLF as Line-Terminator due to a security-fix in apache2.
Unfortunately i can only access github via browser i cannot send a pull request (did not work from here, seemingly) so i can only send the lines via Issue:
burl() {
shopt -s extquote

export LC_ALL=C
unset headers_read

host=${1%%/*}
path=${1#*/}

port=${host#*:}
host=${host%%:*}

[[ $path == $host ]] && path=""
[[ $port == $host ]] && port="80"

exec 3<>/dev/tcp/${host}/${port}

printf "GET /${path} HTTP/1.1\r\nHost: ${host}\r\nUser-Agent: bURL/Bash ${BASH_VERSION}\r\n\r\n" >&3

Hi, thank you for your interest in my ridiculous script :)
I've implemented support for alternative HTTP port using option -p <port>.


Add input which show log message or not🚀

Description
@HarelM want to hide log message.

https://github.com/bbonkr/get-version-action/pull/309

THANKS!!!
I just ran a new build and this is working as expected, no warnings and no notice! 😊

@HarelM
Thank you for taking time to check it out with me. 😀


1400 - Key issuer for Certificates

This is not nearly done. Currently, i saved it inside the contracts service. But that's not right, as more services might use it. So im planning on moving it into its own directory.

Is this still relevant?

I think it would be nice with some nice test to cover this

From the workshop with Project Origin and Elia we learned that this is not the right principle for the private/public key. Our understanding that there needs to be private/public key per legal entity (company or a human) is incorrect. It needs to be to a private/public key per slice in a certificate.
Martin Schmidt proposed a solution where we can calculate from a seed + extra information. This would mean that we do not need to store the keys, but can calculate them when needed.
But this leaves this us in a situation where we should re-think what we do. This PR and the task should be closed/abandoned


add clearModelData action type/creator/reducer case

fixes #24

@devvmh I have not seen any problems.

@lATAl this is published in 4.3.0

Thanks! 👍


Intel CAVS: tests/lib/mem_block/ failed, caused by too frequent log output.

Describe the bug
On Intel_adsp_cavs platform, tests/lib/mem_block/ failed due to missing the early log like below:
We manually increase the HP_SRAM_WIN3_SIZE in soc/xtensa/intel_adsp/common/include/cavs-mem.h:line#26 from 0x2000 to 0x4000 can resolve this issue temporarily, but we are not sure if this new value is safe, need further reference to spec or other.
Prefixing /home/ztest/zephyrproject/zephyr/twister-out/intel_adsp_cavs18/tests/lib/mem_blocks/lib.mem_blocks/zephyr/zephyr.ri with manifest /home/ztest/zephyrproject/zephyr/twister-out/intel_adsp_cavs18/tests/lib/mem_blocks/lib.mem_blocks/zephyr/zephyr.ri.xman

DEBUG   - DEVICE: --
DEBUG   - DEVICE: 4  A3 0x9e01f560
DEBUG   - DEVICE: E:  **  A4 0x1  A5 0x60020  A6 0x9e01f628  A7 0x60c20
DEBUG   - DEVICE: E:  **  A8 0x1  A9 (nil) A10 0x1 A11 0x9e01f5dc
DEBUG   - DEVICE: E:  ** A12 0x9e01f000 A13 0x57 A14 0xbe01c07b A15 0x10
DEBUG   - DEVICE: E:  ** LBEG (nil) LEND (nil) LCOUNT (nil)
DEBUG   - DEVICE: E:  ** SAR 0x4
DEBUG   - DEVICE:
DEBUG   - DEVICE:
DEBUG   - DEVICE: Backtrace:0xBE0138EF:0xBE01C140 0xBE012E45:0xBE01C150 0xBE013402:0xBE01C170 0xBE010BD9:0xBE01C1A0 0xBE0144DA:0xBE01C1D0 0xBE011E4B:0xBE01C1F0
DEBUG   - DEVICE:
DEBUG   - DEVICE: E: >>> ZEPHYR FATAL ERROR 4: Kernel panic on CPU 0
DEBUG   - DEVICE: E: Current thread: 0x9e01f000 (test_mem_block_invalid_params_p)
DEBUG   - DEVICE: Caught system error -- reason 4
DEBUG   - DEVICE: PASS - test_mem_block_invalid_params_panic_1 in 0.3 seconds

The log output after we changed HP_SRAM_WIN3_SIZE to 0x4000 is:
Prefixing /home/ztest/zephyrproject/zephyr/twister-out/intel_adsp_cavs18/tests/lib/mem_blocks/lib.mem_blocks/zephyr/zephyr.ri with manifest /home/ztest/zephyrproject/zephyr/twister-out/intel_adsp_cavs18/tests/lib/mem_blocks/lib.mem_blocks/zephyr/zephyr.ri.xman

DEBUG   - DEVICE: --
DEBUG   - DEVICE: ***** delaying boot 500ms (per build configuration) *****
DEBUG   - DEVICE: Running TESTSUITE lib_mem_block_test
DEBUG   - DEVICE: ===================================================================
DEBUG   - DEVICE: START - test_mem_block_alloc_free
DEBUG   - DEVICE: PASS - test_mem_block_alloc_free in 0.1 seconds
DEBUG   - DEVICE: ===================================================================
DEBUG   - DEVICE: START - test_mem_block_alloc_free_alt_buf

To Reproduce
Steps to reproduce the behavior:

twister -W --hardware-map ~/cavs/cavs.map --device-testing -v  -T tests/lib/mem_blocks/ -vv -x=CONFIG_BOOT_DELAY=500

Expected behavior
Test should pass.
Environment (please complete the following information):

OS: Linux
Commit b034711f595ec51f2055cc7a623d4668c116d169

Checking the spec to decide if the increased size is safe.
And we also tried to increase the frequency of reading logs from winstream buffer in hope that logs can be extracted out before wrapping. But no obvious effect.

We decided to remove the excessive log output. May be fixed #47779.

@smrtos Can you please confirm that this test actually passes and only caputering the results is not working correctly, if so, then it can be closed as a non-bug in the test itself, and point to the CAVS issue and the test enahancement. But please you mark this internally and do not open the same bug again.

Yes, this is a non-bug in the test itself. I am closing this one and track it with https://github.com/zephyrproject-rtos/zephyr/issues/47833. Thanks.

Fixed by:
https://github.com/zephyrproject-rtos/zephyr/pull/49721
https://github.com/zephyrproject-rtos/zephyr/pull/49546


Compilation fails on latest nightly (e77366b57 2023-05-16)

Hi. Thanks for your crate.
I notice that staticvec is not building with latest nightly:
❯ rustc -V
rustc 1.71.0-nightly (e77366b57 2023-05-16)
❯ cargo build
    Updating crates.io index
   Compiling staticvec v0.11.9 (/home/esteban/dev/staticvec)
warning: the feature `const_ptr_read` has been stable since 1.71.0-nightly and no longer requires an attribute to enable
  --> src/lib.rs:45:3
   |
45 |   const_ptr_read,
   |   ^^^^^^^^^^^^^^
   |
   = note: `#[warn(stable_features)]` on by default

error: ~const can only be applied to `#[const_trait]` traits
    --> src/lib.rs:1420:26
     |
1420 |   where T: Copy + ~const PartialOrd {
     |                          ^^^^^^^^^^

error: ~const can only be applied to `#[const_trait]` traits
    --> src/lib.rs:1455:26
     |
1455 |   where T: Copy + ~const PartialOrd {
     |                          ^^^^^^^^^^

error: const `impl` for trait `Clone` which is not marked with `#[const_trait]`
  --> src/heap/heap_trait_impls.rs:25:37
   |
25 | impl<T: Copy, const N: usize> const Clone for StaticHeap<T, N> {
   |                                     ^^^^^
   |
   = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
   = note: adding a non-const method body in the future would be a breaking change

error: const `impl` for trait `Default` which is not marked with `#[const_trait]`
  --> src/heap/heap_trait_impls.rs:47:36
   |
47 | impl<T: Ord, const N: usize> const Default for StaticHeap<T, N> {
   |                                    ^^^^^^^
   |
   = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
   = note: adding a non-const method body in the future would be a breaking change

error: const `impl` for trait `IntoIterator` which is not marked with `#[const_trait]`
   --> src/heap/heap_trait_impls.rs:199:31
    |
199 | impl<T, const N: usize> const IntoIterator for StaticHeap<T, N> {
    |                               ^^^^^^^^^^^^
    |
    = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
    = note: adding a non-const method body in the future would be a breaking change

error: const `impl` for trait `IntoIterator` which is not marked with `#[const_trait]`
   --> src/heap/heap_trait_impls.rs:225:35
    |
225 | impl<'a, T, const N: usize> const IntoIterator for &'a StaticHeap<T, N> {
    |                                   ^^^^^^^^^^^^
    |
    = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
    = note: adding a non-const method body in the future would be a breaking change

error: const `impl` for trait `IntoIterator` which is not marked with `#[const_trait]`
   --> src/heap/heap_trait_impls.rs:235:35
    |
235 | impl<'a, T, const N: usize> const IntoIterator for &'a mut StaticHeap<T, N> {
    |                                   ^^^^^^^^^^^^
    |
    = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
    = note: adding a non-const method body in the future would be a breaking change

error: const `impl` for trait `From` which is not marked with `#[const_trait]`
  --> src/string/string_errors.rs:75:12
   |
75 | impl const From<DecodeUtf16Error> for StringError {
   |            ^^^^^^^^^^^^^^^^^^^^^^
   |
   = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
   = note: adding a non-const method body in the future would be a breaking change

error: const `impl` for trait `From` which is not marked with `#[const_trait]`
  --> src/string/string_errors.rs:82:12
   |
82 | impl const From<Utf8Error> for StringError {
   |            ^^^^^^^^^^^^^^^
   |
   = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
   = note: adding a non-const method body in the future would be a breaking change

error: const `impl` for trait `From` which is not marked with `#[const_trait]`
  --> src/string/string_errors.rs:89:28
   |
89 | impl<const N: usize> const From<CapacityError<N>> for StringError {
   |                            ^^^^^^^^^^^^^^^^^^^^^^
   |
   = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
   = note: adding a non-const method body in the future would be a breaking change

error: const `impl` for trait `AsMut` which is not marked with `#[const_trait]`
  --> src/string/string_trait_impls.rs:39:28
   |
39 | impl<const N: usize> const AsMut<str> for StaticString<N> {
   |                            ^^^^^^^^^^
   |
   = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
   = note: adding a non-const method body in the future would be a breaking change

error: const `impl` for trait `AsRef` which is not marked with `#[const_trait]`
  --> src/string/string_trait_impls.rs:46:28
   |
46 | impl<const N: usize> const AsRef<str> for StaticString<N> {
   |                            ^^^^^^^^^^
   |
   = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
   = note: adding a non-const method body in the future would be a breaking change

error: const `impl` for trait `AsRef` which is not marked with `#[const_trait]`
  --> src/string/string_trait_impls.rs:53:28
   |
53 | impl<const N: usize> const AsRef<[u8]> for StaticString<N> {
   |                            ^^^^^^^^^^^
   |
   = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
   = note: adding a non-const method body in the future would be a breaking change

error: const `impl` for trait `Borrow` which is not marked with `#[const_trait]`
  --> src/string/string_trait_impls.rs:60:28
   |
60 | impl<const N: usize> const Borrow<str> for StaticString<N> {
   |                            ^^^^^^^^^^^
   |
   = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
   = note: adding a non-const method body in the future would be a breaking change

error: const `impl` for trait `BorrowMut` which is not marked with `#[const_trait]`
  --> src/string/string_trait_impls.rs:67:28
   |
67 | impl<const N: usize> const BorrowMut<str> for StaticString<N> {
   |                            ^^^^^^^^^^^^^^
   |
   = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
   = note: adding a non-const method body in the future would be a breaking change

error: const `impl` for trait `Clone` which is not marked with `#[const_trait]`
  --> src/string/string_trait_impls.rs:74:28
   |
74 | impl<const N: usize> const Clone for StaticString<N> {
   |                            ^^^^^
   |
   = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
   = note: adding a non-const method body in the future would be a breaking change

error: const `impl` for trait `Default` which is not marked with `#[const_trait]`
   --> src/string/string_trait_impls.rs:106:28
    |
106 | impl<const N: usize> const Default for StaticString<N> {
    |                            ^^^^^^^
    |
    = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
    = note: adding a non-const method body in the future would be a breaking change

error: const `impl` for trait `Deref` which is not marked with `#[const_trait]`
   --> src/string/string_trait_impls.rs:113:28
    |
113 | impl<const N: usize> const Deref for StaticString<N> {
    |                            ^^^^^
    |
    = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
    = note: adding a non-const method body in the future would be a breaking change

error: const `impl` for trait `DerefMut` which is not marked with `#[const_trait]`
   --> src/string/string_trait_impls.rs:122:28
    |
122 | impl<const N: usize> const DerefMut for StaticString<N> {
    |                            ^^^^^^^^
    |
    = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
    = note: adding a non-const method body in the future would be a breaking change

error: const `impl` for trait `Index` which is not marked with `#[const_trait]`
   --> src/string/string_trait_impls.rs:262:28
    |
262 | impl<const N: usize> const Index<RangeFull> for StaticString<N> {
    |                            ^^^^^^^^^^^^^^^^
    |
    = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
    = note: adding a non-const method body in the future would be a breaking change

error: const `impl` for trait `IndexMut` which is not marked with `#[const_trait]`
   --> src/string/string_trait_impls.rs:271:28
    |
271 | impl<const N: usize> const IndexMut<RangeFull> for StaticString<N> {
    |                            ^^^^^^^^^^^^^^^^^^^
    |
    = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
    = note: adding a non-const method body in the future would be a breaking change

error: const `impl` for trait `AsMut` which is not marked with `#[const_trait]`
  --> src/trait_impls.rs:47:31
   |
47 | impl<T, const N: usize> const AsMut<[T]> for StaticVec<T, N> {
   |                               ^^^^^^^^^^
   |
   = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
   = note: adding a non-const method body in the future would be a breaking change

error: const `impl` for trait `AsRef` which is not marked with `#[const_trait]`
  --> src/trait_impls.rs:54:31
   |
54 | impl<T, const N: usize> const AsRef<[T]> for StaticVec<T, N> {
   |                               ^^^^^^^^^^
   |
   = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
   = note: adding a non-const method body in the future would be a breaking change

error: const `impl` for trait `Borrow` which is not marked with `#[const_trait]`
  --> src/trait_impls.rs:61:31
   |
61 | impl<T, const N: usize> const Borrow<[T]> for StaticVec<T, N> {
   |                               ^^^^^^^^^^^
   |
   = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
   = note: adding a non-const method body in the future would be a breaking change

error: const `impl` for trait `BorrowMut` which is not marked with `#[const_trait]`
  --> src/trait_impls.rs:68:31
   |
68 | impl<T, const N: usize> const BorrowMut<[T]> for StaticVec<T, N> {
   |                               ^^^^^^^^^^^^^^
   |
   = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
   = note: adding a non-const method body in the future would be a breaking change

error: const `impl` for trait `Clone` which is not marked with `#[const_trait]`
   --> src/trait_impls.rs:112:37
    |
112 | impl<T: Copy, const N: usize> const Clone for StaticVec<T, N> {
    |                                     ^^^^^
    |
    = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
    = note: adding a non-const method body in the future would be a breaking change

error: const `impl` for trait `Default` which is not marked with `#[const_trait]`
   --> src/trait_impls.rs:153:31
    |
153 | impl<T, const N: usize> const Default for StaticVec<T, N> {
    |                               ^^^^^^^
    |
    = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
    = note: adding a non-const method body in the future would be a breaking change

error: const `impl` for trait `Deref` which is not marked with `#[const_trait]`
   --> src/trait_impls.rs:161:31
    |
161 | impl<T, const N: usize> const Deref for StaticVec<T, N> {
    |                               ^^^^^
    |
    = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
    = note: adding a non-const method body in the future would be a breaking change

error: const `impl` for trait `DerefMut` which is not marked with `#[const_trait]`
   --> src/trait_impls.rs:169:31
    |
169 | impl<T, const N: usize> const DerefMut for StaticVec<T, N> {
    |                               ^^^^^^^^
    |
    = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
    = note: adding a non-const method body in the future would be a breaking change

error: const `impl` for trait `From` which is not marked with `#[const_trait]`
   --> src/trait_impls.rs:362:37
    |
362 | impl<T: Copy, const N: usize> const From<&[T]> for StaticVec<T, N> {
    |                                     ^^^^^^^^^^
    |
    = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
    = note: adding a non-const method body in the future would be a breaking change

error: const `impl` for trait `From` which is not marked with `#[const_trait]`
   --> src/trait_impls.rs:371:37
    |
371 | impl<T: Copy, const N: usize> const From<&mut [T]> for StaticVec<T, N> {
    |                                     ^^^^^^^^^^^^^^
    |
    = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
    = note: adding a non-const method body in the future would be a breaking change

error: const `impl` for trait `From` which is not marked with `#[const_trait]`
   --> src/trait_impls.rs:389:31
    |
389 | impl<T, const N: usize> const From<[T; N]> for StaticVec<T, N> {
    |                               ^^^^^^^^^^^^
    |
    = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
    = note: adding a non-const method body in the future would be a breaking change

error: const `impl` for trait `From` which is not marked with `#[const_trait]`
   --> src/trait_impls.rs:396:55
    |
396 | impl<T: Copy, const N1: usize, const N2: usize> const From<&[T; N1]> for StaticVec<T, N2> {
    |                                                       ^^^^^^^^^^^^^^
    |
    = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
    = note: adding a non-const method body in the future would be a breaking change

error: const `impl` for trait `From` which is not marked with `#[const_trait]`
   --> src/trait_impls.rs:405:37
    |
405 | impl<T: Copy, const N: usize> const From<&[T; N]> for StaticVec<T, N> {
    |                                     ^^^^^^^^^^^^^
    |
    = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
    = note: adding a non-const method body in the future would be a breaking change

error: const `impl` for trait `From` which is not marked with `#[const_trait]`
   --> src/trait_impls.rs:414:55
    |
414 | impl<T: Copy, const N1: usize, const N2: usize> const From<&mut [T; N1]> for StaticVec<T, N2> {
    |                                                       ^^^^^^^^^^^^^^^^^^
    |
    = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
    = note: adding a non-const method body in the future would be a breaking change

error: const `impl` for trait `From` which is not marked with `#[const_trait]`
   --> src/trait_impls.rs:423:37
    |
423 | impl<T: Copy, const N: usize> const From<&mut [T; N]> for StaticVec<T, N> {
    |                                     ^^^^^^^^^^^^^^^^^
    |
    = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
    = note: adding a non-const method body in the future would be a breaking change

error: const `impl` for trait `Index` which is not marked with `#[const_trait]`
   --> src/trait_impls.rs:495:31
    |
495 | impl<T, const N: usize> const Index<usize> for StaticVec<T, N> {
    |                               ^^^^^^^^^^^^
    |
    = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
    = note: adding a non-const method body in the future would be a breaking change

error: const `impl` for trait `IndexMut` which is not marked with `#[const_trait]`
   --> src/trait_impls.rs:518:31
    |
518 | impl<T, const N: usize> const IndexMut<usize> for StaticVec<T, N> {
    |                               ^^^^^^^^^^^^^^^
    |
    = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
    = note: adding a non-const method body in the future would be a breaking change

error: const `impl` for trait `Index` which is not marked with `#[const_trait]`
   --> src/trait_impls.rs:540:31
    |
540 | impl<T, const N: usize> const Index<Range<usize>> for StaticVec<T, N> {
    |                               ^^^^^^^^^^^^^^^^^^^
    |
    = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
    = note: adding a non-const method body in the future would be a breaking change

error: const `impl` for trait `IndexMut` which is not marked with `#[const_trait]`
   --> src/trait_impls.rs:554:31
    |
554 | impl<T, const N: usize> const IndexMut<Range<usize>> for StaticVec<T, N> {
    |                               ^^^^^^^^^^^^^^^^^^^^^^
    |
    = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
    = note: adding a non-const method body in the future would be a breaking change

error: const `impl` for trait `Index` which is not marked with `#[const_trait]`
   --> src/trait_impls.rs:572:31
    |
572 | impl<T, const N: usize> const Index<RangeFrom<usize>> for StaticVec<T, N> {
    |                               ^^^^^^^^^^^^^^^^^^^^^^^
    |
    = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
    = note: adding a non-const method body in the future would be a breaking change

error: const `impl` for trait `IndexMut` which is not marked with `#[const_trait]`
   --> src/trait_impls.rs:589:31
    |
589 | impl<T, const N: usize> const IndexMut<RangeFrom<usize>> for StaticVec<T, N> {
    |                               ^^^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
    = note: adding a non-const method body in the future would be a breaking change

error: const `impl` for trait `Index` which is not marked with `#[const_trait]`
   --> src/trait_impls.rs:605:31
    |
605 | impl<T, const N: usize> const Index<RangeFull> for StaticVec<T, N> {
    |                               ^^^^^^^^^^^^^^^^
    |
    = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
    = note: adding a non-const method body in the future would be a breaking change

error: const `impl` for trait `IndexMut` which is not marked with `#[const_trait]`
   --> src/trait_impls.rs:615:31
    |
615 | impl<T, const N: usize> const IndexMut<RangeFull> for StaticVec<T, N> {
    |                               ^^^^^^^^^^^^^^^^^^^
    |
    = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
    = note: adding a non-const method body in the future would be a breaking change

error: const `impl` for trait `Index` which is not marked with `#[const_trait]`
   --> src/trait_impls.rs:624:31
    |
624 | impl<T, const N: usize> const Index<RangeInclusive<usize>> for StaticVec<T, N> {
    |                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
    = note: adding a non-const method body in the future would be a breaking change

error: const `impl` for trait `IndexMut` which is not marked with `#[const_trait]`
   --> src/trait_impls.rs:638:31
    |
638 | impl<T, const N: usize> const IndexMut<RangeInclusive<usize>> for StaticVec<T, N> {
    |                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
    = note: adding a non-const method body in the future would be a breaking change

error: const `impl` for trait `Index` which is not marked with `#[const_trait]`
   --> src/trait_impls.rs:651:31
    |
651 | impl<T, const N: usize> const Index<RangeTo<usize>> for StaticVec<T, N> {
    |                               ^^^^^^^^^^^^^^^^^^^^^
    |
    = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
    = note: adding a non-const method body in the future would be a breaking change

error: const `impl` for trait `IndexMut` which is not marked with `#[const_trait]`
   --> src/trait_impls.rs:663:31
    |
663 | impl<T, const N: usize> const IndexMut<RangeTo<usize>> for StaticVec<T, N> {
    |                               ^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
    = note: adding a non-const method body in the future would be a breaking change

error: const `impl` for trait `Index` which is not marked with `#[const_trait]`
   --> src/trait_impls.rs:674:31
    |
674 | impl<T, const N: usize> const Index<RangeToInclusive<usize>> for StaticVec<T, N> {
    |                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
    = note: adding a non-const method body in the future would be a breaking change

error: const `impl` for trait `IndexMut` which is not marked with `#[const_trait]`
   --> src/trait_impls.rs:686:31
    |
686 | impl<T, const N: usize> const IndexMut<RangeToInclusive<usize>> for StaticVec<T, N> {
    |                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
    = note: adding a non-const method body in the future would be a breaking change

error: const `impl` for trait `IntoIterator` which is not marked with `#[const_trait]`
   --> src/trait_impls.rs:708:39
    |
708 | impl<'a, T: 'a, const N: usize> const IntoIterator for &'a StaticVec<T, N> {
    |                                       ^^^^^^^^^^^^
    |
    = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
    = note: adding a non-const method body in the future would be a breaking change

error: const `impl` for trait `IntoIterator` which is not marked with `#[const_trait]`
   --> src/trait_impls.rs:719:39
    |
719 | impl<'a, T: 'a, const N: usize> const IntoIterator for &'a mut StaticVec<T, N> {
    |                                       ^^^^^^^^^^^^
    |
    = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
    = note: adding a non-const method body in the future would be a breaking change

error: const `impl` for trait `IntoIterator` which is not marked with `#[const_trait]`
   --> src/trait_impls.rs:730:31
    |
730 | impl<T, const N: usize> const IntoIterator for StaticVec<T, N> {
    |                               ^^^^^^^^^^^^
    |
    = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const`
    = note: adding a non-const method body in the future would be a breaking change

error: ~const can only be applied to `#[const_trait]` traits
   --> src/utils.rs:177:57
    |
177 | pub(crate) const fn quicksort_internal<T: Copy + ~const PartialOrd>(
    |                                                         ^^^^^^^^^^

warning: `staticvec` (lib) generated 1 warning
error: could not compile `staticvec` (lib) due to 54 previous errors; 1 warning emitted

I'm intending to get this all updated soon.

I actually cannot restore the intended functionality currently, due to this unexpected development:
https://github.com/rust-lang/rust/issues/110395
There's no point in me publishing a modified version without all this stuff as it would be kind of a big regression, so I unfortunately have to just recommend using a nightly compiler version from prior to the change I linked above, for the time being.
I will update to whatever the new syntax is and publish a new version on crates.io as soon as it is possible to do so.

Thanks for your help on this!

Compilation still fails on the latest nightly (2024-05-09). :(


Fix issue with Anthropic not supporting the system role

The Anthropic API doesn't support the System prompt, so the format and role options cause it to fail.
I fixed it by removing the messages with the System role and appending their message to the System request value instead.

awesome, thanks!


Disable logging when using custom environment

GTM pushes a lot of logging spam into the console when using a custom environment. Is there a way to prevent it?

Hi @ZDerekh
can you provide more info and a screenshot about the "logging spam"?
Because I don't have any :)

Closing for the moment due inactivity.


context missing

Hey guys a pretty interesting project, I've been thinking along the same lines though no idea where to start. I've got Celestron Evolution mount and ZWO 178 color version, trying to get this going on nvidia jetson nano 4gig. Would love to connect if at all possible.

Hi @vic4hub, thanks for the note. I suspect you would be the first aside from myself to try to use this code. It's still a work in progress, and I imagine there are some parts of the code that work fine on my hardware but which won't work as well on other hardware, but I will try to help as best I can. What are you hoping to accomplish?

Hey @bgottula, ever since I looked through an eyepiece of a telescope over 6 years ago, I could not stop thinking about how cool it would be to survey the night sky for moving objects. In theory all one needs is an alt/azm electronic scope to be used as a fancy pan/tilt and some hardware for computer vision. I've played around with this idea for a few years now and ruled out some hardware, raspberry pi and different cameras for instance as not powerful/sensitive enough to do real time surveying. To sum this up I'm a bit stuck at getting the next iteration of hardware, namely jetson nano & zwo's implementation of Sony imx178 color, to play nice. Honestly I'm a bit disappointed with zwo software support given the price tag (the least they could do is make it work V4L).

Yeah I hear ya. Getting our ZWO 178 to perform well on a Linux machine ended up being quite a lot of work. Cameras that output RAW
My main goal with this whole project has been to automate tracking of satellites. My vision for this is to be able to set up my hardware anywhere, prepare a list of satellites or other objects to track, hit "go" and have the software do everything except post process the raw imagery (alignment, tracking the objects, managing storage of the raw data). Not quite to full automation but the major pieces are there.
When you say you want to survey for moving objects, do you mean tracking objects that you know about ahead of time or objects that you find just by searching the sky?

When you say you want to survey for moving objects, do you mean tracking objects that you know about ahead of time or objects that you find just by searching the sky?
Why not both, theoretically there is tons of junk up there, as well as bunch of atmospheric phenomena that science cannot explain in its entirety (corona effects of sorts etc.) - why not use computer vision and some trained models to selectively pick out stuff automatically? Also post processing may not be required if you use a GPU.


Trying to build in Windows10 with IntelLLVM

Hello,
I am trying to build OpenBLAS in Windows with Intel's C and Fortran compilers. I am also using VS2022 preview for build environment.
Intel made their IntelLLVM compilers icx for C language and ifx for Fortran as default, and it seems to cause some conflict with prebuild setup.
In the x64 Native Tools, I activate the Intel's environment. Then, I try to configure by executing the line: cmake .. -G "Ninja" -DCMAKE_CXX_COMPILER=icx -DCMAKE_C_COMPILER=icx -DCMAKE_Fortran_COMPILER=ifx -DCMAKE_MT=mt -DBUILD_WITHOUT_LAPACK=no -DNOFORTRAN=0 -DDYNAMIC_ARCH=OFF -DCMAKE_BUILD_TYPE=Release
It tries to compile the cpuid.S, which seems to be ARM related and gives other error messages.
Full error messages are copied in configure_errors.txt files.
configure_errors.txt
In the prebuild.cmake, should I edit the line so that it configures with -DFORCE_GENERIC like MSVC?
Thank you in advance,
Sean

Hmm, I've read in other contexts that the 2025 version is not yet correctly handled by CMake. I'm fairly certain that icx used to be able to process cpuid.S - which contains only conditionally-compiled i386 assembly for ancient Macs anyway.
I think you could try just removing the list (append getarch_src  line in prebuild.cmake that adds cpuid.S to the compilation - forcing everything to use the generic C kernels would cost quite a bit of performance. (Though you might run into similar errors with other .S files later on - for the moment I hope it is only CMake getting confused, and not the compiler - ".S" is an "ASM" file so it should not balk at it.
BTW which version of OpenBLAS are you trying to build - is it 0.3.28 (or develop) ?

Thanks for the prompt response. Commenting out the line you mention helped to complete the configuring process. I cloned the develop branch.
During the build, it complains about the _Fcomplex and _Dcomplex. I already had some experience with this. I believe IntelLLVM for MSVC environment does not follow MSVC complex ... Also, it does not seem to support C99 in Windows environment.
I think the easiest option is to define LAPACK_COMPLEX_STRUCTURE in lapacke_config.h. Do you have other suggestions?

I'm not sure - where does it complain ? LAPACK_COMPLEX_STRUCTURE should already get defined by system.cmake line 670 when the operating system is identified as Windows, so something seems to be odd here.

Does icx define _MSC_VER ? I'd normally assume this to be set by the Microsoft compiler, maybe the ifdef needs to be expanded to include "but not Intel". Not sure why you'd get a bunch of link errors now, unless building the caxpy kernel (or its interface code) failed earlier.

I forgot which CMake file I saw this, but I remember that the compiler-frontend-variant and compiler-simulate-id are MSVC for IntelLLVM. Do you think these might be related?
I will try to see if kernel or the interface code are compiled properly.

Could be related, yes. But then this does not appear to have caused problems in the past (unless it is a very recent change in the Intel compiler package, and as said there are some concerns about its interfacing with current CMake). Might also want to check if the "missing symbol" problem only affects complex functions, or if you get the same for sblat1/saxpy.

I am checking the external symbols in openblas.lib. It looks like caxpy symbols have underscore "_". Do you think this might be related to the linking issue? I attached the image of output from dumpbin.

Seems unlikely to me but I can't rule it out. The CMake build has a few compiler specifics hardcoded (or relying on CMake's own checks) that the gmake build calls the c_check and f_check scripts for. But so far these settings worked... I'll see if I can set up a quick test tomorrow (getting a bit late here already)

Thank you so much for your help today!

Haven't quite succeeded yet, unfortunately. So far, I got the build to use consistent (no) trailing underlines on symbol names, but I cannot get CMake to include build instructions for the assembly (.S) kernels in the Ninja build file. (CMake appears to identify the compiler/assembler correctly as IntelLLVM though, and invoking icx manually on any .S file generates an object without complaint as well.)

Thanks for the update. I was not able to get much progress either on linking. I am trying to see if there were any problems during the compilation of the library. Missing symbol problem also appears for sblat1/saxpy and for dblat1/daxpy. Please let me know if you have any suggestion for me to try.

It looks like ifx uses Uppercase without trailing underscore for name mangling for Fortran. But symbols in openblas.lib after compilation are stored following gfortran name mangling convention which is lowercase with trailing underscore. What would you suggest in editing CMake file(s) so that .f.obj files and openblas.lib have same name mangling style?

I also encountered this problem. As a temporary solution - you can compile the library with dynamic linking using MinGW and use it in a project with the MSVC compiler. As far as I remember, the library compiled this way does not pass testing, but this seems to be a bug in the tests themselves. Nevertheless, this option is definitely suitable if you plan to use the library as a dependency for the Eigen library in a CMake project on Windows.

When you compile with dynamic linking on Windows, the tests currently require the freshly created dll to be in the path (or in the same place as the respective test executable), which will not be the case...
I haven't found an explanation for the problem with Ninja yet (seems this occured before with an earlier version of cmake, but should be fixed since 3.23 or so - I think my Windows setup has 3.29.something, which may not be the latest anymore either... Trying with `-G "MinGW Makefiles" currently ends up with "rc.exe not found" but that may be a path setup problem between oneAPI and MSVC... I think I saw that before but can't remember the solution...

I just checked how testing works - the problem there is not that ctest can't find dll files, but that ctest can't find tests
C:\Users\User\libs\temp\OpenBLAS\build>ctest --progress --output-on-failure
Test project C:/Users/User/libs/temp/OpenBLAS/build
  0/120 Test   #1: openblas_utestExit code 0xc0000135
  1/120 Test   #1: openblas_utest...............................................................................***Exception:   0.01 sec

  1/120 Test   #2: openblas_utest_extExit code 0xc0000135
  2/120 Test   #2: openblas_utest_ext...........................................................................***Exception:   0.00 sec

  2/120 Test   #3: sblas1Exit code 0xc0000135
  3/120 Test   #3: sblas1.......................................................................................***Exception:   0.01 sec

  4/120 Test   #4: sblas2.......................................................................................***Failed    0.26 sec
Get-Content : Cannot find path 'C:\Users\User\libs\temp\OpenBLAS\build\test\SBLAT2.SUMM' because it does not exist.
At C:\Users\User\libs\temp\OpenBLAS\build\test\test_helper.ps1:5 char:6
+ If ((Get-Content $args[2] | %{$_ -match "FATAL"}) -contains $true) {
+      ~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (C:\Users\User\l...est\SBLAT2.SUMM:String) [Get-Content], ItemNotFoundException
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetContentCommand

  5/120 Test   #5: sblas3.......................................................................................***Failed    0.27 sec
Get-Content : Cannot find path 'C:\Users\User\libs\temp\OpenBLAS\build\test\SBLAT3.SUMM' because it does not exist.
At C:\Users\User\libs\temp\OpenBLAS\build\test\test_helper.ps1:5 char:6
+ If ((Get-Content $args[2] | %{$_ -match "FATAL"}) -contains $true) {
+      ~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (C:\Users\User\l...est\SBLAT3.SUMM:String) [Get-Content], ItemNotFoundException
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetContentCommand

  5/120 Test   #6: dblas1Exit code 0xc0000135
  6/120 Test   #6: dblas1.......................................................................................***Exception:   0.01 sec

  7/120 Test   #7: dblas2.......................................................................................***Failed    0.27 sec
Get-Content : Cannot find path 'C:\Users\User\libs\temp\OpenBLAS\build\test\DBLAT2.SUMM' because it does not exist.
At C:\Users\User\libs\temp\OpenBLAS\build\test\test_helper.ps1:5 char:6
+ If ((Get-Content $args[2] | %{$_ -match "FATAL"}) -contains $true) {
+      ~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (C:\Users\User\l...est\DBLAT2.SUMM:String) [Get-Content], ItemNotFoundException
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetContentCommand

  8/120 Test   #8: dblas3.......................................................................................***Failed    0.27 sec
Get-Content : Cannot find path 'C:\Users\User\libs\temp\OpenBLAS\build\test\DBLAT3.SUMM' because it does not exist.
At C:\Users\User\libs\temp\OpenBLAS\build\test\test_helper.ps1:5 char:6
+ If ((Get-Content $args[2] | %{$_ -match "FATAL"}) -contains $true) {
+      ~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (C:\Users\User\l...est\DBLAT3.SUMM:String) [Get-Content], ItemNotFoundException
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetContentCommand

  8/120 Test   #9: cblas1Exit code 0xc0000135
  9/120 Test   #9: cblas1.......................................................................................***Exception:   0.01 sec

 10/120 Test  #10: cblas2.......................................................................................***Failed    0.28 sec
Get-Content : Cannot find path 'C:\Users\User\libs\temp\OpenBLAS\build\test\CBLAT2.SUMM' because it does not exist.
At C:\Users\User\libs\temp\OpenBLAS\build\test\test_helper.ps1:5 char:6
+ If ((Get-Content $args[2] | %{$_ -match "FATAL"}) -contains $true) {
+      ~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (C:\Users\User\l...est\CBLAT2.SUMM:String) [Get-Content], ItemNotFoundException
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetContentCommand

 11/120 Test  #11: cblas3.......................................................................................***Failed    0.30 sec
Get-Content : Cannot find path 'C:\Users\User\libs\temp\OpenBLAS\build\test\CBLAT3.SUMM' because it does not exist.
At C:\Users\User\libs\temp\OpenBLAS\build\test\test_helper.ps1:5 char:6
+ If ((Get-Content $args[2] | %{$_ -match "FATAL"}) -contains $true) {
+      ~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (C:\Users\User\l...est\CBLAT3.SUMM:String) [Get-Content], ItemNotFoundException
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetContentCommand

 12/120 Test  #12: cblas3_3m....................................................................................***Failed    0.26 sec
Get-Content : Cannot find path 'C:\Users\User\libs\temp\OpenBLAS\build\test\CBLAT3_3M.SUMM' because it does not exist.
At C:\Users\User\libs\temp\OpenBLAS\build\test\test_helper.ps1:5 char:6
+ If ((Get-Content $args[2] | %{$_ -match "FATAL"}) -contains $true) {
+      ~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (C:\Users\User\l...\CBLAT3_3M.SUMM:String) [Get-Content], ItemNotFoundException
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetContentCommand

 12/120 Test  #13: zblas1Exit code 0xc0000135
 13/120 Test  #13: zblas1.......................................................................................***Exception:   0.01 sec

 14/120 Test  #14: zblas2.......................................................................................***Failed    0.29 sec
Get-Content : Cannot find path 'C:\Users\User\libs\temp\OpenBLAS\build\test\ZBLAT2.SUMM' because it does not exist.
At C:\Users\User\libs\temp\OpenBLAS\build\test\test_helper.ps1:5 char:6
+ If ((Get-Content $args[2] | %{$_ -match "FATAL"}) -contains $true) {
+      ~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (C:\Users\User\l...est\ZBLAT2.SUMM:String) [Get-Content], ItemNotFoundException
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetContentCommand

 15/120 Test  #15: zblas3.......................................................................................***Failed    0.28 sec
Get-Content : Cannot find path 'C:\Users\User\libs\temp\OpenBLAS\build\test\ZBLAT3.SUMM' because it does not exist.
At C:\Users\User\libs\temp\OpenBLAS\build\test\test_helper.ps1:5 char:6
+ If ((Get-Content $args[2] | %{$_ -match "FATAL"}) -contains $true) {
+      ~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (C:\Users\User\l...est\ZBLAT3.SUMM:String) [Get-Content], ItemNotFoundException
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetContentCommand

 16/120 Test  #16: zblas3_3m....................................................................................***Failed    0.27 sec
Get-Content : Cannot find path 'C:\Users\User\libs\temp\OpenBLAS\build\test\ZBLAT3_3M.SUMM' because it does not exist.
At C:\Users\User\libs\temp\OpenBLAS\build\test\test_helper.ps1:5 char:6
+ If ((Get-Content $args[2] | %{$_ -match "FATAL"}) -contains $true) {
+      ~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (C:\Users\User\l...\ZBLAT3_3M.SUMM:String) [Get-Content], ItemNotFoundException
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetContentCommand

106/120 Test #107: xscblat1Exit code 0xc0000135ares_routinesDecomposition_routinesbalanced_matricesesriceses
107/120 Test #107: xscblat1.....................................................................................***Exception:   0.01 sec

109/120 Test #110: xdcblat1Exit code 0xc0000135
110/120 Test #110: xdcblat1.....................................................................................***Exception:   0.01 sec

112/120 Test #113: xccblat1Exit code 0xc0000135
113/120 Test #113: xccblat1.....................................................................................***Exception:   0.01 sec

116/120 Test #117: xzcblat1Exit code 0xc0000135
117/120 Test #117: xzcblat1.....................................................................................***Exception:   0.01 sec

120/120 Test #120: xzcblat3_3m
83% tests passed, 20 tests failed out of 120

Total Test time (real) =  26.49 sec

The following tests FAILED:
          1 - openblas_utest (Exit code 0xc0000135
)
          2 - openblas_utest_ext (Exit code 0xc0000135
)
          3 - sblas1 (Exit code 0xc0000135
)
          4 - sblas2 (Failed)
          5 - sblas3 (Failed)
          6 - dblas1 (Exit code 0xc0000135
)
          7 - dblas2 (Failed)
          8 - dblas3 (Failed)
          9 - cblas1 (Exit code 0xc0000135
)
         10 - cblas2 (Failed)
         11 - cblas3 (Failed)
         12 - cblas3_3m (Failed)
         13 - zblas1 (Exit code 0xc0000135
)
         14 - zblas2 (Failed)
         15 - zblas3 (Failed)
         16 - zblas3_3m (Failed)
        107 - xscblat1 (Exit code 0xc0000135
)
        110 - xdcblat1 (Exit code 0xc0000135
)
        113 - xccblat1 (Exit code 0xc0000135
)
        117 - xzcblat1 (Exit code 0xc0000135
)
Errors while running CTest

@parteimeister it won't find output files for checking if the tests weren't run - the BLAS2/3 tests write their output to file which the helper script then checks for occurrence of the word "FAILED". But anyway that is a wholly different topic

@parteimeister Thank you for your suggestion on the temporary solution using dynamic linking with MinGW.
@martin-frbg I am still interested in solving this issue but I don't want to bother you too much on this, especially close to holiday season. If you think there is no simple solution, I can try with MinGW as @parteimeister suggested. Do you think this issue may be considered to be fixed by next release?

I wrote a .asm that maps ifx's default naming to gfortran naming convention just to build 'dblat1.exe', and added this during the linking process.
It looks like there is another issue on openblas.lib. After compilation, I get .S files for some kernel files such as dcopy_k.S, dnrm2_k.S and etc. That seems to be related on why dcopy_k, dnrm2_k, and etc are undefined in openblas.lib. Besides the inconsistency in the name mangling, this .S files also seem to cause trouble with IntelLLVM and Window's VS2022 combination with current prebuild.cmake.

This is what I wrote yesterday - the erroneous underscores added to the symbols can be worked around, actually they are the result of a bad assumption in the cmake files that "every" compiler will produce/want them anyway. (In contrast, the gmake build runs a shell script that parses compiler output to find out). The main issue however is that while the CMake environment creates all the correct build wrappers for the .S files, it apparently does not write the corresponding build
rules into the build.ninja file. This appears to be a fault of CMake, most likely specific to its interaction with the very new Intel2025 as it did not happen in the past.

I see ... Thanks for the explanation on the main issue.

Major progress - the assembler problem can be solved by additionally specifying -DCMAKE_ASM_SOURCE_FILE_EXTENSIONS=S (although .S is one of the documented defaults already, and we saw it in the initial error message for cpuid.S).
Now the build of the "extended" utests is failing due to a symbol clash between the BLAS ?copy and a local utility function of the same name, but the library itself looks good

Nice! Thanks for the fix. I checked out your branch and just built the library. As you mentioned, it fails during linking for building test executables such as dblat1.exe but I see that dcopy_k and dnrm2_k, etc are defined in the library. I think name mangling is case sensitive. Currently, your fix removes the trailing underscore, but it seems to keep the symbols in lowercase. Fortran object files like dblat1.f.obj look for external symbols in uppercase like DASUM, DAXPY, etc. Do you think this might be a reason causing the linking issue?

I have just updated the PR to take care of the remaining symbol name conflicts (actually I redid the entire PR to avoid the large diff from inadvertently committing with Windows line endings), turns out I only needed to propagate the "NOCHANGE" flag from LAPACKE mangling to the tests.
Maybe I'll try if I can handle the gotcha of the ASM_SOURCE_FILE_EXTENSIONS=S internally too

Thanks! I will check out the new PR.

(CMAKE_ASM_SOURCE_FILE_EXTENSIONS "S") now declared in toplevel CMakeLists.txt

@martin-frbg ,  I have make a little different patch comparing from your for OpenBLAS version 0.3.28. So that can use icx-cl and ifx to build it. Some part of patch are from your but add some modification. The the build behaviour can be more close to use clang-cl and flang-new.
The patch is on my repository msvc-pkg. The patch and build script for OpenBLAS package is located at packages/OpenBLAS in https://github.com/jiangjianshan/msvc-pkg.


Do not preserve scroll

Thank you for your contribution to the KodaDot NFT gallery.
Before submitting this PR, please make sure:

[x] Your code builds clean without any erros or warnigns
[ ] You've posted screenshot of demonstrated change in this PR
[x] Merged recent default branch, main and you have no conflicts
[x] Didn't break any original functionality

Optional

[ ] You've tested it on mobile

PR type

[x] Bugfix
[ ] Feature
[x] Refactoring

LGTM


Support TOKEN function for partition keys. At least basic operators(=,<,>)

@doanduyhai hi! appreciate your work
Can't find how can i use Cassandra native TOKEN function for partition keys(and maybe for clustering too). For example i need to build select statement like this:
SELECT * FROM customers WHERE TOKEN(id) > TOKEN(a98d0f15-aad2-4a50-94b6-8aa4e2ede079);

But i see only 3 available options in DSL:
customerManager.dsl().select().allColumns_FromBaseTable().where().id().Eq()
customerManager.dsl().select().allColumns_FromBaseTable().where().id().Eq_FromJson()
customerManager.dsl().select().allColumns_FromBaseTable().where().id().IN()

We have 2 options here:

Add Token call as different Relation:

customerManager.dsl().select().allColumns_FromBaseTable().where().idToken().Eq()
customerManager.dsl().select().allColumns_FromBaseTable().where().idToken().Gt()
...

Add "token" method to "id" relation:

customerManager.dsl().select().allColumns_FromBaseTable().where().id().token().Eq()
customerManager.dsl().select().allColumns_FromBaseTable().where().id().token().Gt()
...

@doanduyhai can you point me out to class where i can implement it? Is it SelectWhereDSLCodeGen class?
And what is the best option to do it?

@vrudikov  I guess adding token() method to id() relation class is cleaner.
To add this feature, you need to look at the method SelectWhereDSLCodeGen:: buildSelectWhereForPartitionKey() here: https://github.com/doanduyhai/Achilles/blob/master/achilles-core/src/main/java/info/archinnov/achilles/internals/codegen/dsl/select/SelectWhereDSLCodeGen.java#L189-L190
You will need to add some code to:

build a new internal class called <partition_key_name>_Token_Relation (use TypeSpec.builder())
build a new method token() that returns a new instance of the above class
inside this new internal class, build the methods eq(), gt(), gte(), lt(), lte() all taking java.util.Long as parameter and return type is the variable relationClassTypeName already created inside the method  buildSelectWhereForPartitionKey()

@doanduyhai wow. nice. appreciate your help. will be very glad if you will guide me through this.
ok. it's time to dig the code

@doanduyhai can i write a test and call buildSelectWhereForPartitionKey method and see results immediately? SelectWhereDSLCodeGen is abstract and implementation is generated during build. Can't understand how should i test it

The best unit test is to see the generated code compile without error
Alternatively, you can also force the code generation to a String and assert the string content, see this class https://github.com/doanduyhai/Achilles/blob/master/achilles-core/src/test/java/info/archinnov/achilles/internals/codegen/ManagerCodeGenTest.java

@doanduyhai I'm trying to run tests, but can't get rid of compilation time errors

@vrudikov
mvn clean first to remove existing  generated code

@vrudikov Any news on this subject ? Did you succeed to compile ?

@doanduyhai yes. i forgot to mention that Maven compile works as designed and is success. It was Intellij compilation. I added some code to SelectWhereDSLCodeGen, but haven't any time to proceed. Will take a look today. Thanks for checking me

@vrudikov Sometimes IntelliJ has issues to refresh generated data.  The fix is simple, delete completely the target/generated-sources/annotations/ folder and force a rebuild to regenerate from scratch the code

@doanduyhai i found what was the cause of Intellij IDEA compilation issue:
Annotation processor was enabled by default for Intellij because of Maven settings
I disabled it and now Intellij module compiles successfuly and i can run tests

Good to know, IntelliJ is sometimes too smart and enable options automatically

So here is my first attempt. Need to finish a lot from your guide above. But i'm on the right way

I just realize there is a big problem
if you have only 1 partition key, easy:
    manager.dsl()
        .select()
        .allColumns_FromBaseTable()
        .where()
        .partitionKey().Token().Eq(....)

Now if you have more than 1 partition key and at least 1 clustering column:
    manager.dsl()
        .select()
        .allColumns_FromBaseTable()
        .where()
        .partitionKey1().Eq(....)
        .partitionKey2().Eq(....)
        .clusteringColum().Eq(....)

With the token function, we should create a Builder path to go directly from where().Token().Eq(...) to clusteringColumn() without having to provide partitionKey2().Eq(...)
    manager.dsl()
        .select()
        .allColumns_FromBaseTable()
        .where()
        .token().Eq(....)  <-- BY PASS ALL PARTITION KEYS RELATION
        .clusteringColum().Eq(....)

And that by-passing is really tricky to be implemented, but still possible
So after the where() method, we should provide 2 choices:

either the normal path with partitionKey1() -> partitionKey2() -> clusteringColum()
or the token path with token() -> clusteringColumn()

It implies that the Token_Relation class should not be put inside a partitionKey_relation class but outside
See the idea ?

yeah. understand. so we need to have 2 options impltemented:

partitionKey1().Token().eq() -> partitionKey2() -> clusteringColum1()
partitionKey1().Token().eq() -> clusteringColum1()

Right?

No, it should be

where().parttonKey1()...->partitionKey2()...->clusteringColumn() or
where().token()...->clusteringColumn()

In the 2nd scenario, there is no partitionKey1() or  partitionKey2() because the given token value is indeed a hash of all partition keys.
By the way, in addition to token().Eq(..) and token().In(..) we should also add token().Gt(..), token().Gte(..), token().Lt(..), token().Lte(..), token().Gt_And_Lt(..)  etc.

Ok. I think i understood. I got this error: "The token() function must be applied to all partition key components or none of them" when tried to apply token to only 1 of 4 partition keys. So it is the Cassandra rule
Now it's clear for me.

Hi, doanduyhai. i'm still here and still want this feature to be implemented. Was busy, will continue development soon

Thanks for the update!

@doanduyhai WOW! Great job. I looked at the code and realized for me it's very complex thing :) Thanks for implementation. When it's gonna be available in Maven central?

So I need to add support for GROUP BY clause recently available in latest Cassandra version and after that we're good for another release
There is also a project to write a comprehensive contributor guide that explains all the internal architecture of Achilles so that makes life easier for external contributors.

There is also a project to write a comprehensive contributor guide that explains all the internal architecture of Achilles so that makes life easier for external contributors.
AWESOME!


poi bug 60031: DataFormatter parses months incorrectly when put at the end of date segment.

bug 60031: DataFormatter parses months incorrectly when put at the end of date segment. Thanks to Andrzej Witecki
Bug 60031: Enhance test some more
Move  test to base-test-class to run it for (S)XSSF as well

LGTM


Fix GB location UI

Task/Issue URL: https://app.asana.com/0/488551667048375/1206158080167031/f
Description
Servers in UK come with GB country code not UK
Steps to test this PR
See Asana task

Current dependencies on/for this PR:

develop

PR #4016   👈

This stack of pull requests is managed by Graphite.


init style

Is there a reason, why the init.py has the style (concat is only an example)
from chainer.functions.array import concat

...

Concat = concat.Concat
concat = concat.concat

and not
from chainer.functions.array.concat import Concat, concat
?
The reason, why I ask is, that PyCharm is not able to analyse this import style and therefore PyCharm says always: 'concat' is not callable and an jump to the function goes to the file and not to the function.

We fixed this issue. Thank you for reporting it!


Upgrade Packages

The following packages when upgraded are not compatible. Could you support the latest versions?
◯ node-sass  4.6.1  ❯  4.8.3  https://github.com/sass/node-sass
◯ node-sass-chokidar  0.0.3  ❯  1.2.2  https://github.com/michaelwayman/node-sass-chokidar#readme

Hello @gbourne1 ,
We used those components because they work fine with our scss.
Upgrading them would mean to make major changes to our scss, and unfortunately our team that works over scss doesn't have time for those changes yet.
This being said, we do plan on migrating our scss to the latest rules of scss, but will take some time.
So for now you can either use the packages as they are in our products, or if you really need the latest versions, you would need to upgrade our scss to the newest rules.
Best,
Manu


mrs100 KeyError('togglex') in NamespaceHandler(Appliance.Control.ToggleX)._handle_list: payload={'channel': 0}

All is working in 3 same devices types, but.... now hundreds  of messages in system log
KeyError('Appliance.Control.ToggleX') in NamespaceHandler(Appliance.System.All)
Registrador: custom_components.meross_lan.mrs100_###############################9
Fuente: custom_components/meross_lan/helpers/init.py:267
integración: Meross LAN (documentación, problemas)
Ocurrió por primera vez: 12:14:18 (247 ocurrencias)
Último inicio de sesión: 12:35:24
KeyError('togglex') in NamespaceHandler(Appliance.Control.ToggleX)._handle_list: payload={'channel': 0}
2024-06-06 13:10:04.568 WARNING (MainThread) [custom_components.meross_lan.mrs100_##############################10] KeyError('togglex') in NamespaceHandler(Appliance.Control.ToggleX).handle_list: payload={'channel': 0}
2024-06-06 13:10:15.830 WARNING (MainThread) [custom_components.meross_lan.mrs100###############################9] KeyError('togglex') in NamespaceHandler(Appliance.Control.ToggleX).handle_list: payload={'channel': 0}
2024-06-06 13:10:15.911 WARNING (MainThread) [custom_components.meross_lan.mrs100###############################8] KeyError('togglex') in NamespaceHandler(Appliance.Control.ToggleX).handle_list: payload={'channel': 0}
2024-06-06 13:10:34.682 WARNING (MainThread) [custom_components.meross_lan.mrs100##############################10] KeyError('togglex') in NamespaceHandler(Appliance.Control.ToggleX)._handle_list: payload={'channel': 0}
config_entry-meross_lan-9ae0e342435cc0684cf433bf81d59dc7.json

@dragonjon,
This mrs100 replies with a really 'malformed' message and that's why the log.
As for why this malformed message comes out of the device I can't tell...sure it was not offending before since the query for this message was only introduced in 5.2.0.
I think I could correctly 'fix' this by preventing the query since that's for a feature (the 'togglex') which has no meaning in the mrs100 device (that's why it was never queried before..also, I've never seen an mrs100 exposing this feature type in its 'api' but things change over time...)
As for now the fix should be able to silence this log but the question as to why the device replies with this 'really malformed message' remains. Maybe the fw is still 'experimental' in some new feature and it works like that (I hope this is really a glitch overall since the format of this message reply is 'totally against' every other protocol syntax rule.....
Just one question:
I guess you have the latest 5.2.0 release installed but the diagnostic is dated back in 2024/03 and reports meross_lan 5.0.1 by then...maybe you've just copy-pasted the wrong file for upload ;)

Hi @krahabb thanks for the fix and your work,
Work without log errors
Jon


SCP-421: Contracts API refactoring

This PR changes the way the intermediate state of contract instances is stored and requests from contracts are handled. Implements SCP-421.
Major Changes

Delete the Language.Plutus.Contract.Resumable.Resumable type and associated functions/types incl. Language.Plutus.Contract.Record
Split up the functionality that was provided by Language.Plutus.Contract.Resumable.Resumable into two freer-simple effects, Resumable and Checkpoint.

Resumable
The Resumable effect is used by contracts to expose endpoints / make requests, and deal with the results. A program built with Resumable can prompt the environment at any time for input and will be resumed when the input is provided. select takes two programs with prompts in them and runs the one that makes progress first. If one of the arguments to select does not have any prompt calls then it makes progress first. If both arguments have prompt calls then the one that makes progress first is the one whose prompt is answered first. So at every stage of the contract we have a list of open requests, and when one of them is responded to we get a new list of open requests, discarding the ones that were not handled. (The new list may contain some requests from the old list, but they will have different IDs, see below).
data Resumable i o r where
    RRequest :: o -> Resumable i o i
    RSelect :: Resumable i o Bool -- See the 'NonDet' effect

prompt :: Member (Resumable i o) effs => o -> Eff effs i
prompt o = send (RRequest o)

select ::
    forall i o effs a.
     First we transform the programs into ones that use the NonDet and Yield effects that come with freer-simple. Then we interpret the resulting program with Reader and State effects to capture the state of open requests.
Stage 1
Stage 1 is implemented in handleResumable. The result is a program that uses NonDet and Yield in a very specific way to implement the resumable functionality. The reason why we don't say something like type Resumable effs = Members '[NonDet, Yield] effs instead of the Resumable data type is that NonDet allows for backtracking, which we do not want to expose to the users.
The programs produced by handleResumable have at most one level of backtracking (to the next call to prompt). There is no empty contract (and no Alternative instance for contracts) because the only thing that can cause backtracking to happen is the provisioning of an answer to a prompt call from the environment.
Stage 2
Stage 2 is implemented in handleNonDetPrompt. Here we handle the Yield and NonDet effects that were introduced in the previous stage. In this stage we assign two numbers to each request issued by the contract, a RequestID and an IterationID. The request ID is simply a consecutive numbering of every request that is made during the lifetime of the contract. The iteration ID is unique for each group of open requests that the contract produces.
Of particular importance is the loop function, which deals with the Status values that we get from runC. It uses the following effects to do its thing:
type ResumableInterpreter i o effs = State IterationID ': NonDet ': State RequestID ': effs

Note that the IterationID state comes before NonDet, and the RequestID state comes after NonDet. This is done so that we increase the RequestID whenever a request is made, and the IterationID only when a request is answered.
loop :: Status (ResumableInterpreter i o effs) o i a -> Eff (ResumableInterpreter i o effs) a
loop (Continue a k) = do
    Record mp' <- ask
    (iid,nid) <- nextRequestID a -- <1>
    case Map.lookup iid mp' >>= Map.lookup nid of
        Nothing -> empty -- <2>
        Just v  -> clearRequests @o >> k v >>= loop -- <3>
loop (Done a)       = pure a

nextRequestID generates a pair of RequestID and IterationID for the current request. It writes the value a, which describes the request, to the RequestState, alongside the two identifiers.
If our current request has not been answered then we fail, so the other branches will be tried. At this point the change to IterationID is rolled back but the change to RequestID persists, due to the ordering of effects in ResumableInterpreter
If there is an answer for the current request then we feed it to the continuation k and proceed to the next iteration. The changes to RequestID and IterationID both are kept.

Checkpoints
Checkpoints are a solution to the problem that handleNonDetPrompt runs the entire program from the beginning every time a new response is received. Once a part of the program is finished (after several requests and responses) we can store its result in a CheckpointStore serialised as a JSON value. The next time we get to this part of the program we simply restore the result instead of evaluating all the request -response pairs again.
The Checkpoint effect is basically a key-value store, with a type parameter e for the environment and the DoCheckpoint / GetKey functions that create new keys for the KV store.
data Checkpoint e r where
    DoCheckpoint :: Checkpoint e ()
    GetKey :: Checkpoint e CheckpointKey
    Store :: (ToJSON a) => CheckpointKey -> CheckpointKey -> a -> Checkpoint e ()
    Retrieve :: (FromJSON a) => CheckpointKey -> Checkpoint e (Either CheckpointError (Maybe a))

The constructors of Checkpoint e r are not exposed to the user directly. Instead there is a single function jsonCheckpoint that uses the checkpoint effect to store and retrieve the results of checkpointed actions.

jsonCheckpoint ::
    forall e err a effs.
    ( Member (Checkpoint e) effs
    , Member (Error err) effs
    , ...
    )
    => Eff effs a
    -> Eff effs a
jsonCheckpoint action = do
    doCheckpoint @e
    k <- getKey @e
    vl <- retrieve @_ @e k
    case vl of
        Left err -> throwError @err (review _CheckpointError err)
        Right (Just a) -> return a -- <1>
        Right Nothing -> do
            result <- action -- <2>
            k' <- getKey @e -- <3>
            store  @_ @e k k' result
            pure result

If the result of action is already in the store then we return it without running action again.
Otherwise we run the action once and store the result.
After running action we need to get the new CheckpointKey value and store it. This is because action itself may have further checkpoints, and we need to make sure that their changes to the checkpoint state are accounted for even if we don't repeat the action.

Side effects
The point of jsonCheckpoint action is to avoid running action to completion more than once. But what if we want to restore not just the result of action, but also some of its other effects? For example, when using Checkpoint in combination with Resumable we want to maintain the numbering of requests and iterations that was produced by handleNonDetPrompt. The type parameter e can be used to store data about the environment that should be restored with the checkpoint result. It is used in handleCheckpointEnv (note the JSON constraints on e):

-- | Handle the 'Checkpoint' effect in terms of a 'CheckpointStore' effect.
handleCheckpointEnv ::
    forall e effs.
    ( Member (State CheckpointStore) effs
    , Member (State CheckpointKey) effs
    , Member Log effs
    , ToJSON e
    , FromJSON e
    )
    => (Eff effs e)
    -- ^ How to get the environment that should be stored alongside checkpointed values
    -> (e -> Eff effs ())
    -- ^ How to restore the environment when a checkpoint has been restored.
    -> Eff (Checkpoint e ': effs)
    ~> Eff effs

Improvements caused by this PR

The type of requests that a resumable program can make is no longer required to have an instance of Monoid. This is because we now represent the open requests as a list.
We can now uniquely match responses to individual requests. Previously, when we had multiple requests of the same type (say, AwaitSlot) any answer to those requests would be routed only to the first branch in which it was requested. This fixes SCP-422.
The code is now easier to maintain and debug.
In particular it is now straightforward to add new effects to contracts. We have long wanted to make contracts easier to debug, and now we can for example add a Log effect without disrupting the Resumable and Checkpoint code.

We do still have to think about the impact of new effects on the NonDet and Prompt effects in Resumable, but something like Log, which is essentially a Writer, shouldn't cause any problems.

By using a different interpreter for the Yield effect we can also potentially greatly speed up the execution of contracts, if the performance of the current system becomes a bottleneck. For example, instead of shutting down the process after every response we could keep it running and feed the next response to it through a (web) socket. This would get around the whole suspend/resume dance and we could still write out the state of the contract to a serialisable value in case the process crashes or needs to be moved to another device. In practice this would mean a new handler that takes the place of handleNonDetPrompt.

Differences to previous version

There is no more Alternative instance for contracts (because we don't have the unit empty), so I replaced all occurrences of <|> with select
The ContractIteration type was moved from plutus-scb directly into Resumable
Error handling in contracts changed (yet again :( ) slightly as a result of separating Resumable from Checkpoint. The latter has its own error type, and those kind of errors don't occur in the "primitive" effects such as Language.Plutus.Contract.Effects.AwaitSlot.awaitSlot.
Other than that the changes to the user-facing API were minimal.
In the SCB I also got rid of the request-specific contract outboxes. The PartiallyDecodedResponse type is used to store the open requests to a contract.

Ok it's ready for review, the only thing that's left is rebasing and changing the remaining downstream packages.

Has merge conflicts.

Quite a lot of them!

Probably goes without saying, but lots of the excellent documentation in the PR description could go into the code!

@michaelpj
I tried to remove the IterationID from Resumable in b07c1e6 but I don't think this is possible after all. Consider this program (basically the test case "commit to a branch":
(ask "prompt1" >> ask "prompt3") `select` (ask "prompt2" >> pure 10)

If we run it with no responses we get the following two requests:
[ Request {rqID = RequestID 2, rqRequest = "prompt2"}
, Request {rqID = RequestID 1, rqRequest = "prompt1"}
]

If we run it with a response for "prompt1" -- RequestID 1 -- we would expect there to be a single open request for "prompt3". But the new list of requests is actually
[Request {rqID = RequestID 3, rqRequest = "prompt2"},Request {rqID = RequestID 2, rqRequest = "prompt3"}]

Note how "prompt2" now has RequestID 3 even though it shouldn't be in this list at all. The reason is that we can't prevent ask "prompt2"  from being evaluated, because we don't have a proper cut operator. So I used the IterationID to filter out requests such as "prompt2" because they have a lower iterationID.

Note how "prompt2" now has RequestID 3 even though it shouldn't be in this list at all. The reason is that we can't prevent ask "prompt2" from being evaluated, because we don't have a proper cut operator.

Hm, I agree that's a problem, I thought that wouldn't happen. I would have hoped we could do something with how the effects are interpreted to get a "proper" cut behaviour. I'll have a think about it...

Maybe we should use msplit
I had a look at the LogicT paper and it says that all the other operators incl. cut can be implemented with msplit. I'll try that next.

I think we decided that we should ignore the cut issue for now. Jann, can you make an issue for following up on that, please?

https://github.com/input-output-hk/plutus/issues/2055
So what's left for this PR is

Update documentation
Add a test case that shows how catchError interacts with the Resumable effect
Deal with the remaining inline comments
Fix remaining compilation errors in downstream packages

Needs a nix update.

:shipit:


p4-traffictool cannot generate scapy code

Our team try to introduce p4-traffictool into our p4 traffic test unit. However, when we try to use p4-traffictool to generate scapy code base on our p4 code, the tool says it cannot generate scapy.

Seems like this is an IOError in GenTrafficScapy.py, so I add traceback func in that part of code and get this

Looks like it try to open a temp file, but turns out some wrong happened, I think it is caused by DESTINATION variable received wrong value?
https://github.com/NUS-SNL/p4-traffictool/blob/b0c0ce25a0b1e0f6157ce9dcd9a02c883a936311/p4-traffictool.sh#L214-L218
https://github.com/NUS-SNL/p4-traffictool/blob/b0c0ce25a0b1e0f6157ce9dcd9a02c883a936311/src/GenTrafficScapy.py#L16-L18
https://github.com/NUS-SNL/p4-traffictool/blob/b0c0ce25a0b1e0f6157ce9dcd9a02c883a936311/src/GenTrafficScapy.py#L588

Hi @Xiangpeng-Sun. Thanks for reporting the issue.
This line in p4-traffictool.sh is returning more than one .json file which further corrupts other variables,
    JSONSOURCE=$(find . -name "*.json" -type f)

I'll send a fix over the weekend.


Dose kuberay supports the vpa of K8s?

I am newbee for this project. And i know the vpa can be achived by the ray client adjusting the "num_cpus". I want to know if kuberay can adjust the resource allocated by update the yaml file?

Currently not.