feat(perf_hooks): add node instrumentation perf_hooks

Which problem is this PR solving?
#1106 - currently there is no Otel way to expose metrics provided by the Node.js runtime
(...continuation from #1272 and #1689)
Description of changes
This PR adds a @opentelemetry/instrumentation-perf-hooks package that exposes the utilization measurement from Node.js Performance measurement APIs' performance.eventLoopUtilization method.
The exposed metric will look something like this:
# HELP nodejs_performance_event_loop_utilization Event loop utilization
# UNIT nodejs_performance_event_loop_utilization 1
# TYPE nodejs_performance_event_loop_utilization gauge
nodejs_performance_event_loop_utilization 0.010140079547955264

Notes / Questions

I've named this package @opentelemetry/instrumentation-perf-hooks as this initial version only exposes one metric. Happy to use @opentelemetry/instrumentation-runtime but that implies a bigger scope than what this PR does.
The exposed metric is called nodejs.performance.event_loop.utilization, but perhaps nodejs.event_loop.utilization is sufficient?

Updated to fix the failed release-please-config and peer-api-checks workflows

I believe the unit-test (18.18.2) failed due to the test being flakey (c0ef756ac716fe477b6b750db8aa704dba2dfd83 should have fixed it)
However, I am struggling to see why unit-test (14) hangs and I don't see any test output. (would 928f8ac9ef9759725d8c27ad39e79dfe3b066b38 have fixed it? It's currently passing on my machine using Node.js v14.21.3)
@pichlermarc can we run the tests again?

@pichlermarc Hey, just want to double check if there are still changes that needs addressing, or we are just waiting for this to be included in the next release. Should I keep merging/resolving conflicts (which will cause the tests to be rerun) or just leave it be? Thanks

@pichlermarc Hey, just want to double check if there are still changes that needs addressing, or we are just waiting for this to be included in the next release. Should I keep merging/resolving conflicts (which will cause the tests to be rerun) or just leave it be? Thanks

Sorry for the delay. I should've merged it long ago. Running tests again and then this should be good to merge.

(Sorry this Q comes after this is reviewed and merged.)
Is this something that needs to be implemented as an instrumentation? Could it not be something like host-metrics (https://github.com/open-telemetry/opentelemetry-js-contrib/blob/main/packages/opentelemetry-host-metrics/README.md#usage) where one separately creates and starts it after a MeterProvider has been registered (via using NodeSDK or whatever).   IIUC, this isn't actually instrumenting perf_hooks, but just using it.

IIUC, this isn't actually instrumenting perf_hooks, but just using it.

Yes, this is only using perf_hooks but not instrumenting the perf_hooks Node.js API.

Is this something that needs to be implemented as an instrumentation?

The purpose of the package is to export metrics exposed by the Node.js runtime. I see similar packages in other languages (e.g. Go) exposing the language runtime internals implemented as instrumentation packages.
If it is a matter of naming, I would be happy for it to be renamed to @opentelemetry/instrumentation-runtime.
If it is a matter of whether it should be a non-instrumentation package, I would need more guidance from the maintainers as to the distinction between an 'instrumentation' package and other types of packages. From my perspective, yes, it could work as a package similar to @opentelemetry/host-metrics

@d4nyll Thanks. I moved my Q to a new issue (https://github.com/open-telemetry/opentelemetry-js-contrib/issues/1956) so this doesn't get lost on a merged PR.


Select for Compare missing for unsaved files

Issue Type: Bug
Create 2 new files and fill them with text, and don't save them, then try to select for compare.
This is likely due to #113703
VS Code version: Code - Insiders 1.53.0-insider (861a88ebadb4335df92251faf6420b598440e082, 2021-01-29T21:49:22.151Z)
OS version: Windows_NT x64 10.0.19042

Does the issue exist in Stable (1.52.1)? If not then it should probably be tagged as a regression and maybe a candidate.

I caused this with the IsFileSystemResource context key
fyi @bpasero

@isidorn oh yeah, d'oh. I suggest to revert and then we can look into a better fix.

Fixed via revert 2fb57aa3b6
@bpasero can you please review https://github.com/microsoft/vscode/pull/115611

Merged.
@bpasero Thanks for the review. I will ping you tomorrow to verify once the build is out


Ultra / UltraPlus support

As we discussed on the twitter: https://twitter.com/oe1cxw/status/821646243101372417 it would be nice to have support for the latest / greatest FPGAs. Created this ticket to scope the work need to be done:
New features (in priority order?)

DSP blocks. (MULT16 + ACC32) iCE5LP1K = 2; iCE5LP2K/4K = 4; iCE40UP3K = 4; iCE40UP5K = 8;
SPRAM 256 kibit. iCE40UP3K/5K = 4 blocks;
HF (48MHz), LF (10KHz) Oscillator
Other Hard-IPs, I2C, SPI, PWM, etc.

Affected tools

icestorm , new blocks, new devices (resource configuration?)
yosys , resource inference, instantiation?
arachne-pnr , placement, routing information for new resources?

Next steps

make sense to start with the flagman chip on Eval board: http://www.digikey.com/short/3fpvm3
stab unknown parts of the bitstream with predefined sequences, to achieve ic40 functionality
propagate stabs for all tools
work on feature by feature basis

This two posts outline the first steps for adding support for additional devices:

https://www.reddit.com/r/yosys/comments/4ocilz/icestorm_adding_support_for_new_devices_part_1/
https://www.reddit.com/r/yosys/comments/4ovgn5/icestorm_adding_support_for_new_devices_part_2/

As I've said many times, I don't have the time (i.e. funding) to work on any of that. I only offer is that I'll add Yosys support for additional cell types when there is support for a new cell type in Icestorm and Arachne-pnr.

@drom Did you ever start reverse engineering these new chips? I may pick one up in case I find some time.

@tannewt no, I have not found enough time to do it. But I think UltraPlus is very interesting chip to work with.

I've started working on the iCE40UP5K for Adafruit here. I'm using the dev board for it but may sketch out a feather design for it too.

I've started working on the iCE40UP5K for Adafruit here.

That's awesome! Do not hesitate to contact me if you have any questions, or simply open github issues here.

Yes!!!!!!  Thanks a lot!!! Please don't hesitate on asking for beta testers  :-)

@cliffordwolf Any tips on handling CRAM and BRAM sizes that vary? Thanks!
Parsing bitstream file..
Found preamble at offset 83.
Next command at offset 87: 0x51 0x00
Setting freqrange to 'low'.
Next command at offset 89: 0x01 0x05
Resetting CRC.
Next command at offset 91: 0x92 0x0020
Setting warmboot to 'enabled'.
Next command at offset 94: 0x62 0x02b3
Setting bank width to 692.
Next command at offset 97: 0x72 0x0150
Setting bank height to 336.
Next command at offset 100: 0x82 0x0000
Setting bank offset to 0.
Next command at offset 103: 0x11 0x00
Set bank to 0.
Next command at offset 105: 0x01 0x01
CRAM Data [0]: 692 x 336 bits = 232512 bits = 29064 bytes
Next command at offset 29173: 0x72 0x00b0
Setting bank height to 176.
Next command at offset 29176: 0x11 0x01
Set bank to 1.
Next command at offset 29178: 0x01 0x01
CRAM Data [1]: 692 x 176 bits = 121792 bits = 15224 bytes
Next command at offset 44406: 0x72 0x0150
Setting bank height to 336.
Next command at offset 44409: 0x11 0x02
Set bank to 2.
Next command at offset 44411: 0x01 0x01
CRAM Data [2]: 692 x 336 bits = 232512 bits = 29064 bytes
Next command at offset 73479: 0x72 0x00b0
Setting bank height to 176.
Next command at offset 73482: 0x11 0x03
Set bank to 3.
Next command at offset 73484: 0x01 0x01
CRAM Data [3]: 692 x 176 bits = 121792 bits = 15224 bytes
Next command at offset 88712: 0x62 0x009f
Setting bank width to 160.
Next command at offset 88715: 0x72 0x0080
Setting bank height to 128.
Next command at offset 88718: 0x11 0x00
Set bank to 0.
Next command at offset 88720: 0x82 0x0000
Setting bank offset to 0.
Next command at offset 88723: 0x01 0x03
BRAM Data [0]: 160 x 128 bits = 20480 bits = 2560 bytes
Next command at offset 91287: 0x82 0x0080
Setting bank offset to 128.
Next command at offset 91290: 0x01 0x03
BRAM Data [0]: 160 x 128 bits = 20480 bits = 2560 bytes
Next command at offset 93854: 0x62 0x004f
Setting bank width to 80.
Next command at offset 93857: 0x11 0x01
Set bank to 1.
Next command at offset 93859: 0x82 0x0000
Setting bank offset to 0.
Next command at offset 93862: 0x01 0x03
BRAM Data [1]: 80 x 128 bits = 10240 bits = 1280 bytes
Next command at offset 95146: 0x82 0x0080
Setting bank offset to 128.
Next command at offset 95149: 0x01 0x03
BRAM Data [1]: 80 x 128 bits = 10240 bits = 1280 bytes
Next command at offset 96433: 0x62 0x009f
Setting bank width to 160.
Next command at offset 96436: 0x11 0x02
Set bank to 2.
Next command at offset 96438: 0x82 0x0000
Setting bank offset to 0.
Next command at offset 96441: 0x01 0x03
BRAM Data [2]: 160 x 128 bits = 20480 bits = 2560 bytes
Next command at offset 99005: 0x82 0x0080
Setting bank offset to 128.
Next command at offset 99008: 0x01 0x03
BRAM Data [2]: 160 x 128 bits = 20480 bits = 2560 bytes
Next command at offset 101572: 0x62 0x004f
Setting bank width to 80.
Next command at offset 101575: 0x11 0x03
Set bank to 3.
Next command at offset 101577: 0x82 0x0000
Setting bank offset to 0.
Next command at offset 101580: 0x01 0x03
BRAM Data [3]: 80 x 128 bits = 10240 bits = 1280 bytes
Next command at offset 102864: 0x82 0x0080
Setting bank offset to 128.
Next command at offset 102867: 0x01 0x03
BRAM Data [3]: 80 x 128 bits = 10240 bits = 1280 bytes
Next command at offset 104151: 0x22 0xa3b6
CRC Check OK.
Next command at offset 104154: 0x01 0x06
Wakeup.
Chip type is '5k'.

Ok, I think I have icepack working but I only checked it with the one example from the reddit instructions. New commit is here.
One gotcha was that the bottom quarter of the grid is used for the SRAM and therefore the CRAM and BRAM data is half the height of the top quadrants. I think I accounted for that correctly in icepack now though.
I'm also unsure of the cell configuration length for the first set of cells (the left and right sides) because they are DSP blocks rather than IO blocks. In the floor planner they are called IPConnect and Multiplier tiles which span 1 and 4 vertical cells respectively. I can't find any mention of these block names in the datasheets. Its mostly refered to as DSP blocks. The bottom left corner is a CLOCK tile and the bottom right is a WARMBOOT tile.

I'm bit at a loss for next steps. I don't actually have any FPGA experience which makes coming up with example Verilog tricky. (I did do it in college but that was ~2008.) My high level goal is to get a picorv32 going on the chip using the hard IPs. I want to create a board with the Adafruit Feather form factor which can basically replace an M0+ MCU but have the flexibility of custom peripherals or fully custom logic.
I know there is work to be done in Arachne-pr but I'm not sure where to look in there. Guidance on how to get the basic logic and IO cells going for the new chip would be welcome. Once that is done, we can start looking into the new block types.
iceprog seemed to work just fine because the dev board uses the normal FTDI chip.
Thanks!

@tannewt I'm at DAC right now in Texas and  after that I'll travel directly to the UK for FV2017. After that I'll write a "part 3" of the guide on reddit. Please remind me if I haven't posted anything by the end of next week. :)
Please see the two comments I added to your patch.
Don't worry about FPGA experience. For this project (adding support for 5k) having more experience with FPGA design would probably not help as much as you might imagine.
The work to be done in arachne-pnr is not acute right now. The next steps will be:

Sanity check: does .bin -> .asc -> .bin -> .asc -> ... yield same files (maybe with exception of the comment field)
Sanity check: is  glbcheck.py satisfied with .glb vs .asc equivalence?
Figuring out the difference (if any) in the different cell types.

The first two points are just checks in your icepack changes are correct. The third one will tell us how much new reverse-engineering we will need to do.
Here is the very short version of the guide to come: Add 5k support to icefuzz (start by patching the makefile) and see if it finds any new or conflicting bit assignments. If it does: Create a new database for 5k and that tile type (like it is already the case for 8k and block rams).

@cliffordwolf Thank you so much for your guidance on this. I'd suggest enabling the GitHub wiki and posting the guides there because the reddit posts are now immutable. Having the info on a wiki or in the code itself would allow me to add more details as I figure them out. (For example, where to find the info for the chipdb.)
I did one simple check with glbcheck.py before and will do one today. (to probably find I broke icepack.)
I actually spent some time adding the chip to the db yesterday and will start today by doing the icefuzz work. Thanks for the tip on that! I really appreciate all of the work you've put into this project.

+1 to enabling the wiki :-)

