chapel-lang / chapel

a Productive Parallel Programming Language
https://chapel-lang.org
Other
1.79k stars 421 forks source link

I/O Design Meta-Issue #7954

Open mppf opened 6 years ago

mppf commented 6 years ago

This issue is just meant to list and track I/O issues.

Priority Group 1

Priority Group 2

Priority Group 3

Priority Group 4

bradcray commented 6 years ago

Related: @benharsh has been looking at I/O overheads in the context of the revcomp benchmark and expects to put together a list of I/O issues / wishes in response to that exercise, as I understand it.

benharsh commented 6 years ago

Question: does anything in the release/examples/ directory rely on the functionality we intend to deprecate?

benharsh commented 6 years ago

My take on a rough prioritization of these tasks (grouped by coarse prioritization):

  1. Improve/add channel formats Rationale: probably deprecates "%j", breaking existing code
  2. machine readable output Rationale: behavior-changing, possibly significantly
  3. IO plugins written in Chapel Rationale: deprecates HDFS, CURL from stdlib

  4. Return errors from writeThis Rationale: Future programs may break if they do not handle errors.
  5. Arrays resized when read (or, "how to read an unknown number of things") Rationale: Useful idiom. Note: May depend on whether we keep mutate-through-array functionality.

  6. Buffer/bytes/strings with channels Rationale: Useful idiom.
  7. Methods beginning with underscore Rationale: Solidify API
  8. DefaultRectangular and readBytes Rationale: may break existing code
  9. allocate-as-read classes Rationale: Useful idiom.
  10. class instance cycles Rationale: Annoying for users
  11. writeThis inheritance Rationale: Annoying default behavior, but can be overrided

  12. Remote file, local channel Rationale: correctness, productivity > performance. Though probably a common idiom.
  13. parallel file.lines() Rationale: correctness, productivity > performance. Though this may have design repercussions.
  14. Spinwaiting under qthreads Rationale: correctness, productivity > performance
mppf commented 6 years ago

thanks @benharsh - I've reordered the issue description to reflect your suggestion.

e-kayrakli commented 4 years ago

It might be good to keep a record of code style issues with the IO module here. See https://github.com/chapel-lang/chapel/issues/14646

lydia-duncan commented 4 years ago

I recorded some documentation tasks related to IO on #14395, should I link them here as well?

mppf commented 4 years ago

I think this issue should focus on things that fit into the API stabilization topic. Also this particular issue has things to address in a sorted order, so it might not make sense to try to add a big variety of small things to it.

Perhaps linking other issues to the epic Stabilize core I/O routines #8639 is the right move.