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\$
  • 44
    \$\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

504 Answers 504

1
11 12
13
14 15
17
1
\$\begingroup\$

Taktentus, 4 bytes

_:=0

This is jump for line number 0 (first)

In English: https://esolangs.org/wiki/Taktentus

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

W i, 1 byte

I

Forever, execute the input (which is then not printed to the console).

W i, 4 bytes

Pretty much a terrible language for looping.

i""E

Explanation

i   E % Foreach the range from 0 to positive infinity:
 ""   % Push the null string

Flags:i  % Implicit print disabled
```
| improve this answer | |
\$\endgroup\$
  • \$\begingroup\$ Foreaching to infinity? That sounds like an interesting approach. Reminds me of TRANSCRIPT, which has no while loop -> no infinite loop -> not interesting to me. If only variables can be infinity... \$\endgroup\$ – null Dec 21 '19 at 13:56
  • 1
    \$\begingroup\$ I feel glad that you find my language interesting! (I initially didn't think it as interesting...) \$\endgroup\$ – user85052 Dec 21 '19 at 13:57
  • \$\begingroup\$ (Very off topic and self-promoting and attention-drawing and... but: Do you have prime detection in 1+?) \$\endgroup\$ – null Dec 21 '19 at 14:00
  • \$\begingroup\$ And also, if W have "implicit print disable command" just like Retina, it could be 3 bytes XD \$\endgroup\$ – null Dec 21 '19 at 14:02
  • 1
    \$\begingroup\$ Nope. The Foreach loop body has to be exist in W. If not this foreaches over the implicit input printing positive infinity on each iteration. \$\endgroup\$ – user85052 Dec 21 '19 at 14:03
1
\$\begingroup\$

TI-BASIC, 4 Bytes

Written in TI-BASIC for TI-83 or 84 series.

While 1:End  

Previous version, 5 Bytes

Lbl A:Goto A

| improve this answer | |
\$\endgroup\$
  • \$\begingroup\$ What about prgmA where your program is called A? \$\endgroup\$ – Calculuswhiz Jun 24 at 17:11
1
\$\begingroup\$

Integral, 6 Bytes

⌡◙d⌡◙d

Don't Try it! (it will screw up your browser)

| improve this answer | |
\$\endgroup\$
  • \$\begingroup\$ Wow, you mastered the mystery of Integral loops! \$\endgroup\$ – user96495 Aug 6 at 6:04
  • \$\begingroup\$ @petStorm infinite ones that is. \$\endgroup\$ – Lyxal Aug 6 at 6:06
1
\$\begingroup\$

MAWP v1.1, 2 bytes

[]

Stack starts with 1, brackets loop as long as top of stack isn't 0.

Try it!

| improve this answer | |
\$\endgroup\$
  • \$\begingroup\$ 1+ 5 vs 2 MAWP (J is 5 bytes!) \$\endgroup\$ – null Aug 12 at 10:02
1
\$\begingroup\$

Haskell, 8 bytes

main:x=x

One byte shorter than the classic main=main.

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

ezfuck, 2 bytes

+{

Basically equivalent to +[] in BrainFuck.

+ increments the current cell to 1, then { jumps back a single command while the current cell is non-zero.

| improve this answer | |
\$\endgroup\$
  • \$\begingroup\$ The "non-competing" rule has been lifted, which means that this is a competing submission. \$\endgroup\$ – Esolanging Fruit Jul 9 '17 at 23:49
  • \$\begingroup\$ @Challenger5 Oh, thanks. Are you sure? It doesn't say in the question that new languages are allowed. \$\endgroup\$ – Carcigenicate Jul 9 '17 at 23:53
  • \$\begingroup\$ Marking as NC was the default for newer languages, but it was changed after a recent meta discussion \$\endgroup\$ – Esolanging Fruit Jul 10 '17 at 0:00
  • \$\begingroup\$ @Challenger5 Awesome, thank you for pointing me to that page! That's certainly a welcome change \$\endgroup\$ – Carcigenicate Jul 10 '17 at 0:03
1
\$\begingroup\$

05AB1E, 1 Byte

[

Try it online!

[  # begin infinite loop
| improve this answer | |
\$\endgroup\$
1
\$\begingroup\$

International Phonetic Esoteric Language, 3 7 4 bytes

01ɑɒ
10   (loop bounds 0-1, set current IDX=0, LIM=1)
  ɑɒ (since IDX<LIM, infinite loop)

7 bytes. Labels are fun.

|a|ʟ|a|

Defines a label a and jumps to a.


3 bytes (WIP language) (OLD)

ɘ0e

What the code does is push 0, then check if the stack is falsy, which 0 is. Then it jumps, without any output.

No TIO interpreter yet, but is runnable by cloning the repository above, and calling python3 main.py "code here".

ɘ0e
ɘ   ; begin falsy jump
 0  ; push 0
  e ; pop, if falsy jump; else end falsy jump
| improve this answer | |
\$\endgroup\$
1
\$\begingroup\$

Marbelous, 8 bytes

@0
00
@0

Marbelous is a language based on marble machines

  • @n (n from 0 to Z) is a portal which teleport the marble to another portal with the same value
  • 00-FF initiate a marble with this value

interpretor

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

sed, 3 bytes

:;b

Pretty simple. Make an unnamed label, then branch to it. Not all versions of sed support unnamed labels, in which case there is a 5 byte solution.

:a;ba
| improve this answer | |
\$\endgroup\$
1
\$\begingroup\$

Vyxal, 1 byte

{

-3 thanks to answering the right question

Explained

{      # Start an infinite while loop
\$\endgroup\$
1
\$\begingroup\$

AWK, 15 bytes

BEGIN{for(;;)1}

The smallest code that doesn't look for input.

I tried without the 1 and AWK wasn't happy.

Try it online!

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

HPPPL, 16 bytes

while 0=0 do end
| improve this answer | |
\$\endgroup\$
0
\$\begingroup\$

C++ Template Meta-Programming, 48 bytes

template<int n>class S{enum{v=S<n-1>::v}}S<1>::v

There is an infinite loop in the template, so this doesn't compile. Other stuff that doesn't compile, but doesn't need to for the template to recurse (S being private, S<1>::v being free floating)

Can be run at http://coliru.stacked-crooked.com/ for error g++: internal compiler error: Segmentation fault

g++ -std=c++14 -O2 -Wall -pedantic -pthread -ftemplate-depth=162345 main.cpp && ./a.out
| improve this answer | |
\$\endgroup\$
  • \$\begingroup\$ Not sure if that is compliant with the rules as it doesn't run out of memory when it stops. If you want to do that, there is the -ftemplate-depth compiler option in gcc that allows you to set the recursion depth to something very high so you'll at least get a segfault out of it. \$\endgroup\$ – iFreilicht Oct 16 '15 at 14:23
  • \$\begingroup\$ @iFreilicht Yeah, I suppose you're right. I couldn't (be bothered to...) find a online complier that supported that. \$\endgroup\$ – Nathan Cooper Oct 16 '15 at 14:33
  • 1
    \$\begingroup\$ coliru.stacked-crooked.com \$\endgroup\$ – iFreilicht Oct 16 '15 at 14:35
0
\$\begingroup\$

Univar, 8 bytes

($,,)$,,

Self-calling function.

| improve this answer | |
\$\endgroup\$
  • \$\begingroup\$ Seems too recursive to me... is there any tail-call optimization? \$\endgroup\$ – Erik the Outgolfer Sep 25 '16 at 13:57
  • \$\begingroup\$ @EriktheGolfer Not at my computer right now, but I believe that the interpreter internally uses a variable-length list for the call stack. \$\endgroup\$ – LegionMammal978 Sep 25 '16 at 14:03
0
\$\begingroup\$

x86 Machine code, 2 bytes

Machine Code

     00 01
0000 73 FE

Asm source

[SECTION .text]
[bits 16]
[org 0x100]

EntryPoint:
    jnc     EntryPoint

Both the jmp and the call instructions use a 1 byte op-code followed by a 2 byte absolute offset. Conditional jumps on the other hand, are limited to a destination within [+127, -128] bytes of the branch. This is because they are encoded with a 1 byte op-code and a 1 byte relative offset. Dos already cleared the flags before invoking our program, so we know the carry flag will be clear and facilitate an endless (non-crashing) loop. We wont run out of stack-space, which would result in a stack-overflow error, or overwriting and ultimately crashing, our program. Approaches using call will suffer this after about 32,638 iterations. (stack is initally 0xFFFE, (3 byte) program begins at 0x100, each iteration decrements the SP by 2.)

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

ROOP, 1 byte

1

At the beginning, the number 1 is converted to an object that contains the number. As there is no operator and the object has nowhere to move, it always happens the same: nothing. The program does not end because there is an existing object.

| improve this answer | |
\$\endgroup\$
  • 2
    \$\begingroup\$ An explanation would make this a more complete answer. \$\endgroup\$ – Alex A. Dec 24 '15 at 3:29
0
\$\begingroup\$

Befalse, 7 bytes

A two dimensional language.

Extremely straightforward; the ! unconditionally skips the next instruction and the / and \ reflect intuitively.

!/\
 \/
| improve this answer | |
\$\endgroup\$
0
\$\begingroup\$

Etre, 2 bytes

()

The program sets the first cell to 1, then loops while it isn't zero.

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

Skull, 8 bytes

for(;;);

Uses a bug in the Skull2C transpiler, where unrecognized expressions are converted directly into C.

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

KimL, 14 bytes

A:
ctrl.goto A

For whatever reason, labels must come before the lines that they label.

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

Perl 6, 7 bytes

loop {}

but...

> loop{}
===SORRY!=== Error while compiling <unknown file>
Whitespace required after keyword 'loop'
at <unknown file>:1
------> loop⏏{;}

k.

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

Perl 5, 9 bytes

while(){}

boooooooooooooooooooooooooooooooooooooooooring.

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

Postscript, 6 bytes

{}loop

Infinite loop that does nothing. Ties up 1 core at 100% when run under ghostscript. Interestingly, the ghostscript interpreter keeps accepting input, so it must be running a separate thread. Not sure what would happen if this was sent to a printer, though.

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

Oracle PL/SQL 11.2, 30 bytes

BEGIN LOOP NULL;END LOOP;END;/
| improve this answer | |
\$\endgroup\$
0
\$\begingroup\$

Magic, 7 bytes

skip -1

A simple self-GOTO.

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

NTFJ, 2 bytes

Try it here!

~^

This is stiflingly simple. ~ pushes a 0 to the stack, and ^ pops N and goes that position in the source code. The simplest unconditional loop in NTFJ is this.

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

GNU Make, 16 bytes

f=$(call f)
$(f)

The loop is in make itself, not a program it invokes.

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

Pylons, 4 bytes.

w,1}

Loops while 1 is true.

| improve this answer | |
\$\endgroup\$
1
11 12
13
14 15
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.