Wiki is enabled. Feel free to copy the posts and edit away.

Thanks @cliffordwolf! I copied the posts here and will add more as I come across it.

I've gotten icefuzz going for the 5k. Change for it is https://github.com/adafruit/icestorm/commit/58a6110be198089d784b5ad3e2ecb611182bd5ea.

I discovered icefuzz/tests and have been using them to update more info in icebox.py. https://github.com/adafruit/icestorm/commit/a25c8679ac37df5219e1d7a8cdd932288cd596b1

I discovered I had an error in icepack and used netpbm to correct the mapping. glbcheck.py now passes without issue on most of the fuzz tests. I'm having trouble creating the chipdb though because of duplicate segments. Latest commits are here: https://github.com/adafruit/icestorm/commits/master

@tannewt  Here is an example 8k .asc file:
example_8k_image.asc.txt
If you pack that into a .bin file with my old version of icepack and your new version of icepack you get different results. The difference is in block ram configuration. Please investigate and fix.

@tannewt Jfyi: I have an ice5k branch now: https://github.com/cliffordwolf/icestorm/tree/ice5k
Maybe you'd like to rebase your work ontop of that.

Thanks @cliffordwolf! I should have time tomorrow to rebase and fix the block ram problem. Its not super high on my list of things to do but I should have more time for it in the next few weeks.

Ok, I've rebased and fixed BRAM for 8k. I'm not sure if its correct for 5k. https://github.com/adafruit/icestorm/commit/b019ae4e65a65e26ae0b765641f2c1a8150500b0
I'm going to spend a little time looking at the icebox chipdb issues I was running into.

Is the support for ultraplus devices in a usable state?

@aurabindo No. It's still in a very early stage.
@tannewt I've now merged your stuff into my master with a ton of bugfixes ontop of it. Please make sure that you have pulled my master branch before continuing your work.

Thanks for the heads up @cliffordwolf. I'm not exactly sure when I'll pick it up again. I'll be a lot more interested when chips are more readily available. Thanks!

Chips are avalilable
ice40up5k board http://gnarlygrey.atspace.cc/development-platform.html#upduino
7.99USD

also available on ebay, search "ice40". they go for $9.99, any quantity, and there is a link to the aforementioned $7.99 GnarlyGrey on the very same ebay page.

something news here ? future plans ?

What version of icecube have you been using for icefuzz @tannewt @cliffordwolf ? I've been trying to use the latest version but it fails in make_io.py with a placement violation unless one of the IOs (pins  23) are removed from the pin list in fuzzconfig.py. Failures seem to occur whenever the clk_in of the SBIO is assigned to this pin. The output is as follows:
bash ../icecube.sh io_00 > io_00.log 2>&1 && rm -rf io_00.tmp || tail io_00.log
Total HPWL cost is 351
Warning: cannot find the IO pin Input/Output direction for clk_out_pad_0 (ICE_IO)
Warning: cannot find the IO pin Input/Output direction for latch_in_pad_1 (ICE_IO)
Warning: cannot find the IO pin Input/Output direction for oen_pad_0 (ICE_IO)
Warning: cannot find the IO pin Input/Output direction for latch_in_pad_0 (ICE_IO)
Warning: cannot find the IO pin Input/Output direction for oen_pad_1 (ICE_IO)
Warning: cannot find the IO pin Input/Output direction for clk_out_pad_1 (ICE_IO)
ICE_GB_IO clk_in_pad_1 ICE_GB clk_in_pad_0_gb SB_GB_IO & SB_GB placement conflict!
used logic cells: 0
Packing failed due to placement violation!
python3 ../glbcheck.py io_00.asc io_00.glb
Traceback (most recent call last):
  File "../glbcheck.py", line 9, in <module>
    with open(argv[1]) as f:
FileNotFoundError: [Errno 2] No such file or directory: 'io_00.asc'
make[1]: *** [Makefile:4: io_00.bin] Error 1
make[1]: Leaving directory '/home/david/icestorm/icefuzz/work_5k_io'
make: *** [Makefile:132: data_5k_io.txt] Error 2

I have attached the verilog and PCF files causing this problem.
I suspect this is due to this IO being one of the special I³C IOs, although it doesn't seem to happen with pin 25, the other I³C IO pin. However before doing this I'm curious whether other had this issue, or whether it is only with the  latest icecube version (unfortunately I can't test this as I don't have anything older, nor can find any download links)
io_00.zip
.

@daveshah1 I don't think I actually have tried running the icefuzz stuff for 5k myself, so I don't have an answer for you unfortunately. If removing pin 23 fixes the issue then I'd suggest we'll do that for now.

OK, done that for now and also made a few other fixes to get icefuzz running completely for the 5k (working in my fork ultraplus_experiments) for now).

@daveshah1 Glad you were picking it up! I was using iCEcube 2.2017.01 I believe. I have it on my Linux laptop if you want it.
The error in the later version is probably worthwhile fixing like you did already.

I've got icefuzz working on the latest ICEcube, which is probably best, although it's useful to know you have an older copy if I need to test anything more.
I'm not sure whether anyone else has tried this yet, but now I have my upduino board I was curious whether we are able to generate bitstreams for the up5k yet - and the answer is yes with caveats.
I have patched arachne to add the up5k device - see [https://github.com/daveshah1/arachne-pnr/tree/up5k](my fork here).
When running a simple test project (wiring one output to an input and the other to the inverse of that input), it appears that outputs and logic work correctly, but inputs don't - they appear as stuck low internally.
My guess is that this is due to the new input configuration bits, which are currently being ignored (padeb_test_0/1 and cf_bit_35/39), but I'll investigate this further. Eventually a new IO database may be needed for the 5k as it has some special input features as well (the I³C capable pins and the constant current LED pins which also function as open drain IO).
A rough list of what needs to be done still:

Fix the above IO issue
Fix the PLL configuration in icebox - I had to remove the PLL to get arachne to work as its ports are definitely not correct
Add support for the internal oscillator and special IO types
Add support for the DSPs
Add support for the internal 1Mbit SPRAM
Reverse engineer IPConnect and add support for it (prerequisite for I²C and SPI)
Add support for I²C and SPI hard IP

The not working inputs seem to be down to the IeRens being swapped within a tile, at least for some IOs (e.g. IeRen (18, 31, 1) controls IO (18, 31, 0) and vice versa). Now I just need to work out exactly which other IeRens and IOs are swapped and all inputs will be working. My quick test is working though now, which is good.
It still remains a mystery what those unknown bits do, it seems to work fine without even setting them, but I'm sure there's a reason for them still so I will still change it so they're set. I just need to work out the pattern for setting the cf_bit bits first though.

I can happily confirm that the UPDuino boards I just received are able to receive a working bitstream, generated with the latest master branch at this time (I programmed the board with RPi3 GPIO bitbanging for now).
I'm not sure how to help, I just wanted to say how exciting this is -- still can't believe I am just using a short Makefile and compiling on-target, on a $10 dev board.

Glad this is working for you! If you want to do more complex stuff I would recommend this branch: ultraplus_experiments, it has some bug fixes compared to master and is capable of building a picoRV32 core.

@daveshah1 That sounds good, I will try that ASAP. I'm hoping for internal oscillator support; I do see that in the TODO list above but I will watch your branch to be sure.
I was following that branch before and I recently saw a new ultraplus_extended branch as well that is slightly farther ahead. Would you still suggest following your experiments branch for now, and/or what is the extended branch for?

Internal oscillator support will hopefully be added fairly soon, as it's a good simple IP to start with. The ultraplus_extended branch is currently being used for fuzzing these new features, but I'm making modifications that may temporarily break bitstream generation so I wouldn't use it for the time being. It is where I will add new ultraplus specific features though. I'll probably create a pull request once internal oscillator support is working as it seems to be a popularly requested feature.

I've made some more progress and there will be another pull request early next week once I've done some more regression testing and made a few other tweaks. The following features are now working:

DSPs (cascading is not yet supported though)
SPRAM
Internal Oscillators
LED driver pins

The changes are now in my up5k branchew of icestorm, arachne-pnr and yosys.

What is the configuration time of SRAM from NVCM for Device is ICE40UP5K-UWG30ITR

icestorm does not support the NVCM currently and I don't know anyone here using it, so you may be better off asking somewhere else.

What is the configuration time of SRAM from NVCM for Device is ICE40UP5K-UWG30ITR.
It is mentioned, The on-chip NVCM allows the device to configure instantly I want to know the time duration of "instantly" here. referred FPGA-TN-02001-3.2. Can anyone help me on this

@mrithyufpga, this is probably too late for you, but it may help others like myself who arrived here wanting to know the same thing.
As you may know, the claim in Lattice document FPGA-TN-02001 (formerly TN1248) is "The on-chip NVCM allows the device to configure instantly" but nowhere in the datasheet is any specifications of this time.
I was also curious what "instantly" really meant, and I had a spare iCE40 Ultra Breakout Board (iCE5LP4K) to test with.
The answer appears to be: the configuration time is no faster than with an external SPI flash!  The person who wrote the "instantly" claim has an unusual interpretation of that word.
I instrumented the DUT with a scope both before and after programming.  The time between CRESET being de-asserted and DONE being asserted was 50.71 milliseconds both with "Master SPI" mode (FPGA pulls data from external PROM) and with NVCM programmed (external flash PROM erased for good measure).
In both "Master SPI" and NVCM, the FPGA clocks SPI_SCK from the de-assertion of CRESET until the FPGA is configured (DONE asserted).  (That was a major disappointment for me, as I hoped OTP would stop the FPGA from driving SPI signals.)
The changes from "Master SPI" to NVCM mode are that:
a)	there is no longer traffic on SPI_SO and SPI_SI
b)	SPI_SS_B is still driven until DONE, but is driven inactive (logic '1')


