Making Igor code available on publication - best practice

I am wondering what is the best practice for making some Igor code available upon publication of a paper. The code should be available for the useful life of the paper.

As I see it there are several options with downsides:
1. Code available on request/personal webpage - not really freely available and addresses may change etc.
2. Put code on IgorExchange - will it be here forever? Also, very bespoke code may clutter up code snippets.
3. Upload the code as a supplementary file with the paper - probably best solution but only some journals allow this, many don't.
4. Code on GitHub or some other repository - version control etc.
5. Something else?

I'd be curious as to what other people are doing, or think is best. So far we have done 1 + 2, and I'm wondering about other possibilities.
Just from readers perspective:

- I like option 3 very much, as it allows to create a set of self contained pdfs. And if you put source code into a PDF please use syntax highlightning (e.g. pygments).
- Everything on request is really bothersome. As people change their email adresses you can not reach them anymore.

Maybe a dedicated folder on the wavemetrics FTP server can do the trick? At least then the files are hosted at the same place than the creators of Igor. So no fear that a random webservice goes down.
I agree with Thomas that #3 is the best solution.

I wouldn't recommend that you rely on IgorExchange for this purpose. We can't make any guarantee that the site will still be here, or that the URL won't change, etc.

If the code is a work in progress and may be improved in the future, something like GitHub or are probably good choices.
And another consideration for code that was used for results reported in a paper- #3 will document that code as it existed when the paper was written. If it is something that will be used again in the future, it is almost certain to change, and then it won't be reproducible by others.

John Weeks
WaveMetrics, Inc.