127
\$\begingroup\$

Your task is to create the shortest infinite loop!

The point of this challenge is to create an infinite loop producing no output, unlike its possible duplicate. The reason to this is because the code might be shorter if no output is given.

Rules

  • Each submission must be a full program.
  • You must create the shortest infinite loop.
  • Even if your program runs out of memory eventually, it is still accepted as long as it is running the whole time from the start to when it runs out of memory. Also when it runs out of memory, it should still not print anything to STDERR.
  • The program must take no input (however, reading from a file is allowed), and should not print anything to STDOUT. Output to a file is also forbidden.
  • The program must not write anything to STDERR.
  • Feel free to use a language (or language version) even if it's newer than this challenge. -Note that there must be an interpreter so the submission can be tested. It is allowed (and even encouraged) to write this interpreter yourself for a previously unimplemented language. :D
  • Submissions are scored in bytes, in an appropriate (pre-existing) encoding, usually (but not necessarily) UTF-8. Some languages, like Folders, are a bit tricky to score - if in doubt, please ask on Meta.
  • This is not about finding the language with the shortest infinite loop program. This is about finding the shortest infinite loop program in every language. Therefore, I will not accept an answer.
  • If your language of choice is a trivial variant of another (potentially more popular) language which already has an answer (think BASIC or SQL dialects, Unix shells or trivial Brainf**k-derivatives like Alphuck), consider adding a note to the existing answer that the same or a very similar solution is also the shortest in the other language.
  • There should be a website such as Wikipedia, Esolangs, or GitHub for the language. For example, if the language is CJam, then one could link to the site in the header like #[CJam](http://sourceforge.net/p/cjam/wiki/Home/), X bytes.
  • Standard loopholes are not allowed.