LLM integration [Feature Request]

feature request
With various LLM API's the ability to upload a cover to "AI" and get a json would be handy e.g. just by uploading a
cover to open api and the request to generate a json for it goes pretty automagical.

LLMs hallucinate. Carl Gafford apparently didn't start coloring until 1970s https://dc.fandom.com/wiki/Carl_Gafford and GCD doesn't have him credited on anything before 1973 https://www.comics.org/checklist/1878/
The JSON is entirely arbitrary and doesn't make sense and the xml that it generated is not compatible in most ways with comicrack the application that originally made the ComicInfo.xml files
LLMs are a cool technology to play around with but I will not be adding any use of it to ComicTagger


Test Suite Performance Enhancements

Before contributing, please read our contributing guidelines and code of conduct.
Overview
This PR consolidates all existing test suites into one tox.ini at the root of the repository.
Related Github Issue
Include a link to the related GitHub issue, if applicable
Testing
The agent includes a suite of tests which should be used to
verify your changes don't break existing functionality. These tests will run with
Github Actions when a pull request is made. More details on running the tests locally can be found
here,
For most contributions it is strongly recommended to add additional tests which
exercise your changes.

Superseded by various PRs.

Superseded by various PRs.


Fix ordering of cut mesh groups and orientation of shared edges/faces [cut-mesh-groups-fix]

ParMesh groups (group_svert, group_sedge, ...) need to have consistent ordering across processors in order for the GroupCommunicator to work correctly. Shared edges and faces also need to be oriented consistently.
This is a fix of the conforming (cut-mesh) groups generated by ParNCMesh. The rows of the group tables are sorted according to a global vertex/edge/face ordering derived from the global leaf element sequence. Shared element orientation is determined in a similar way.

Thanks Jakub, I am testing this now.

I am encountering segfaults while testing this in the hydrocode.  I am seeing this in the case of running non-AMR meshes, but calling EnsureNCMesh() on them (there are no problems if this is not done).  I am investigating and will update with more info.


[Feature][Zeta] Support automatic delete of completed task log files

Search before asking

[X] I had searched in the feature and found no similar feature requirement.

Description
Current, zeta support creating log files for each job, #7712
But because the logging framework cannot get the job status, it cannot automatically delete completed job log files.
Therefore, we can add a scheduled task to automatically delete the completed job logs.
Requirements:

Check regularly every day, use corn expression configuration, users can change the configuration, and it is executed every night by default
The log file can no longer find the unfinished job status (running/savepoint)
The log file has not been updated for 30 days, and users can change the configuration
add testcase check this feature
5.add docs

Usage Scenario
No response
Related issues
No response
Are you willing to submit a PR?

[ ] Yes I am willing to submit a PR!

Code of Conduct

[X] I agree to follow this project's Code of Conduct

can be assigned to me :>

Implementation
Configured cron-related settings through st.yaml and implemented scheduled log cleanup using ScheduledExecutorService during server startup.
Issue
Configuration Retrieval
I tried to obtain the value of appender.routing.route.job.appender.fileName = ${file_path}/job-${ctx:ST-JID}.log from the log4j2.properties file, but I was unable to retrieve it, or I couldn't find the correct way to access it.


2.x exporter tool issue with file extensions

Godot version:
3.06 and 2.1.5
OS/device including version:
Any
Issue description:
exporting/converting a 2.x project using the conversion tool changes file endings that 3.x seems not to support? example .tex -> .texture, but 3.x still uses tex.
Steps to reproduce:
run the converter tool in 2.x then try to import or use files with the .texture extension.
Minimal reproduction project:

moving to another thread#9656


Update module.json

removed the maximum limit for v10

I've validated the module against v11 and have increased the maximum to 11.


Tests to skip/alter for variable fonts

