Git Product home page Git Product logo

resist's People

Contributors

bcfriesen avatar rcthomas avatar

Watchers

 avatar  avatar  avatar

Forkers

bcfriesen

resist's Issues

The Makefile is decadent and depraved.

Our makefile only assumes gcc right now, we ought to set it up so that we can replace that in a non ugly way on our various platforms we test with. We don't need to go to cmake yet, but it would be nice to make sure things just work when we do a checkout.

May we always have pleasant configuration and input files.

To run the code we need to configure it and provide it with execution setups to evaluate. There is a stub for app configuration with JSON but no implementation as yet. At some point we will want to address this question, but some thoughts are:

  • Let's keep whatever parsers we depend on as light-weight/low-footprint things we can just incorporate.
  • We should think about more than file-based configuration/setup control; for instance we may send the app actual JSON from another application, so the interface needs to accept JSON and not assume it's always just a file.

We need sane I/O processing boilerplate.

Anticipating that this will be an MPI application, we need sane tools for reporting errors, exiting gracefully (or angrily), printing to STDOUT or STDOUT or a file, etc.

We should use '#include <...>' instead of '#include "..."'

The C standard defers the behavior of #include "..." to the implementation of each compiler. In praxis, most compilers interpret this as "look in $PWD for the requested header file." However, "#include <...>is defined by the standard: the compiler will look in any directories included in-I

. So to replace the quotation marks with angle brackets, we would need to add an explicit -I.` or something to that effect to the compiler flags.

Intel C compiler fails on resist-context.c without "-std=c99" flag

The Intel compiler does not enable C99 features by default, and as a result, it fails to compile resist-context.c:

cc -O0 -Wall -Werror -c resist-context.c -o resist-context.o
resist-context.c(74): error: type name is not allowed
      for (size_t i = 1; i < ctx->wl_count; i++) {
           ^

resist-context.c(74): error: expected a ";"
      for (size_t i = 1; i < ctx->wl_count; i++) {
                  ^

resist-context.c(74): error: identifier "i" is undefined
      for (size_t i = 1; i < ctx->wl_count; i++) {

We could either require C99 support to compile resist, or remove C99-specific features. I would vote for the latter because it is easy to do and requires fewer compiler flags (i.e., none).

Continuous integration is neither continuous nor integration, but everyone does it.

We can at least set up build tests and unit tests in CI when ready. However we should note that such tests will not exercise features exploited by compilers that we are particularly interested in because those are not available.

We could set up cron jobs on the Cray machines to test that end of things as well. Something to keep in mind as edge services for CI are being considered here.

Hark! For a scalable workflow descendeth upon us.

We should codify a workflow and release schedule. I would advocate for a few things that will make everybody's life easier, and welcome comments:

  • timed releases (as opposed to feature-driven releases)
  • pull-only model; @rcthomas should be the only person who has write access to this repository
  • every commit should compile and run correctly; "work-in-progress" commits do not belong anywhere in this repository
  • compilation with -Wall -Werror (or the equivalent for non-GCC compilers) should succeed on every commit

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.