(I have taken some of these rules from Martin Büttner's "Hello World" challenge)


Please feel free to post in the comments to tell me how this challenge could be improved.

Catalogue

This is a Stack Snippet which generates both an alphabetical catalogue of the used languages, and an overall leaderboard. To make sure your answer shows up, please start it with this Markdown header:

# Language name, X bytes

Obviously replacing Language name and X bytes with the proper items. If you want to link to the languages' website, use this template, as posted above:

#[Language name](http://link.to/the/language), X bytes

Now, finally, here's the snippet: (Try pressing "Full page" for a better view.)

var QUESTION_ID=59347;var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe";var COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk";var OVERRIDE_USER=41805;var answers=[],answers_hash,answer_ids,answer_page=1,more_answers=true,comment_page;function answersUrl(index){return"//api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+index+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(index,answers){return"//api.stackexchange.com/2.2/answers/"+answers.join(';')+"/comments?page="+index+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:true,success:function(data){answers.push.apply(answers,data.items);answers_hash=[];answer_ids=[];data.items.forEach(function(a){a.comments=[];var id=+a.share_link.match(/\d+/);answer_ids.push(id);answers_hash[id]=a});if(!data.has_more)more_answers=false;comment_page=1;getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:true,success:function(data){data.items.forEach(function(c){if(c.owner.user_id===OVERRIDE_USER)answers_hash[c.post_id].comments.push(c)});if(data.has_more)getComments();else if(more_answers)getAnswers();else process()}})}getAnswers();var SCORE_REG=/<h\d>\s*([^\n,<]*(?:<(?:[^\n>]*>[^\n<]*<\/[^\n>]*>)[^\n,<]*)*),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/;var OVERRIDE_REG=/^Override\s*header:\s*/i;function getAuthorName(a){return a.owner.display_name}function process(){var valid=[];answers.forEach(function(a){var body=a.body;a.comments.forEach(function(c){if(OVERRIDE_REG.test(c.body))body='<h1>'+c.body.replace(OVERRIDE_REG,'')+'</h1>'});var match=body.match(SCORE_REG);if(match)valid.push({user:getAuthorName(a),size:+match[2],language:match[1],link:a.share_link,});else console.log(body)});valid.sort(function(a,b){var aB=a.size,bB=b.size;return aB-bB});var languages={};var place=1;var lastSize=null;var lastPlace=1;valid.forEach(function(a){if(a.size!=lastSize)lastPlace=place;lastSize=a.size;++place;var answer=jQuery("#answer-template").html();answer=answer.replace("{{PLACE}}",lastPlace+".").replace("{{NAME}}",a.user).replace("{{LANGUAGE}}",a.language).replace("{{SIZE}}",a.size).replace("{{LINK}}",a.link);answer=jQuery(answer);jQuery("#answers").append(answer);var lang=a.language;lang=jQuery('<a>'+lang+'</a>').text();languages[lang]=languages[lang]||{lang:a.language,lang_raw:lang,user:a.user,size:a.size,link:a.link}});var langs=[];for(var lang in languages)if(languages.hasOwnProperty(lang))langs.push(languages[lang]);langs.sort(function(a,b){if(a.lang_raw.toLowerCase()>b.lang_raw.toLowerCase())return 1;if(a.lang_raw.toLowerCase()<b.lang_raw.toLowerCase())return-1;return 0});for(var i=0;i<langs.length;++i){var language=jQuery("#language-template").html();var lang=langs[i];language=language.replace("{{LANGUAGE}}",lang.lang).replace("{{NAME}}",lang.user).replace("{{SIZE}}",lang.size).replace("{{LINK}}",lang.link);language=jQuery(language);jQuery("#languages").append(language)}}
body{text-align:left!important}#answer-list{padding:10px;width:500px;float:left}#language-list{padding:10px;padding-right:40px;width:500px;float:left}table thead{font-weight:700}table td{padding:5px}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"> <div id="language-list"> <h2>Shortest Solution by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr> </thead> <tbody id="languages"> </tbody> </table> </div> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr> </thead> <tbody id="answers"> </tbody> </table> </div> <table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr> </tbody> </table> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr> </tbody> </table>

\$\endgroup\$
  • 42
    \$\begingroup\$ I've got to start posting programs with a negative byte count to beat all these empty files! \$\endgroup\$ – CJ Dennis Oct 3 '15 at 4:32
  • 3
    \$\begingroup\$ This challenge is interesting because it brings out lots of 0 byte languages (some of which are NOT esolangs). FWIW, most declarative languages have an implicit infinite loop because declarative languages don't have loops in their syntax (they assume they're running in an infinite loop). Ladder diagrams are perhaps among the oldest such languages. Then you have the Instruction Language (IL), a sort of assembly for PLCs that also assume an infinite loop. ILs, like assembly are different between manufacturers \$\endgroup\$ – slebetman Oct 5 '15 at 9:36
  • \$\begingroup\$ Are programs that read and execute their own source code allowed, or does file I/O break the "must take no input" rule? \$\endgroup\$ – ThisSuitIsBlackNot Oct 6 '15 at 13:05
  • 1
    \$\begingroup\$ @ThisSuitIsBlackNot Yes, file input is allowed. \$\endgroup\$ – user41805 Oct 6 '15 at 16:47
  • \$\begingroup\$ Can you print "", an empty string? \$\endgroup\$ – OldBunny2800 Mar 7 '16 at 23:39

494 Answers 494

1
6 7
8
9 10
17
1
\$\begingroup\$

CoffeeScript, 6 bytes

loop 0

Interesting fact thanks to Martin Büttner, not sure if there's any practical use to it though.

Previous attempt (8 bytes):

1while!0

There is only a while loop, no for (though there are for..in and for..of).

| improve this answer | |
\$\endgroup\$
  • \$\begingroup\$ CoffeeScript actually has a keyword for infinite loops: loop 1 \$\endgroup\$ – Martin Ender Oct 2 '15 at 19:19
1
\$\begingroup\$

Basilisk, 5 bytes

:A1gA

Pretty simple.

Explanation

  • :A

Defines position A.

  • 1gA

Pushes one and goes to position A in code. Since the gA pops the top value in stack, if the loop were ever to end, it would not print anything.

| improve this answer | |
\$\endgroup\$
1
\$\begingroup\$

STATA, 10 bytes

while 1{
}

Apparently for loops in STATA always halt, but while loops can be infinite.

| improve this answer | |
\$\endgroup\$
  • \$\begingroup\$ Is the line break needed? I've never used STATA \$\endgroup\$ – Albert Renshaw May 12 '16 at 20:14
  • 1
    \$\begingroup\$ @AlbertRenshaw The line break is required, and it will throw a syntax error if it is not there. See stata.com/manuals13/pwhile.pdf#pwhile for details. \$\endgroup\$ – bmarks May 17 '16 at 14:19
  • \$\begingroup\$ What about a: goto a? :D 9 bytes —— stata.com/manuals14/m-2goto.pdf \$\endgroup\$ – Albert Renshaw May 17 '16 at 17:42
  • \$\begingroup\$ In-fact, the space after a: might not be needed, I don't have STATA so I can't test but I'd imagine it's possible to omit the space and get it down to 8 bytes \$\endgroup\$ – Albert Renshaw May 17 '16 at 17:44
1
\$\begingroup\$

Objective-C, 1716

-(id)a{for(;;);}
| improve this answer | |
\$\endgroup\$
1
\$\begingroup\$

Java6 : 50 Bytes

In Java 6 and previous versions you can execute static initialization block without having main in your class file.

class A{static{for(int i=1;i>0;);System.exit(0);}}
| improve this answer | |
\$\endgroup\$
  • 1
    \$\begingroup\$ Wouldn't for(;;); work just as well as for(int i=1;i>0;);, or is there some restriction in Java 6? \$\endgroup\$ – ETHproductions Oct 4 '15 at 0:00
  • 1
    \$\begingroup\$ while(true) is shorter than and as valid as for(int i=1;i>0;). \$\endgroup\$ – user8397947 May 29 '16 at 15:47
1
\$\begingroup\$

VBScript, 17 bytes

do
loop while 1
| improve this answer | |
\$\endgroup\$
1
\$\begingroup\$

Pascal, 32 bytes

program l;begin while 1=1do;end.

A full program in just one line.

  • program l;: Start a new Pascal program
  • begin: Begin a code section
  • while 1=1do;: Do nothing (; / NOP) as long as 1=1, which shorter than true. Identifiers (do for instance) are not allowed to begin with a digit, so we can omit the space here and save one byte.
  • end.: End the code section
| improve this answer | |
\$\endgroup\$
1
\$\begingroup\$

C++, 15 bytes

Same as C:

main(){main();}
| improve this answer | |
\$\endgroup\$
  • 4
    \$\begingroup\$ stackoverflow.com/a/2532922 says "The C++ Standard says that you may not call main() from your own code." \$\endgroup\$ – Neil Oct 3 '15 at 20:50
  • 2
    \$\begingroup\$ PPCG says "if your code works on some environment, it's fine", and it works for me. A standards-complying solution would be int main(){for(;;);}, I think. \$\endgroup\$ – Lynn Oct 4 '15 at 19:21
1
\$\begingroup\$

F#, 14 bytes

while 0<1 do()

Self-explanatory.

| improve this answer | |
\$\endgroup\$
  • \$\begingroup\$ Also works in Standard ML \$\endgroup\$ – Demi Oct 11 '15 at 0:05
  • \$\begingroup\$ Nice one. I thought doing it via recursion would be shorter, but this beats it by a byte. =) \$\endgroup\$ – Roujo Feb 15 '16 at 22:26