(this issue is incomplete, I'll edit and ping you @felipesanches when I have a pretty comprehensive list of test that can be tweaked for when fb is testing a variable font)

[ ]  contour counts
[ ]  canonical naming
[ ]  com.google.fonts/check/has_ttfautohint_params
[ ]  FontForge validation (pretty sure this breaks on VF)
[ ]  ttx roundtrip looks like it also fails on VF

alright, Thanks!

@felipesanches I think the list I have above is pretty final. I'll further research the last two and let you know.

Yep, FontForge can't handle VF. Hard to tell about ttx, though. It crashes on VFs I throw at it, but I saw an issue that says maybe it's hint code that does it...? @anthrotype, any thoughts? Should I send you this font and error?

@laerm0, could you please break this issue into 5 independent issues providing details for each required modification? (and also why such modifications are needed)

Sure thing, Felipe.

Feel free to close this issue immediately after all 5 new issues are reported. Thanks!

@laerm0 please report individual issues for the problems described here.
I can't address everything at once and without more details descriptions of the problems and rationales. Please take some time to improve those requests.
For now I will move this into the "Someday Maybe" milestone.


swc does not prioritize jsc.paths by matching prefix length like tsc specifies

Describe the bug
Seems like swc does not prioritize jsc.paths matches by length but instead chooses the first (re: arbitrary, since JSON objects are unsorted) that matches.
This is opposed to the behavior specified by tsc here:

When multiple patterns match a module specifier, the pattern with the longest matching prefix before any * token is used

As far as I understand (zero rust experience, so please be forgiving), this can be rather easily fixed by sorting paths by index of * in tsc.rs.
I'm open to implementing it myself if that is indeed classified as bug that needs fixing.
Input code
import { hello } from '@app/helpers/hello';

hello();

Config
{
  "module": {
    "type": "commonjs",
    "strictMode": true,
    "noInterop": false
  },
  "jsc": {
    "paths": {
      "@app/*": [
        "packages/*/src"
      ],
      "@app/helpers/*": [
        "packages/helpers/src/*"
      ]
    },
    "baseUrl": ".",
    "parser": {
      "syntax": "typescript"
    }
  }
}

Playground link (or link to the minimal reproduction)
https://play.swc.rs/?version=1.4.13&code=H4sIAAAAAAAAA8vMLcgvKlGoVshIzcnJV6hVSCvKz1VQd0gsKNAHChWkFhXrg6XUrbm4wAwNTWsAh2tUWDUAAAA%3D&config=H4sIAAAAAAAAA3WQvQ7CMAyE9z5FlbGq6M7EysDIhBhCamghbSzblaiqvDtJm%2FIzMEX3nX3yZcryXHWuHiyobT4FFbSMGJUyrutcf2dVLpyFWiMHV0dXaIDEe7fvBchhwFdtGQL20VN3Np9Y1NLwWwaw04hVEcgpkXnIPPQNuCoqJqOScS5%2FdhqwCMR%2Fd1c%2FJISZNWN%2Bfbr5ohmOZGPNzdoPNTHQ94U89qKfcSj%2BCRtqUZY8HztmPnsBwh9FpEEBAAA%3D
SWC Info output
No response
Expected behavior
Expected behavior is to match the longer @app/helpers/* pattern and emit:
"use strict";
Object.defineProperty(exports, "__esModule", {
    value: true
});
var _hello = require("./packages/helpers/src/hello");
(0, _hello.hello)();

Actual behavior
"use strict";
Object.defineProperty(exports, "__esModule", {
    value: true
});
var _hello = require("./packages/helpers/hello/src");
(0, _hello.hello)();

Version
1.4.13
Additional context
No response

@kdy1 I took the liberty of submitting PR to address this: #8875


Adding external SMTP server within Postal?

Dear Team,
Thanks for the amazing application, which is interactive and easy to install. I just wanted to know I've one server with PowerMTA and I want to connect/configure that external server within Postal.
Looking for your help.
Thanks

Do you mean have Postal send messages to PowerMTA? or have PowerMTA send messages in the Postal and then on to their destinations.

Hey @mattmartincouk, Thanks for your message.
I mean Postal send messages to PowerMTA ;)
Because I feel it can work extremely with blend of both systems.

I don't think it can - it's not designed to do that (afaik) and it is designed to be the end point instead of something in between that and another gateway.
Of course, you have the code and can change as you wish but that's very much down to you to do/diagnose/test etc.

I feel you're right, but with adding ability in Postal for managing/forwarding to other MTA like Postfix, PowerMTA, etc. it will a great feature for easy and much better management.
Imagine you've 5 different servers and want to use one Postal installation only then this is the need of the scenario.
Thanks

It would actually make some of the features in Postal useless. Like the exact tracking of messages from being received to being sent to the remote MX. Your host would then be the MX for every message and then you'd have to search your own logs to see rejection reasons etc.
I don't see this happening and if anything, would be a step backwards. There are ways to increase the volumes that postal deals with as already documented but I see the only way of doing what you want is to intercept SMTP traffic from the server and force it through to another by firewall rules or the like but completely NOT recommended.

Thanks for your suggestion. I understand what you're saying but what I'm thinking about Postal that it is a MTA but it can be a complete Email Traffic Management suite. Thanks

You can configure Postal to relay all its outgoing messages through another relay however this isn't really recommended as you'll lose lots of features from Postal.
However, the following configuration can be added to your postal.yml if you do REALLY want to do it.
smtp_relays:
  -
    hostname:
    port: 25
    ssl_mode: Auto

latest version powermta / pmta available with lifetime license key.

another tools available
Skype: salimrezabd04
Telegram: salimrezabd
Telegram: salimrezabd1


Formatting of the code + small changes

Mainly formatting of the project.
Removed unused imports of python files.
Added some meta tags to the website.

I'll write the code of conduct later today. Sorry for the inconvenience.

it looks like it's 2 spaces now but pylint still failes...

well, this might be the reason: https://raw.githubusercontent.com/a1eaiactaest/rere/823400728d49d51f9ac1adfe3f16ccba34986423/api/app.py

DId hard reset to 6ad372a76df98b91e3b5138e8a1d94a32fc05080.


Uniswap v3 missing account that swap the tokens

The Swap event for some transactions have the same from and to which is 0x68b3465833fb72a70ecdf485e0e4c7bd8665fc45 (Uniswap V3: Router 2)
For instance
{
  swaps(
where: {hash: "0x6d1788ab192dc6e55e57d345816aea8831d27d4c4bd829daca496e252d2f2b5a"}
  ) {
    id
    from
    to
  }
}

returns
{
  "data": {
    "swaps": [
      {
        "id": "0x6d1788ab192dc6e55e57d345816aea8831d27d4c4bd829daca496e252d2f2b5a-3",
        "from": "0x68b3465833fb72a70ecdf485e0e4c7bd8665fc45",
        "to": "0x68b3465833fb72a70ecdf485e0e4c7bd8665fc45"
      }
    ]
  }
}

So there is no way to know what is the actual account that swaps the token. One way to do it is to index the originator of the transaction which is 0x000000000000d34c44564053af35e4fe271d0caa. My guess is that it would be the msg.sender.
https://arbiscan.io/tx/0x6d1788ab192dc6e55e57d345816aea8831d27d4c4bd829daca496e252d2f2b5a

Thanks for bringing this up! Looking into it.

@sydneyhenrard So our schema defines the to and from fields as the one that sent and receives the token. This should often be the same address. If you want to know the pool that the swap is occurring through, you can look at the pool entity. There is no single account doing the swapping, as the swap occurs using the collected reserves in a liquidity pool with a token pair.

The address 0x68b3465833fb72a70ecdf485e0e4c7bd8665fc45 corresponds to the Uniswap V3 - Router 2. If you look at the transaction the actual address that receives the token is 0x000000000000d34c44564053af35e4fe271d0caa. This address swaps GMX for AETH but this is the Uniswap Router that does the swap.
By using the subgraph from Uniswap https://thegraph.com/hosted-service/subgraph/ianlapham/arbitrum-minimal with the query:
{
  swaps(
where: {transaction_contains: "0x6d1788ab192dc6e55e57d345816aea8831d27d4c4bd829daca496e252d2f2b5a"}
  ) {
    sender
    recipient
    origin
  }
}

You can see that the initiator of the transaction is not lost
{
  "data": {
    "swaps": [
      {
        "sender": "0x68b3465833fb72a70ecdf485e0e4c7bd8665fc45",
        "recipient": "0x68b3465833fb72a70ecdf485e0e4c7bd8665fc45",
        "origin": "0x000000000000d34c44564053af35e4fe271d0caa"
      }
    ]
  }
}

What I don't understand is that the code seems correct, the sender (event.transaction.from) is the initiator of the transaction.
https://github.com/messari/subgraphs/blob/master/subgraphs/uniswap-v3/src/mappings/core.ts#L70
https://github.com/messari/subgraphs/blob/master/subgraphs/uniswap-v3/src/common/creators.ts#L406

Hmm. Yeah this is strange to me too. I'll run some tests on follow up on this! Thank you for laying this out for me.

Okay - I believe this is taken care of here. This version, as well as others like it will soon be grafted to production and backfilled.
https://thegraph.com/hosted-service/subgraph/steegecs/uniswap-v3-arbitrum?version=pending


React.memo with snapshot testing results in   when upgrading to React 16.12.0

🐛 Bug Report

After uplifting to React 16.12.0 all of my jest tests that do a shallow rendering and user snapshots started to fail because the name of the component is now rendered as  if the component is a memo component.
An example is a component that with React 16.11 rendered in the snapshot like this:
<Memo(Connect(InjectIntl(OptimizerFooter))) />
After uplifting to v16.12 it renders like this:

These components are using React-Redux v7.1.1
To Reproduce

Create a component that uses React-Redux.connect
Create a test that does a shallow rendering of the component
Use toMatchSnapshot

Steps to reproduce the behavior:
Expected behavior

Ideally a Memo component would render as it did prior to React 16.12
Link to repl or repo (highly encouraged)

envinfo

System:
OS: macOS Mojave 10.14.6
CPU: (12) x64 Intel(R) Core(TM) i7-8750H CPU @ 2.20GHz
Binaries:
Node: 8.9.2 - ~/.nvm/versions/node/v8.9.2/bin/node
npm: 6.12.1 - ~/.nvm/versions/node/v8.9.2/bin/npm
npmPackages:
jest: ^24.8.0 => 24.9.0

The fix is on master and will be released with v25: https://github.com/facebook/jest/pull/9196

Is there a scheduled release date for v25?


Dead link in documentation

Affected ROS2 Driver version(s)

Used ROS distribution.
Humble
Which combination of platform is the ROS driver running on.
Docker
How is the UR ROS2 Driver installed.
From binary packets
Which robot platform is the driver connected to.
UR CB3 robot
Robot SW / URSim version(s)

How is the ROS driver used.
Through the robot teach pendant using External Control URCap
Issue details
On https://docs.ros.org/en/ros2_packages/rolling/api/ur_robot_driver/usage.html#using-moveit, there is a dead link, here:
"Now you should be able to use the MoveIt Plugin in rviz2 to plan and execute trajectories with the robot as explained here."
Relevant log output
No response
Accept Public visibility

[X] I agree to make this context public

Thank you for reporting this. I've created a fixing PR.


Api-diff between 7.0-rc1 and 7.0-rc2

If you see unusual diffs in this PR, please provide GitHub suggestions with the expected text. I would greatly appreciate it.
Currently excluding these attributes from showing up in the diff: carlossanlop/arcade/AsmDiffUpdates/src/Microsoft.DotNet.AsmDiff/AttributesToExclude.txt. If you see any other attributes that you'd like me to exclude, let me know.

ASP.NET: @dotnet/aspnet-api-review

WinForms: @merriemcgaw @RussKie @JeremyKuhne - Nothing showed up, please let me know if that is correct.

WPF: @singhashish-wpf and @pchaurasia14 - Nothing showed up, please let me know if that is correct.

Libraries: @jeffhandley @karelz @ericstj @stephentoub

System.Runtime.InteropServices.JavaScript: @dotnet/interop-contrib @pavelsavara

Friendly ping. Need a code review sign off from @dotnet/interop-contrib, @pavelsavara and @dotnet/aspnet-api-review.


M.A.App should be version-less

The templates don't generate a version. This sample shouldn't.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: cabe9331-b438-fabe-18ca-15f752ec6778
Version Independent ID: 3294609f-b881-1fec-de04-2021b48de489
Content: Microsoft.AspNetCore.App metapackage for ASP.NET Core 2.1 and later
Content Source: aspnetcore/fundamentals/metapackage-app.md
Product: aspnet-core
GitHub Login: @Rick-Anderson
Microsoft Alias: riande

I'll find out next Tuesday when @natemcmaster returns from VAC. Can you remind me then? I'm guessing yes.

@Rick-Anderson Reminder to ask Nate about adding back the versions to our App package refs.

After lots of discussion and experimentation, we are going to stick with original design -- versionless PackageReference is the recommended way to use Microsoft.AspNetCore.App. We should update our docs and guidance to match this recommendation.
Just FYI - we implemented and tested alternatives ways to reference the Microsoft.AspNetCore.App shared framework. While these might have been accepted if we had done them in the first place, we did not feel the benefits of switching approaches outweighed the costs. This was especially true as we began to design 3.0. In 3.0, we plan to rework the way shared frameworks are referenced in projects. Rather than introducing more churn, we're going to make some improvements in the 2.2 SDK for using the versionless PackageReference (see dotnet/sdk#2533), and will focus our efforts on making 3.0 better.


10105

1.add chart style(linePlusBarChart, multiBarHorizontalChart, multiChart)
2.Provide api interface

3.Solve the problem of Chinese garbled

Too big and too much unrelated changes. Please learn some git-fu :)

one feature per PR
comprehensive set of commits
descriptive titles for PRs and commit message
test coverage positive PRs


fix(pypi): Generate pylist.json only if pip install runs without error

The main difference is ; vs &&. Prior to this fix, pylist.json will be generated regardless of the outcome of pip install -r requirments.txt.
This fix mitigates generating incomplete stack report., and behaviour of pypi will match with the other ecosystems(maven & npm).
Refer #327.

@arajkumar is there an associated issue for this? and will it be showing some error/info to the user or would fail silently?

@invincibleJai, Please refer the issue #327.
Error will be notified to the user., you can check this by adding a invalid dependency in requirements.txt file.

@arajkumar screenshot/gif in PR would be good to have  in PR description

Thanks @invincibleJai , Added a screenshot which shows the error prompt.


update date format to YYYY-MM-DD-HH-mm and support review before due

Hi @newle, nice idea in your PR.
There seems to be similarity in purpose between your PR and #569. Both aim to provide a mechanism so that newly learned cards can be reviewed the same day (or multiple times that day).
@st3v3nmw and I are hoping to work through the outstanding PR requests, but we might only want to incorporate either your PR or #569. Can you think of a case where your method gives a better user experience over #569?
Also I'm curious what value for reviewBeforeDue do you use, or do you find that you change it at times?
Thanks
Ronny

Unfortunately no response from OP for 6 months, closing this now.
Feel free to reopen and continue the discussion.


Path to keras-contrib v1.0

I would be in favor of aiming to make a v1.0 release at some point in the future. v1.0 would mean to have this package on PyPI and to have an online documentation.
To be able to do a v1.0, we do not need more features, we need a high quality repo and code, with standards close to the ones of keras.
I'll make a milestone for v1.0 and open issues which I think are related to that.

Hi @gabrieldemarmiesse ,
Please, let me know how I can be of assistance.
Cheers,
Wilder

Hi @wilderrodrigues ,
You can try to do #417 if you have the time to.

People can see the progression there: https://github.com/keras-team/keras-contrib/milestone/1

Hi @gabrieldemarmiesse ,
Sorry for the delay, been full of work lately. I will have a look at the issue and try to help.
Cheers,
Wilder

Okay, looking at the milestone is better. :)


Add new query CLI: query ibc-transfer denom-trace

Problem Definition
For ics20 token transfer need a Query ibc-transfer denom-trace.
example:
gaiad query ibc-transfer denom-trace CDC4587874B85BEA4FCEC3CEA5A1195139799A1FEE711A07D972537E18FDA39D --node https://rpc.testnet.cosmos.network:443

souece: https://tutorials.cosmos.network/tutorials/understanding-ibc-denoms/#

For Admin Use

[ ] Not duplicate issue
[ ] Appropriate labels applied
[ ] Appropriate milestone (priority) applied
[ ] Appropriate contributors tagged
[ ] Contributor assigned/self-assigned

This looks good.


Ignore search events that are not strings

Description
Fixes #877
Fixes:
On Chrome (windows and Mac) and Chromium (Linux), textSearchChanged in datasets-filter.component.ts is expecting a string. On Firefox, this seems to be the case. However, on Chrome, the method is getting many more events, and some come in as Event objects. This turns has the effect updating input with the string representation of the event: [object Event].
This fix checks the type of the input and rejects the update if not a string.
The fix seems to work, though I don't fully understand the event model here, so maybe this could have been done more gracefully.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
5 unchanged lines in 1 file lost coverage.
Overall coverage decreased (-0.02%) to 74.155%

Files with Coverage Reduction
New Missed Lines
%

src/app/datasets/datasets-filter/datasets-filter.component.ts
5
85.34%

Totals

Change from base Build<PHONE_NUMBER>:
-0.02%

Covered Lines:
3570

Relevant Lines:
4436

💛  - Coveralls


Add Org User status to roles description and table

In order for my end-users in our regulated environment to have confidence that they are managing access to their orgs appropriately according to their access control requirements, they need to understand CF org user management in depth, including hidden/implied roles.
This is a proposal for documenting Org User status, following up on my comment at https://github.com/cloudfoundry/cli/issues/781#issuecomment-311832690 and this discussion in #cf-docs in the Cloud Foundry Slack. I figure an illustration of what might be helpful to us can be helpful. :)
This is a best guess at what the documentation should look like - I haven't verified all of the checkboxes here, and I haven't tried running this locally to check for formatting/display errors. I verified that if I have org user status (but no other roles) on an org, I can "View users and roles".

@zrob Hey Zach-- could you review the addition of this column to the roles table and let us know if there should be any changes? Many thanks!!

Thanks @seviet! @zrob Here are screenshots of the changes, in case that's helpful for reviewing this (I got it set up locally now):

LGTM

Thanks @brittag and @zrob!!


Page 9 of Chapter 1:iOS Development in Swift 160Mb file (under section 2.1 in iTunesU outline)

Dr Outram,
Firstly - Many thanks for making your lectures public. As a novice iOS developer whose been struggling a little with Objective C and multiple view controllers with popovers and embedded UIPickers etc....I'm very keen to see if Swift is a better way to go before getting too deep into Pure Objective C.Your course seems excellent so far; a handy way to learn when you travel a lot like me ;-)
I wanted to point out that Page 9 of the 160Mb iBook as detailed above reads "We see this as a class object, called ViewController, and is a sub-class of ViewController." should the last word read "UIViewController" as this is the parent class within UIKit?
I think there might be a few "even"s where you meant "event" also (p.7 same doc).
I hope this does not offend, I just thought I'd make a note as I was reading your excellent course.
This stuff is a long way from my first beginnings as a 6502 Assembly programmer on the BBC Model B!
Kindest regards,
Gav B.

Thank you so much for your comment. It certainly does not offend - the more eyes scrutinising the materials, then so much the better.
I'll make the corrections in my next round of edits.
Many thanks
(I miss the BBC days - it was all so much simpler back then!)

Fgh

Fhc


Convert non-gold programs with meta-computation to in-line programs

I might have missed this, but it seems that the dataset releases the inlined and non-inlined versions for the gold annotated programs only. How do I convert an arbitrary predicted program with meta-computation to an inlined version? Is this feature currently supported? Thanks!!

Hi @ruiqi-zhong, your understanding is correct. Currently the released code does not support convert between the inlined and non-inlined version.


CC58087: Incorrect link structure

Hello, @telmosampaio,
This proposed file change comes from https://github.com/mspnp/architecture-center.zh-tw/pull/6.
Could you review this contribution and help to merge if agreed?
Many thanks in advance.

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/best-practices/naming-conventions.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


Created jobs do not show in Internet Explorer

Create a job in internet explorer
It is not shown in the jobs list

Environment: IE: 11.0.9600.17905, on Windows Server 2012 R2 Datacenter

This is a CSS issue related to the window width:
zoomy


FlattenMojo now respects revision property of pom Fixes Issue 9

This PR fixes https://github.com/outbrain/ci-friendly-flatten-maven-plugin/issues/9

Thanks .


str() to support large strings

(Discussion extracted from https://github.com/iovisor/bpftrace/pull/299)
This issue is to track "how could str() support kilobyte/megabyte/arbitrary string sizes?"
str() allocates strings on the BPF stack, so we reach the 512-byte limit very quickly (especially since we pay the toll again when printf() composes a perf event output buffer).
In fact, we're currently limited to tracing ~240-byte strings.
For an idea of "when would I want to trace a string larger than 240 bytes?":
My favourite dtrace command was one that was frequently guilty of maxing out the default string buffer: tracing what SQL queries were submitted to MySQL. I'd usually grow the buffer to 1024 bytes for good measure.
=====
I explored the possibility of storing the strings off-stack. The main problem there is that probe_read_str() will only write upon on-stack memory. I have ideas for workarounds (and some code progress towards those workarounds), but they're too big to be included in the scope of this pull request.
=====
Here's some code that I built to explore the possibility of storing strings off-stack:
https://github.com/iovisor/bpftrace/compare/bd038f9110009f282c657c393fae60fdb7dd50ba...Birch-san:c5088c9a5d731165e1005a6a800e611bb63f3dc3
It introduces (in codegen) a "StrCall" specialization of "Call".
StrCall has a PERCPU_ARRAY BPF map, to hold large data off-stack.
We cannot use probe_read_str() to output directly into the BPF map, but maybe we could allocate a small on-stack buffer, and ferry bytes (one buffer at a time) from BPF stack into BPF map.
Next, printf() poses a few problems:

composes the perf event output struct on the BPF stack
doesn't use runtime information to decide length of strings inside the perf event output struct

composes a fixed-size structure
determines size of structure during semantic analysis

I think PerfEventOutput can transfer data from BPF map to userspace (that's what "join" does), so we could compose the perf event output struct inside a BPF map.
====
We may find that we want a dynamically-sized perf event output structure. Like, imagine we see that args->count is just 3 bytes. We wouldn't want to send MAX_STRLEN bytes to userspace, if we know at runtime a smaller, more specific amount.
Here's some (horrifying) code I wrote to make print decide the size of its MEMCPY based on runtime information rather than semantic analysis:
https://github.com/iovisor/bpftrace/compare/master...Birch-san:6c1f19a3a4c3cf253aa23db79f5f637b6823e5b2
Notice how expr2_ is used to pass down a strlen at runtime, instead of using the strlen provided during semantic analysis.
And notice how the str call uses a parameterised AllocInst, so instead of isArrayTy(), its expr_ type has isPointerTy(). (it's a pointer to dynamically-allocated memory)
I reached a dead-end here because printf() allocates a buffer based on an LLVM StructType. It can store strings in ArrayType members, but you need to declare the size of the ArrayType up front. You cannot use an LLVM Value to dynamically size it.
The workaround here would be to stop using StructType and instead use a basic AllocInst. These support dynamic sizes based on LLVM Value. Or even better: we can use off-stack memory (a BPF map) instead of doing an allocation inside printf().
====
In conclusion: there may be a path to supporting arbitrarily-large strings. Bonus points if we can also make the perf event output buffer dynamically-sized, so we can transfer the smallest message possible (instead of our maximum buffer size). A big advantage of dynamic sizing is that the user wouldn't have to tune their maximum buffer size for the sake of performance.

This whole issue needs some serious attention as it is a significant limitation. Nice initial exploration @Birch-san says. I have hit this limitation on a number of occasions and for me it is one of bpf(traces) biggest annoyances at the minute.

@tyroguru out of interest: what kind of script do you have that needs big strings? Clear use-cases are valuable for framing the conversation.
I had another thought…
Ferrying the strings like this:
probe_read_str() -> BPF stack -> BPF map
Has a chance of working, but is high-effort.
I wonder if we could request (of Linux itself) explicit support for the following:
probe_read_str() -> BPF map
Additionally: it'd be worth asking around to assess whether I've characterised the problem correctly. Maybe there's a completely different way to approach big strings.

Hey @Birch-san - sorry but I was being lazy :-) .
Take this simple example I did a couple of weeks ago for reading /dev/null:
<EMAIL_ADDRESS>~/BPF/twi16699/BPF] cat dev-null.bt
kprobe:write_null
{
        printf("%s: %s (size %d)\n", comm, str(arg1), arg2);
}

Obviously, strings much larger than 200 bytes are written to /dev/null.
I need to understand the problem better to make any form of judgement on this but it seems like this is a fundamental problem that needs addressing in the engine room of BPF - to work around it in userland would probably be high effort as you say.

@tyroguru thanks for the example. agreed; we need way bigger strings to attack that use-case.
I've had a look at how probe_read and probe_read_str are implemented in the kernel.
I think what we need is a probe_read_str derivative (probe_read_str_to_map?) that accepts a destination of type ARG_PTR_TO_UNINIT_MAP_VALUE.
Well, obviously anything is possible if you blow holes in the security. So I'd like to understand whether there's any difference in the security model of BPF stack vs BPF map. For example: BPF maps can be shared between processes — though I imagine this is acceptable if the map owner has full control of whether to share the file descriptor.
It definitely feels right to add kernel support, since the proposed workaround is pretty shocking (and I'm pretty sure it'd be hard to write for loops that satisfy the verifier).
Getting the string into a map solves the hardest problem but creates a new one: it makes it difficult for us to compose our perf_event_output buffer (i.e. for printf). I'm not sure how to concatenate a map value with other values and exfiltrate all of those in one buffer.
Well, maybe the key is to fire several perf_event_output()s -- one per printf argument. If it's performance-sensitive, then maybe a batching mechanism would be required. Not sure what a high-quality kernel method for that would look like.

Oh, apparently it used to be possible to probe_read directly into a BPF map value?
https://github.com/iovisor/bcc/issues/900#issuecomment-272049764

if you want to work on data bigger than 512 bytes don't use the stack, the verifier error you're getting is legit, but as @4ast says you can now use a map element value (which is what I'm doing in my project). Please find more details here

ability to use maps directly as buffer pointers with helpers, so that you can bypass the limited stack size)

Indeed, his kernel commit from 2017 claims to enable a very relatable example:

I wonder if the "probe_read may only write to a destination on the stack" is a newer validation constraint that was added to the API interface… whereas the actual verifier algorithm is more forgiving. This would indicate a regression (API becoming stricter than necessary).

I had a stab at exposing the functionality with some new kernel helpers:
commit 25f076f737be964bcd2c7ab2c277f5c306074dab (HEAD -> bpf-probe-big-strings)
Author: Alex Birch<EMAIL_ADDRESS>Date:   Sun Feb 10 12:26:06 2019 +0000

    bpf: helpers to probe_read into BPF map values

diff --git a/include/uapi/linux/bpf.h b/include/uapi/linux/bpf.h
index 04b2f613dd06..98f0c62c231d 100644
--- a/include/uapi/linux/bpf.h
+++ b/include/uapi/linux/bpf.h
@@ -677,6 +677,22 @@ union bpf_attr {
  *     @buf: buf to fill
  *     @buf_size: size of the buf
  *     Return : 0 on success or negative error code
+ *
+ * int bpf_probe_read_to_map(void *dst, int size, void *src)
+ *     @dst: pointer to map value
+ *     Return: 0 on success or negative error
+ *
+ * int bpf_probe_read_str_to_map(void *dst, int size, const void *unsafe_ptr)
+ *     Copy a NUL terminated string from unsafe address. In case the string
+ *     length is smaller than size, the target is not padded with further NUL
+ *     bytes. In case the string length is larger than size, just count-1
+ *     bytes are copied and the last byte is set to NUL.
+ *     @dst: pointer to map value
+ *     @size: maximum number of bytes to copy, including the trailing NUL
+ *     @unsafe_ptr: unsafe address
+ *     Return:
+ *       > 0 length of the string including the trailing NUL on success
+ *       < 0 error
  */
 #define __BPF_FUNC_MAPPER(FN)		\
 	FN(unspec),			\
@@ -736,7 +752,9 @@ union bpf_attr {
 	FN(xdp_adjust_meta),		\
 	FN(perf_event_read_value),	\
 	FN(perf_prog_read_value),	\
-	FN(getsockopt),
+	FN(getsockopt),				\
+	FN(probe_read_to_map),		\
+	FN(probe_read_str_to_map),

 /* integer value in 'imm' field of BPF_CALL instruction selects which helper
  * function eBPF program intends to call
diff --git a/kernel/trace/bpf_trace.c b/kernel/trace/bpf_trace.c
index fe2429b382ca..ac0fffdc7f90 100644
--- a/kernel/trace/bpf_trace.c
+++ b/kernel/trace/bpf_trace.c
@@ -96,6 +96,26 @@ static const struct bpf_func_proto bpf_probe_read_proto = {
 	.arg3_type	= ARG_ANYTHING,
 };

+BPF_CALL_3(bpf_probe_read_to_map, void *, dst, u32, size, const void *, unsafe_ptr)
+{
+	int ret;
+
+	ret = probe_kernel_read(dst, unsafe_ptr, size);
+	if (unlikely(ret < 0))
+		memset(dst, 0, size);
+
+	return ret;
+}
+
+static const struct bpf_func_proto bpf_probe_read_to_map_proto = {
+	.func		= bpf_probe_read_to_map,
+	.gpl_only	= true,
+	.ret_type	= RET_INTEGER,
+	.arg1_type	= ARG_PTR_TO_UNINIT_MAP_VALUE,
+	.arg2_type	= ARG_CONST_SIZE_OR_ZERO,
+	.arg3_type	= ARG_ANYTHING,
+};
+
 BPF_CALL_3(bpf_probe_write_user, void *, unsafe_ptr, const void *, src,
 	   u32, size)
 {
@@ -503,6 +523,36 @@ static const struct bpf_func_proto bpf_probe_read_str_proto = {
 	.arg3_type	= ARG_ANYTHING,
 };

+BPF_CALL_3(bpf_probe_read_str_to_map, void *, dst, u32, size,
+	   const void *, unsafe_ptr)
+{
+	int ret;
+
+	/*
+	 * The strncpy_from_unsafe() call will likely not fill the entire
+	 * buffer, but that's okay in this circumstance as we're probing
+	 * arbitrary memory anyway similar to bpf_probe_read() and might
+	 * as well probe the map value. Thus, memory is explicitly cleared
+	 * only in error case, so that improper users ignoring return
+	 * code altogether don't copy garbage; otherwise length of string
+	 * is returned that can be used for bpf_perf_event_output() et al.
+	 */
+	ret = strncpy_from_unsafe(dst, unsafe_ptr, size);
+	if (unlikely(ret < 0))
+		memset(dst, 0, size);
+
+	return ret;
+}
+
+static const struct bpf_func_proto bpf_probe_read_str_to_map_proto = {
+	.func		= bpf_probe_read_str_to_map,
+	.gpl_only	= true,
+	.ret_type	= RET_INTEGER,
+	.arg1_type	= ARG_PTR_TO_UNINIT_MAP_VALUE,
+	.arg2_type	= ARG_CONST_SIZE_OR_ZERO,
+	.arg3_type	= ARG_ANYTHING,
+};
+
 static const struct bpf_func_proto *tracing_func_proto(enum bpf_func_id func_id)
 {
 	switch (func_id) {
@@ -514,6 +564,8 @@ static const struct bpf_func_proto *tracing_func_proto(enum bpf_func_id func_id)
 		return &bpf_map_delete_elem_proto;
 	case BPF_FUNC_probe_read:
 		return &bpf_probe_read_proto;
+	case BPF_FUNC_probe_read_to_map:
+		return &bpf_probe_read_to_map_proto;
 	case BPF_FUNC_ktime_get_ns:
 		return &bpf_ktime_get_ns_proto;
 	case BPF_FUNC_tail_call:
@@ -542,6 +594,8 @@ static const struct bpf_func_proto *tracing_func_proto(enum bpf_func_id func_id)
 		return &bpf_get_prandom_u32_proto;
 	case BPF_FUNC_probe_read_str:
 		return &bpf_probe_read_str_proto;
+	case BPF_FUNC_probe_read_str_to_map:
+		return &bpf_probe_read_str_to_map_proto;
 	default:
 		return NULL;
 	}
diff --git a/tools/include/uapi/linux/bpf.h b/tools/include/uapi/linux/bpf.h
index 4c223ab30293..8740e7374698 100644
--- a/tools/include/uapi/linux/bpf.h
+++ b/tools/include/uapi/linux/bpf.h
@@ -736,7 +736,9 @@ union bpf_attr {
 	FN(xdp_adjust_meta),		\
 	FN(perf_event_read_value),	\
 	FN(perf_prog_read_value),	\
-	FN(getsockopt),
+	FN(getsockopt),				\
+	FN(probe_read_to_map),		\
+	FN(probe_read_str_to_map),

 /* integer value in 'imm' field of BPF_CALL instruction selects which helper
  * function eBPF program intends to call

I got this compiled and booted into it, built libbpf, and bcc against it, added new IRBuilder definitions, added some calling code and successfully compiled bpftrace… but I guess I've missed some step. The verifier says that I don't have any new helper functions.

@Birch-san can you please bring this up on the netdev mailing list? http://vger.kernel.org/vger-lists.html#netdev This is where kernel BPF development is done.
I think you'll get asked to show why bpf_probe_read_to_map() is necessary, and we can't just use bpf_probe_read() to read to a map. If that's broken, they may want to fix it, and add a test to test_verifier.c to make sure it stays fixed.

@brendangregg thanks for pointing me to the right people. mailing lists are a new world to me, so I'm lurking for a bit first. then I'll ask whether probe_read_* was intended to be stack-only. may need to prepare a minimal example for this in bcc.

composes the perf event output struct on the BPF stack

@Birch-san I opened #750 which should solve this, you might be interested :)

I wonder if the "probe_read may only write to a destination on the stack" is a newer validation constraint that was added to the API interface… whereas the actual verifier algorithm is more forgiving. This would indicate a regression (API becoming stricter than necessary).

I would guess it's more likely that the desired behavior changed and the API documentation was not updated. Which docs was you looking at? I don't see any reference to "stack only" for probe_read[_str] on include/uapi/linux/bpf.h. Also, looking at the tests this seems to be the desired behavior:
// tools/testing/selftests/bpf/test_verifier.c
	{
		"helper access to map: full range",
		.insns = {
			BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
			BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
			BPF_ST_MEM(BPF_DW, BPF_REG_2, 0, 0),
			BPF_LD_MAP_FD(BPF_REG_1, 0),
			BPF_EMIT_CALL(BPF_FUNC_map_lookup_elem),
			BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 4),
			BPF_MOV64_REG(BPF_REG_1, BPF_REG_0),
			BPF_MOV64_IMM(BPF_REG_2, sizeof(struct test_val)),
			BPF_MOV64_IMM(BPF_REG_3, 0),
			BPF_EMIT_CALL(BPF_FUNC_probe_read),
			BPF_EXIT_INSN(),
		},
		.fixup_map2 = { 3 },
		.result = ACCEPT,
		.prog_type = BPF_PROG_TYPE_TRACEPOINT,
	},

@mmarchini I'm indeed interested; thanks for progressing this.
====
The reason I believe that probe_read_str() refuses to write into a BPF map value (and will only write onto the BPF stack), is that I attempted it before:
https://github.com/iovisor/bpftrace/compare/bd038f9110009f282c657c393fae60fdb7dd50ba...Birch-san:c5088c9a5d731165e1005a6a800e611bb63f3dc3
My attempt looks very similar to what's in your pull request. Maybe there's some significance in your using probe_read instead of probe_read_str. Or maybe your fixed-size read gives the verifier extra guarantees.
The error I got at the time (commit message is in commit 52677d0 of this diff) was:

R1 type=map_value_or_null expected=fp

My understanding of that error was as follows:

probe_read_str() wants its arg1 (*dst) to be a pointer to the stack, yet I'm asking it (probably) to write into PTR_TO_MAP_VALUE.

====
I found another expected=fp here: https://github.com/iovisor/bcc/issues/209
Yonghong-song explained the error:

for map operations. the verifier has the following constraints for safely
reason (see kernel/bpf/verifier.c)
ARG_PTR_TO_MAP_KEY is one of such argument constraints. It means that the register type passed to this function must be PTR_TO_STACK and it will be used inside the function as 'pointer to map element key'

====
Here's the prototype for probe_read_str, which demonstrates the constraints on it:
https://github.com/torvalds/linux/blob/390e99cfdda1334f45c718cc02cd26eb3135f233/kernel/trace/bpf_trace.c#L565
static const struct bpf_func_proto bpf_probe_read_str_proto = {
	.func		= bpf_probe_read_str,
	.gpl_only	= true,
	.ret_type	= RET_INTEGER,
	.arg1_type	= ARG_PTR_TO_UNINIT_MEM,
	.arg2_type	= ARG_CONST_SIZE_OR_ZERO,
	.arg3_type	= ARG_ANYTHING,
};

Its arg1 (*dst), has type ARG_PTR_TO_UNINIT_MEM, which is described here:
https://github.com/torvalds/linux/blob/390e99cfdda1334f45c718cc02cd26eb3135f233/include/linux/bpf.h#L194

the following constraints used to prototype bpf_memcmp() and other functions that access data on eBPF program stack
…
pointer to memory does not need to be initialized, helper function must fill all bytes or clear them in error case.

This suggests to me that ARG_PTR_TO_UNINIT_MEM refers to stack memory.
====
Recall the error I received, R1 type=map_value_or_null expected=fp.
https://github.com/torvalds/linux/blob/390e99cfdda1334f45c718cc02cd26eb3135f233/kernel/bpf/verifier.c#L389
/* string representation of 'enum bpf_reg_type' */
static const char * const reg_type_str[] = {
// …
	[PTR_TO_MAP_VALUE_OR_NULL] = "map_value_or_null",
	[PTR_TO_STACK]		= "fp",
// …
};

This suggests again to me that BPF required me to point to the stack, when in reality I pointed at a map value.
====

I would guess it's more likely that the desired behavior changed and the API documentation was not updated. Which docs was you looking at?

The error message I received in my attempt, and the corroboration above were the only reason for my believing this impossible.
====
It's heartening that you've got it working. I don't understand (given the above) why it's permitted.
If it turns out now that we have all the kernel support necessary to do this, then I'm tempted to have another stab at it.

are there any news regarding this issue or any way to work around the string length limitation that you came up with in the meanwhile? I'm facing this problem as well with long file paths when tracing file-related system calls. thanks!

I tried to raise BPFTRACE_STRLEN beyond 200 and got the error message with a link to this issue. For the next person that follows this path, I'll leave my workaround here with which I was able to print out a max ~300kb of ascii from arg1:
export BPFTRACE_STRLEN=200;\
    export BPFTRACE_STR_TRUNC_TRAILER=; \
    sudo -E bpftrace --unsafe -e \
    'uprobe:<file>:<func/offset>
    {
        $s = arg1;
        $i = 0;
        while ($i < 300000) {
            if(str($s+(uint64)$i) == "\0") {
                break;
            }
            printf("%s", str($s+(uint64)$i));
            $i+=199
        }
        printf("\n\n");
    }'

This was pretty much the max amount I was able to print out after some amount of fiddling. Any larger than this and the BPF program became to large. The amount of instructions inside the while loop seemed detrimental to how big a while loop we could have. So in case you want to increase the logic inside the while loop you may need to reduce the iteration count.

Hey @mathias-nyman, your proposal seems to work for me, thx a lot. I'm wondering about $s+(uint64)$i. Is this "safe"? I don't know much about "bpf". Comparing this to my "C days" decades ago, it looks like some pointer arithmetics potentially leading to a pointer way beyond the valid memory area. For example when arg1 contains a string of 300 characters.

i=0 -> $s+(uint64)$i = $s OK
i=199 -> $s+(uint64)$i = $s+199 OK
i=398 ->  $s+(uint64)$i = $s+398 KO, way beyond the end of "arg1"

I did some tests related to tracepoint:syscalls:sys_enter_rename. I wanted to log the potentially long string args->newname
and got output like this:
/home/uli/Downloads/tmp/01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789.txt^X?^U^X?<C2>^U^X?<FA><C2>^U^X?01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789.txtextMenusragebRequesttxt

Please note that I used BPFTRACE_STRLEN=64 (and +=63). I guess this shouldn't change much...
I definitely used "/home/uli/Downloads/tmp/01234567...0123456789.txt" for the "newname".
Thx for your help, Uli

@uli-heller you're absolutely right about the lack of bounds checking. I remember being confused as to why it seemed to work for the program I was instrumenting at the time, but it did :man_shrugging: I was on a mission of extracting data and didn't care much about correctness at the time, sorry. Lemme know if you figure it out.
If you only have medium-sized strings to print out without the chance of overflow, you can still use this trick by setting BPFTRACE_STRLEN=2 (and +=1) but then you also have to decrease the iteration count (the number in the while loop).

@mathias-nyman : Thx a lot. I followed a different approach using two nested loops - one to simulate something like "strlen()". Your approach is much easier. I modified it a little bit. Now I have a solution which doesn't need and BPFTRACE variables:
      //
      // Abgeleitet von:
      //   https://github.com/iovisor/bpftrace/issues/305
      //
      $st           = args->newname; // hiervon soll der komplette Inhalt ausgegeben werden
      $maxlen       = 500;           // ... hoffentlich nicht mehr als 500 Zeichen (notfalls: Hochsetzen!)
      while ($maxlen > 0) {
	$sst = str($st, 1);
	if ($sst == "") {
	  break;
	}
	printf("%.1s", $sst);
	$st++;
	$maxlen--;
      }
      printf("\n");

There is just one potential caveat: What about multibyte characters?

Follow ups to initial support are being tracked here: https://github.com/bpftrace/bpftrace/issues/3229

If you cannot use newer version of bpftrace, you can resort to auxiliary methods:
I used C preprocessor to preprocess bpftrace scripts and defined these macros:
#define MAX_STR_SIZE 63
#define FIRST_OFFSET MAX_STR_SIZE
#define SECOND_OFFSET MAX_STR_SIZE+MAX_STR_SIZE
#define THIRD_OFFSET MAX_STR_SIZE+MAX_STR_SIZE+MAX_STR_SIZE

#define PRINT_BIG_STR(STRING) \
  printf("%s\\0\\0", str(STRING)); \
  printf("%s\\0\\0", str(STRING+FIRST_OFFSET)); \
  printf("%s\\0\\0", str(STRING+SECOND_OFFSET)); \
  printf("%s\\0\\0", str(STRING+THIRD_OFFSET))

And created python script, which concatenates my string properly:
import sys;
import itertools as it;
for line in sys.stdin.buffer:
  if rb"\0\0" in line:
    string_parts = line.split(rb"\0\0");
    full_out = list(it.takewhile(lambda _s: len(_s) == 63, string_parts))
    remainder = list(it.dropwhile(lambda _s: len(_s) == 63, string_parts))
    sys.stdout.buffer.write(b"".join(full_out + [remainder[0]]) + b"\n")
  else:
    sys.stdout.buffer.write(line)

And then you can launch it like this:
bpftrace <(cpp -w -P script.bt) | python -c '
import sys;
import itertools as it;
for line in sys.stdin.buffer:
  if rb"\0\0" in line:
    string_parts = line.split(rb"\0\0");
    full_out = list(it.takewhile(lambda _s: len(_s) == 63, string_parts))
    remainder = list(it.dropwhile(lambda _s: len(_s) == 63, string_parts))
    sys.stdout.buffer.write(b"".join(full_out + [remainder[0]]) + b"\n")
  else:
    sys.stdout.buffer.write(line)
'

P.S. There are edge cases (for example if string length is multiple of 63), but for my task this approach suffices.


Update networks supported by Zodiac app

Type

Update

Compatible Networks
MAINNET = 1,
RINKEBY = 4,
GOERLI = 5,
XDAI = 100,
BSC = 56,
GNOSIS_CHAIN = 100,
POLYGON = 137,
Code for review
https://github.com/gnosis/zodiac-safe-app/releases/tag/v1.0.14
IPFS hash/App URL
https://zodiac.gnosisguild.org/
Desired date
ASAP

Morning! Unfortunately the app fails to be loaded for me on Goerli 😢
Here is a short video with the error I am getting:
https://user-images.githubusercontent.com/92332710/194244193-c5812d77-4dfc-460b-b468-8ce28f15ed40.mp4

@JagoFigueroa and @mikhailxyz, this should be resolved, the Zodiac is working on each of the networks listed above.

Can confirm that all bueno, thanks!
To clarify, would you like us to add the app on Goerli only or to all of the chains present on this ticket?
I see that currently we don't have the app listed on: Goerli, Optimism & Arbitrum.
Cheers 😄

It would be great to add it to all of the listed supported networks.

Sure, no problem! I will let the team know and we will update you here when the app is listed.
Cheers!

App should be available on that networks too


Task - Manager application review page

Resolves #2892
Notes:
UPDATE: This is now using the API to fetch data. For testing, any live or closed job poster should have a priority user with their application version_id set to two.

There are a couple other pieces of text we may want to change or hide in the manager view. First, check point 5 here.
And then there are several places where the word "you" is used that are no longer accurate, such as There are 2 other unrelated skills attached to this experience. You can see them on your profile and You've selected this experience as an indicator of how you meet the education requirements for this job. in the experience accordions, and You haven't attached any experiences to this skill.
I wouldn't block merging of this PR based on these points though, since we'll probably need to get new text from design.

There are a couple other pieces of text we may want to change or hide in the manager view. First, check point 5 here.
And then there are several places where the word "you" is used that are no longer accurate, such as There are 2 other unrelated skills attached to this experience. You can see them on your profile and You've selected this experience as an indicator of how you meet the education requirements for this job. in the experience accordions, and You haven't attached any experiences to this skill.
I wouldn't block merging of this PR based on these points though, since we'll probably need to get new text from design.

There are still two changes that need to be made (Remove Applicant Profile link, and changing the text made specifically for applicants). However, I'd like a quick review and confirmation with design team. I want to confirm they meant to remove the Profile link and not the Application link (since its linking to the same page). For the text changes, like @tristan-orourke said, it doesn't have to block merging the PR, since we'll most likely be getting new text anyways.


VSCode 1.38.1 - Cannot export my Markdown (unless in HTML)

Hi,
I'm working with Visual Studio Code 1.38.1 and I'm getting an error message when I want to export to PDF/PNG/JPG (HTML export works!).

Any idea?

Would you provide us error logs? After executing export, Marp CLI will be outputted error logs in VS Code developer console. (Help -> Toggle Developer Tools -> Console tab)

My bad, the environment variable for Chromium wasn't set.
Everything works now :)

All right. Or you can set custom chrome path from preference markdown.marp.chromePath. 👌
@pcotret Please let me ask extra question for clearify what is happened. Are you using macOS or Windows? (Marp CLI will be supposed to detect Chromium automatically if you are using Linux)


[UWP] Releasing a mouse button over a toucheffect control will trigger its completed event, regardless of where you started the click

Open any page with a control that has a toucheffect completed event associated with it.
Move the mouse cursor to an empty location on the page.
Press the mouse left button and then move the mouse cursor over the toucheffect control.
EXPECTED:
-- Nothing happens because you've not actually clicked on the object.
OBSERVED:
-- It will fire the completed event.

would you like to debug, fix and make PR ? :)

I might have a fix for the most basic scenario, but now i'm finding some other edge cases where it'll break the plugin. I'll share more in a bit.

fixed https://github.com/AndreiMisiukevich/TouchEffect/pull/20


qt5* bumped to 5.15.1

Description of package
This PR features a few things:

new https sources for qt5 and qt5-webengine
adding the -silent flag to qt5 to make errors across all qt packages easier to spot
a small cleanup of some build scripts because of upstream changes
a thorough cleaning of glibc and dbus from qt5-webengine because upstream changed how they find required packages (see patch 0004)

Installed manifest of package
http://ix.io/2xy1
http://ix.io/2xy2
http://ix.io/2xy3
http://ix.io/2xy4
http://ix.io/2xy5
http://ix.io/2xy6

Existing package

[x] I am the maintainer of this package.

Good stuff.


feat: support Vite 6

Description
Fix #769
Additional context

Update all dependencies and fix new versions breaking changes
Remove Vue2 support (reached EOL a year ago)
I kept the (very) old versions of vitest and vite-node, because I could not make it work with the newer version...

What is the purpose of this pull request?

[ ] Bug fix
[x] New Feature
[ ] Documentation update
[ ] Other

Everything's working for Vue 🥳 !
I'm trying to fix the bugs for Svelte and Nuxt before releasing this.


Backup Directory and Backups Owned by Root

It looks like the backup directory, subdirectories, and backups themselves all end up being owned by root.  Is there an easy way to modify the backups docker container to use a specific user with lessor permissions (like postgres:postgres) for performing the backups assuming the selected backup folder has adequate permissions for that user?

Yes, this is possible! Here's the docs for the container that runs the backups, you would just need to add user: postgres:postgres to the config for the backup container, and ensure that the folder has correct permissions


(#101) Modularize the library

Resolves #101

Codecov Report
Patch coverage: 98.27% and project coverage change: -4.98 :warning:

Comparison is base (702dc79) 95.00% compared to head (365fc3f) 90.02%.

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
Additional details and impacted files
@@            Coverage Diff             @@
##           master     #102      +/-   ##
==========================================
- Coverage   95.00%   90.02%   -4.98%
==========================================
  Files           4       12       +8
  Lines         621      682      +61
  Branches       96       92       -4
==========================================
+ Hits          590      614      +24
- Misses         27       59      +32
- Partials        4        9       +5

Flag
Coverage Δ

acceptance
?

unit
90.02% <98.27%> (+1.94%)
:arrow_up:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

Mainframe3270/keywords/connection.py
91.25% <91.25%> (ø)

Mainframe3270/__init__.py
96.22% <100.00%> (-3.78%)
:arrow_down:

Mainframe3270/keywords/__init__.py
100.00% <100.00%> (ø)

Mainframe3270/keywords/assertions.py
100.00% <100.00%> (ø)

Mainframe3270/keywords/commands.py
100.00% <100.00%> (ø)

Mainframe3270/keywords/read_write.py
100.00% <100.00%> (ø)

Mainframe3270/keywords/screenshot.py
100.00% <100.00%> (ø)

Mainframe3270/keywords/wait_and_timeout.py
100.00% <100.00%> (ø)

Mainframe3270/librarycomponent.py
100.00% <100.00%> (ø)

Mainframe3270/py3270.py
77.90% <100.00%> (-10.20%)
:arrow_down:

... and 1 more

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


Add aggregate query type

initial changes to add an Aggregate query type, which will do a "prio-like" aggregation, but using modulus conversion instead of proofs.

right now, the two QueryType:Aggregate types don't have any config, but we'll probably want to include the number of histogram bins being aggregated as an query parameter.

We'll also need to take the maximum number of bits in the input bit-decomposed shares (N in Alex's document)


Allow @available(swift, ...) nested within @available(macOS, ...)

Previously, we treated this as an attempt to widen the availability of a member beyond its context, but it's really a different axis of availability.
Also, warn about using @available on extensions without an OS, which we just completely ignore right now.
rdar://problem/32632327

@swift-ci Please test

@swift-ci Please test source compatibility

What about a test for multiple attributes, like:
@available(macOS 10.12, *)
@available(swift 400)
extension DummyType {}

and
@available(swift 400)
@available(macOS 10.12, *)
extension DummyType {}

Should it warn?

Ah, I see no reason why the existing code wouldn't work for that, but it's a good test to have! Thanks for the suggestion.

@swift-ci Please test

Build failed
Swift Test OS X Platform
Git Sha - 75d107a5d47c9a08b554d3ef5b22e03c115bbcde

Build failed
Swift Test Linux Platform
Git Sha - 75d107a5d47c9a08b554d3ef5b22e03c115bbcde

Hm, it's the two failures that @davezarzycki was seeing earlier. Except I did rebase…

@swift-ci Please test macOS

Hi @jrose-apple – I may be grasping at straws here, but I'm seeing seemingly random but repeatable/inexplicable test time outs in other scenarios too. For example, @xedin made what a seemingly harmless change in #15134 that caused two simple/fast tests to start timing out on my Linux box. Do the timeouts in this pull request go away if you remove -swift-verion 3? That worked on my Linux box for #15134.

It seems like these failures are sporadic, I saw them happen couple of times on Linux CI even before my changes went in.

I'm not sure that what you saw on Linux was related to the OpenCL and SceneKit tests on macOS, because it's always those two tests. I asked Mishal to take a look at the particular bot that's been running our tests—turns out it was one specific machine for at least my failure and one of yours—and he said he'd take it offline for now.
Linux tests have been bumping up against the timeouts for a while over the last few months. I wonder if there are one or two long-running tests there and/or if we've regressed on something, but no one's looked into it yet that I know of.


Nordland

By how many frames is your nordland dataset extracted? I got the results by 10 frames 87.2, 93.9, 95.6.

Hello, we use Nordland-test for the experiments, which contains 3450  images in database/queries. The threshold is set to ±2 frames.

Can you provide the code to extract them?

You can download the dataset here and rewrite the image name as this. If you need more help for this issue, you can add me on WeChat.

What's your WeChat?

1600925872


Question
How do I change the prompt of the terminals or consoles?

Which shell are you using?

In all of them it has the promp that I want to change, I tried to change PS1 from .bashrc but it did not work, currently I use guake but in fish shell, power shell they also have the customized promp that I would like to change...

In all of them it has the promp that I want to change, I tried to change PS1 from .bashrc but it did not work, currently I use guake but in fish shell, power shell they also have the customized promp that I would like to change...

Ok but are you using BASH, FISH or ZSH as shell?

echo $SHELL return /usr/bin/zsh, if that's what you mean...

echo $SHELL return /usr/bin/zsh, if that's what you mean...

At this point, u should edit $HOME/.zshrc file on PROMPT variable.

Resolved, Thank you very much.


Handle profile-viewing errors more gracefully

fixes #372

I'm not really sure what this is doing.

Previously it looked like this when you looked for a name that didn't exist, because our logic for hiding the templates was wrong.
Now it looks like this without the empty template.

Are you missing some code? Because currently the profile.view.html does " ng-show="profile.data.name"" but you are now changing the username to be on profile.name, which implies to me that the user profile will never show.

profile.data.name will get set here when the response from the server arrives.

Looks fine. :+1: Merge when the build is passing.


Remove anaconda and create script to create /etc/vbox/networks.conf

VirtualBox network error
Due to a recent update to VirtualBox it can no longer create virtual networks without allowing the ip range in /etc/vbox/networks.conf so i added a script to create that file with the necessary ip's in it.
Run it with
chmod +x vbox-network.sh
sudo ./vbox-network.sh # Must be run with sudo as /etc is protected

Anaconda error
Running vagrant up caused the following error:
webserver: WARNING conda.core.envs_manager:register_env(46): Unable to register environment. Path not writable or missing.
    webserver:   environment location: /home/vagrant/anaconda3
    webserver:   registry file: /home/vagrant/.conda/environments.txt

Which resulted in it not installing python and pip. Therefore i just bypassed it by directly installing python and pip, since it's a isolated reproducible environment that should be fine.
Appendinx
Virtual box error:
There was an error while executing `VBoxManage`, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.

Command: ["hostonlyif", "ipconfig", "vboxnet2", "--ip", "<IP_ADDRESS>", "--netmask", "<IP_ADDRESS>"]

Stderr: VBoxManage: error: Code E_ACCESSDENIED (0x80070005) - Access denied (extended info not available)
VBoxManage: error: Context: "EnableStaticIPConfig(Bstr(pszIp).raw(), Bstr(pszNetmask).raw())" at line 242 of file VBoxManageHostonly.cpp

Same for the client:
There was an error while executing `VBoxManage`, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.

Command: ["hostonlyif", "ipconfig", "vboxnet2", "--ip", "<IP_ADDRESS>", "--netmask", "<IP_ADDRESS>"]

Stderr: VBoxManage: error: Code E_ACCESSDENIED (0x80070005) - Access denied (extended info not available)
VBoxManage: error: Context: "EnableStaticIPConfig(Bstr(pszIp).raw(), Bstr(pszNetmask).raw())" at line 242 of file VBoxManageHostonly.cpp

Lovely!!! Thank you very much for your help! Especially for the script that set the IP ranges in VirtualBox' config file. For some reason I did not observe the issue with the Anaconda environment in my setup. But I like your change to a virtual environment with the "standard Python" a lot, especially since it reduces download times and sizes significantly.


Rollback requested by user

So I can't create any project because even if I delete it from the CF dashboard, it just comes back from the dead.
JAWS: Select a region for your project:

us-east-1
us-west-2
eu-west-1
ap-northeast-1
JAWS: Select an AWS profile for your project:
default
JAWS: Creating CloudFormation Stack for your new project (~5 mins)...
JAWS: - { StackId: 'arn:aws:cloudformation:us-east-1:3948384923:stack/dev-wl
-NybGxMxZe-r/ba32434-32b1-33a-8ec1-50f98270ag',
StackName: 'dev-wl-NybGxMxZe-r',
Description: 'wl-NybGxMxZe resources',
Parameters:
[ { ParameterKey: 'aaProjectName',
ParameterValue: 'wl-NybGxMxZe' },
{ ParameterKey: 'aaNotficationEmail',
ParameterValue<EMAIL_ADDRESS>},
{ ParameterKey: 'aaStage', ParameterValue: 'dev' },
{ ParameterKey: 'aaJawsBucket',
ParameterValue: 'jaws.dev.useast1.wl.io' },
{ ParameterKey: 'aaDefaultDynamoRWThroughput',
ParameterValue: '1' },
{ ParameterKey: 'aaDataModelStage', ParameterValue: 'dev' },
{ ParameterKey: 'aaProjectDomain',
ParameterValue: 'mydomain.com' } ],
CreationTime: Tue Oct 20 2015 22:22:37 GMT-0700 (Pacific Daylight Time),
StackStatus: 'ROLLBACK_IN_PROGRESS',
StackStatusReason: 'The following resource(s) failed to create: [JawsBucket, I
amRoleApiGateway, IamRoleLambda]. . Rollback requested by user.',
DisableRollback: false,
NotificationARNs: [],
Capabilities: [ 'CAPABILITY_IAM' ],
Outputs: [],
Tags: [ { Key: 'STAGE', Value: 'dev' } ] }
{ [JawsError: Something went wrong while createing your cloudformation]
name: 'JawsError',
message: 'Something went wrong while createing your cloudformation',
messageId: undefined }

