What unstable Chapel features do you use?

Hello Chapel User Community!

As you may be aware, we've been working on a stabilization push so that the features you rely on in your Chapel programs will stay consistent between releases in the future. Now that the most recent release is considered a candidate for an official 2.0 version, we thought this would be a good time to get a sense for what remaining unstable features are important to our user base, so that we can better prioritize what to stabilize next.

With that in mind, we've created a Chapel program (included in this email and also available at https://github.com/chapel-lang/chapel/blob/main/tools/unstableWarningAnonymizer/unstableAnonScript.chpl ), which will summarize the unstable warnings in your key programs. This summary will not include any identifying details like module or variable names, so even if your source code is not intended for public eyes, you should be able to send us the result of running this script without worry.

This script is intended to be used with the most recent Chapel release (1.32), as that release has the most complete coverage of unstable features. If you use it with earlier releases, please let us know when providing your result file.

Here are the steps you'd take to use this script:

  1. Compile the program included in this email like you would any normal Chapel program, e.g.

chpl unstableAnonScript.chpl

This should create an executable named unstableAnonScript.

  1. Compile and run your program as you would normally, with the addition of the compilation flag --warn-unstable (which will cause any use of unstable features to trigger a warning), and save the full output into a file. E.g.

chpl --warn-unstable myProgram.chpl >myUnstableOutput.txt 2>&1
./myProgram >>myUnstableOutput.txt 2>&1

After these commands, myUnstableOutput.txt (or whatever you've named it) should contain any unstable warnings you may trigger in your code, as well as any other potential output that occurs when compiling and running your program.

  1. Run the built script over your output file. For our convenience, it would be helpful to run with the --csv and --sorted flags, or -c and -d if you want to use the shorter version of those flags.

./unstableAnonScript --csv --sorted --inputFiles myUnstableOutput.txt --outputFile mySummary.csv


./unstableAnonScript -c -d -i myUnstableOutput.txt -o mySummary.csv

Note that --inputFiles / -i can take multiple files, so if you have multiple chapel programs you'd like to share the results for, you cancombine the results together by specifying the unstable warnings from all of those programs at the same time:

./unstableAnonScript -c -d -n -i myUnstableOutput1.txt myUnstableOutput2.txt myUnstableOutput3.txt -o mySummary.csv

After any of these commands, mySummary.csv (or whatever you've named it) should contain a comma-separated list of the unstable warnings generated by your program(s) and their counts, sorted from most common to least. There should be no identifying information in this file, so at this point, it should be safe to send the file to us.

You could also additionally run with the --numFiles flag (-n for short), which will include the number of different files where each unstable warning was generated:

./unstableAnonScript --csv --sorted --numFiles --inputFiles myUnstableOutput.txt --outputFile mySummary.csv


./unstableAnonScript -c -d -n -i myUnstableOutput.txt -o mySummary.csv

This information would be helpful for our metrics, but is not essential.

Please respond to this message with your result file. If you would like to send it to a more limited group of people, you can alternatively send it to chapel+info@discoursemail.com (which will just send it to the Chapel team at HPE) or message it to me directly.

If you have any questions or worries about this, please don't hesitate to voice them here.

Thank you for your continued interest in Chapel, and for helping us prioritize on the features that matter most to you,

Lydia Duncan (on behalf of the Chapel team)

unstableAnonScript.chpl (9.9 KB)