1
\$\begingroup\$

AHK, 4 bytes

loop

quick and simple

| improve this answer | |
\$\endgroup\$
  • 1
    \$\begingroup\$ I'm going to disagree with this answer here as this won't execute persistently without a #persistent directive present or a Hotkey (which forces a #Persistent) defined in your script. . AHK is a bracket based language, your loop has no defined brackets and will simply exit after the first iteration, in fact your code won't even perform a single loop. This answer is just wrong. \$\endgroup\$ – errorseven Nov 28 '15 at 20:21
  • 1
    \$\begingroup\$ @ahkcoder wrong,add a msgbox under it to see it does run forever \$\endgroup\$ – downrep_nation Nov 28 '15 at 20:37
  • 1
    \$\begingroup\$ Exactly, you have to add code in order for it execute correctly. Your program is an incomplete implementation, therefore wrong. \$\endgroup\$ – errorseven Nov 28 '15 at 20:45
1
\$\begingroup\$

Pip, 3 bytes

W1x

Basically a while 1: 0 answer.


A more interesting 2-byte solution that doesn't quite fit the rules:

Vf

f is the current function; V evaluates it. This theoretically goes on forever, but in actuality it ends up causing infinite recursion in the interpreter, which very quickly exits with

Fatal error: maximum recursion depth exceeded while calling a Python object

Oh well.

| improve this answer | |
\$\endgroup\$
1
\$\begingroup\$

Fourier, 3 bytes

1()

Repeats until the result of the loop equals 1, which it never does.

| improve this answer | |
\$\endgroup\$
1
\$\begingroup\$

Aheui, 0 bytes

Aheui is a Befunge-like, and the empty program is an infinite loop for exactly the same reason.

| improve this answer | |
\$\endgroup\$
1
\$\begingroup\$

Batch, 3 bytes

@%0

| improve this answer | |
\$\endgroup\$
  • \$\begingroup\$ This produces output. Why not use @%0? \$\endgroup\$ – Neil Oct 3 '15 at 20:54
  • \$\begingroup\$ @Neil Thanks, I used your suggestion. \$\endgroup\$ – user2428118 Oct 5 '15 at 10:48
  • \$\begingroup\$ You forgot to update the number of bytes. (The editing restrictions suck, otherwise I would have suggested the edit.) \$\endgroup\$ – Neil Oct 5 '15 at 10:59