basically once you created a project, you can't use the same project name again, even if you delete it and it disappears from CF. strange.

I wonder if the jaws deployment command could also print out the exact resource or permission that causes a cf failure.

We know when a CloudFormation create/update API call fails because the response has StackStatus: 'ROLLBACK_IN_PROGRESS', and jaws prints that to the cli.
You can manually debug this to find the first event that caused all other resources to get rolled back. Go to the CloudFormation web ui, click the Stack, and look at the Events tab. The oldest event that has the status CREATE_FAILED is the one that caused the failure.

well fellas, it's working now on Ubuntu, but definitely trouble on Windows 7. I'm going to leave this one open in case someone else runs into the same problem
My solution: Ditch windows, and do it on Ubuntu.

Hmm.
Well, as far as I can tell there's no way to use awscli to output the first failure, but if you encounter an error then you can use this command to list all events. The output is JSON and could be parsed to return the value of ResourceStatusReason for the first event where ResourceStatus is "CREATE_FAILED":
$ aws --profile=default cloudformation describe-stack-events --stack-name=<stack-name>

When the jaws ES6 refactor is done, it would be cool to use this to describe cloudformation failures. I'd be happy to do it myself. :smile:
The "ResourceStatusReason" value is actually very helpful most of the time! Here's part of a real failure I got while going through an was tutorial:
$ aws --profile=theopak cloudformation describe-stack-events --stack-name=myvoteapp
{
    "StackEvents": [
    { … },
    {
        "StackId": "arn:aws:cloudformation:us-east-1:178157223430:stack/myvoteapp/ab396d30-7355-11e5-8420-507bb903ae0a",
        "EventId": "DynamoDBAggregatesTable-CREATE_FAILED-2015-10-15T15:59:22.263Z",
        "ResourceStatus": "CREATE_FAILED",
        "ResourceType": "AWS::DynamoDB::Table",
        "Timestamp": "2015-10-15T15:59:22.263Z",
        "ResourceStatusReason": "VoteAppAggregates already exists in stack arn:aws:cloudformation:us-east-1:178157223430:stack/my-demo-app/e113b380-7354-11e5-a811-50d5018a1236",
        "StackName": "myvoteapp",
        "ResourceProperties": "{\"ProvisionedThroughput\":{\"WriteCapacityUnits\":\"1\",\"ReadCapacityUnits\":\"1\"},\"TableName\":\"VoteAppAggregates\",\"AttributeDefinitions\":[{\"AttributeType\":\"S\",\"AttributeName\":\"VotedFor\"}],\"KeySchema\":[{\"KeyType\":\"HASH\",\"AttributeName\":\"VotedFor\"}]}\n",
        "PhysicalResourceId": "",
        "LogicalResourceId": "DynamoDBAggregatesTable"
    }
  ]
}

still happening on windows 7. unable to create a new project as it says ROLLBACK.
works fine on Ubuntu.

As of Serverless v0.5 we have a new sls project remove and sls resources remove actions...This should solve the issue :)


Fix for #3887

Regex for a valid class :
"^[\p{L}][\p{L}\p{N}]*";
starts with underscore / UNICODE letter  followed by 0 or more (underscore or UNICODE letters or digits)
if pattern fails to match , throw an exception as code was doing previously
tested for
ant clean test
ant clean install

Great, thanks!

Maven tests doesn't pass:
mvn clean test

Reverting it.

Imho it's better to use old approach: it's much faster than regexp.

I already included the check for '.' char in last snapshots.