1
\$\begingroup\$

CFL 2 (ComeFrom 2), 17 bytes

10 comefrom 20
20 

Try it here.

| improve this answer | |
\$\endgroup\$
1
\$\begingroup\$

Carriage, 30 bytes

111-@11-~!$11111++++11-~@11-~!
| improve this answer | |
\$\endgroup\$
1
\$\begingroup\$

SmallTalk – 18 bytes

[true]whileTrue:[]
| improve this answer | |
\$\endgroup\$
1
\$\begingroup\$

C, 16 bytes

main(){for(;;);}

A simple C loop construct. A for loop does not require curly brackets. 

| improve this answer | |
\$\endgroup\$
  • \$\begingroup\$ Is there a particular dialect of C that lets you omit the parenthesis after main? GCC throws an error if I try to compile this. \$\endgroup\$ – Mark Oct 5 '15 at 7:25
  • \$\begingroup\$ @Mark Whoops, I missed that. Editing \$\endgroup\$ – awd123 Oct 5 '15 at 12:04
1
\$\begingroup\$

Poslin, 20 bytes

[ .true ! | ]while !

This does the part between | and ] as long as the part between [ and | returns the true value.

.true ! creates the true value at compile time.

[ .true & | ]while !

works just the same, but here the operation .true is called on every iteration.

| improve this answer | |
\$\endgroup\$
1
\$\begingroup\$

Prelude, 3 bytes

1()

Any other non-zero digit could replace the 1. This is essentially the same as the Brainfuck solution (just adding it for completeness).

| improve this answer | |
\$\endgroup\$
1
\$\begingroup\$

PHP, 10 8 bytes

The for(;;) solution has been posted enough, Time for this one:

while(1)

while(1){}

| improve this answer | |
\$\endgroup\$
  • 2
    \$\begingroup\$ You're missing a trailing ;. This will produce a parse error. \$\endgroup\$ – insertusernamehere Nov 15 '15 at 9:51
1
\$\begingroup\$

D , 21 bytes

void main(){for(;;);}

No language used with D in it name.

| improve this answer | |
\$\endgroup\$
1
\$\begingroup\$

Octave, 10 bytes

1 byte shorter than @flawr's answer ...

do until 0

(Haven't tested it in Matlab though...)

| improve this answer | |
\$\endgroup\$
1
\$\begingroup\$

Sclipting, 6 bytes

Encoded in UTF-16.

到終

This is a while-false loop with an empty body. This assumes that the program input is falsy, but I interpret the problem statement as saying that the input will be empty, so this is fine.

| improve this answer | |
\$\endgroup\$
1
\$\begingroup\$

Emily, 12 bytes

while^(1)^()

I was a character short of 30 for the body of this post. :/

| improve this answer | |
\$\endgroup\$
1
\$\begingroup\$

Delphi, 35 bytes

program P;begin while true do;end.

Managed to beat C# this time :)

| improve this answer | |
\$\endgroup\$
  • \$\begingroup\$ Whoops just saw the pascal solution - more elegant :( \$\endgroup\$ – James Oct 9 '15 at 11:52
1
\$\begingroup\$

GOTO++, 19 bytes

§1 GOTOPASMALIN %1

§1 is the label 1

GOTOPASMALIN is a deterministic goto instruction that goes to the label X specified with the argument %X.

goto pas malin literally means Not-clever goto in French. It is named this way because there are keywords in GOTO++ to do goto at random, on a random label in a list, etc.

| improve this answer | |
\$\endgroup\$
1
\$\begingroup\$

Coffee Script, 9 8 bytes

1while 1
| improve this answer | |
\$\endgroup\$
1
\$\begingroup\$

HP48's RPL, 18 bytes

« DO UNTIL 0 END »

You may remove the spaces around the « and » but the calculator will add them again for you.

That's the source size; "binary" size when stored in the calculator is actually longer (25.5 bytes).

| improve this answer | |
\$\endgroup\$
1
\$\begingroup\$

MIPS, 6 bytes

I didn't use mips for ages, but if i remember correctly, it will be something like that : a: j a;

| improve this answer | |
\$\endgroup\$
  • \$\begingroup\$ Actually 4 bytes \$\endgroup\$ – qwr Dec 24 '15 at 3:34
1
6 7
8
9 10
17

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.