g | x | w | all
Bytes Lang Time Link
030Forte240910T224647ZATaco
056Deadfish~240910T131326ZNone1
036JavaScript Node.js240910T105437ZShaggy
038Lua230418T220803Zbluswimm
010Rattle210711T015848ZDaniel H
nan221202T162926Zbigyihsu
nan221202T161407Zbigyihsu
014GolfScript221202T033400Zemirps
014Alice221117T090510ZJulian
013q221117T081550Zcillianr
025Zsh builtins only221117T051339Zroblogic
066Pascal221103T100647ZKai Burg
023Knight v2221103T070127ZSampersa
009Z80Golf221103T045633ZEasyasPi
007Ly220808T052203Zcnamejj
023Knight220807T193829ZnaffetS
512AMD64 Bare Metal220727T232344ZEric Xue
027Kotlin220709T173314Zwartoshi
018Julia 0.4160711T055706ZDennis
015Julia 1.0210713T133022ZMarcMush
005Vyxal210710T024904ZWasif
020Python 3210710T182019ZMakonede
129Perl 5 using only keywords with lowercase alphabets only separating each of them only a space210709T124826Zuser1004
018Factor210622T091326Zchunes
002Japt180427T072508ZShaggy
nanPxem210321T060304Zuser1004
015x86_16 machine code210306T142540ZFebriyan
032naz210316T004916Zsporebal
007APL Dyalog Extended210315T211120ZAdá
041Python210308T181247ZSegFault
024Elixir180905T090348ZKirill L
022PowerShell 5.1180904T223244ZVeskah
011Dyalog APL160711T054113ZAdá
018Befunge93180514T155059ZGegell
045Prolog SWI180430T101300ZASCII-on
047JavaScript Node.js180510T013631ZMuhammad
029Yabasic/VBA180510T010852ZTaylor R
022Mathematica160711T112615ZLegionMa
002Jelly180502T014920Zhabs
053TSQL160711T080040Zt-clause
002Stax180501T132332Zwastl
027Forth gforth180430T131713Zreffu
052Whitespace180430T113122ZKevin Cr
048Java 8180430T102048ZKevin Cr
057Swift 4180430T102033ZASCII-on
021Perl 5180427T012942ZASCII-on
019Chip w gii c127180427T195510ZPhlarx
030Python 2180427T090643Zlynn
028VBA Excel180427T085525Zremoel
014Ruby180427T080147ZKirill L
012Actually180427T054104ZASCII-on
0203var180427T052740ZASCII-on
0082sable180427T051728ZASCII-on
00205AB1E180427T051313ZASCII-on
019><>180427T045534ZASCII-on
012Add++180427T040800ZASCII-on
001Canvas180427T013456Zhakr14
055Tcl180427T011721ZASCII-on
001Charcoal180427T012626ZASCII-on
041Common Lisp180427T011823ZASCII-on
030F# .NET Core180427T010557Zsnail_
009Gol><>180426T232206ZBubbler
054Bash180426T212816ZLambdaBe
012Retina180426T211819Zmbomb007
033C160711T122355ZJasmes
024PHP160711T052556ZQuill
018Retina160711T071030ZMartin E
003MATL160711T022006ZSuever
040C#160711T073751Zwonea
006Majc formely hashmap160711T121039Zuser4701
057Excel VBA160711T115938Ztjb1
035C160711T092920ZQuentin
041Lua160711T083943Zbrianush
017Ruby160711T090843Zdaniero
025Scala160711T082854Zcliffroo
003Brachylog160711T063139ZFatalize
005Pyke160711T074034ZBlue
016Haskell160711T063234ZDamien
027Brainfuck160711T042959ZDennis
054JavaScript160711T013819Zcharredg
075SQL160711T043704ZPhrancis
029Cheddar160711T040953ZDowngoat
013Octave160711T030637Zbeaker
039Brainfuck160711T013157ZNinjaBea
018Bash + general Linux utilities160711T021210ZDigital
040C160711T014534Zanna328p
005Pyth160711T010829ZDoorknob
017Perl 6160711T013830ZBrad Gil
036Python 2.7160711T013602ZR. Kap
006CJam160711T005128ZDennis

Forte, 30 bytes

508END128PUT128/4:LET128=128+4

With Whitespace

508 END
128 PUT 128/4: LET 128=128+4

Forte is a language about changing the meaning of integers, and as such makes even trivial tasks difficult.

This begins by setting line 508 to end, which happens to be 127*4. Then, at line 128 it prints the character represented by 128/4 (32). It then immediately sets 128 to be 128+4, this means that the line at 128+4 becomes the same as was at 128, though with the equation now being (128+4)/4. This repeats until line 508, which would have been the DEL character, but instead exits execution.

Try it online!

Deadfish~, 56 bytes

iisiisdddd{ci}{ci}{ci}{ci}{ci}{ci}{ci}{ci}{ci}cicicicici

Try it online!

Explanation:

iisiisdddd - set the accumulator to 32 (ASCII of space)
{ci}{ci}{ci}{ci}{ci}{ci}{ci}{ci}{ci}cicicicici - Print and increment for 95 times, thus prints all characters in printable ASCII

Deadfish~ is not really the perfect language for the challenge because there are 95 characters in printable ASCII and Deadfish~ only has a loop that repeats code 10 times.

JavaScript (Node.js), 36 bytes

f=(c=96)=>c?f(--c)+Buffer([c+32]):``

[Try it online!][TIO-m0wbdjza]

JavaScript (Node.js)

Lua, 38 bytes

for i=32,126 do print(('').char(i))end

Try it online!

or, if newlines are not allowed, 41 bytes:

for i=32,126 do io.write(('').char(i))end

Try it online!

Rattle, 10 bytes

32|![,+]96

Try it Online!

Explanation

This is reasonably simple:

32|            sets the top of the stack to 32
   !           disables implicit output of the top of the stack
    [  ]96     loops 96 times
     ,         prints the ASCII character of the int value on top of the stack
      +        increments the top of the stack

International Phonetic Esoteric Language, 21 bytes

{3j}{w}ɑeχue1søɒ

Ungolfed

{3j}{w}   ( loop bounds: 32 w <= e < 127 3j )
ɑ         ( loop )
 e        ( push index )
  χ       ( ord index )
   u      ( pop-output without newline )
    e1sø  ( increment index )
        ɒ ( end loop )

Go, 45 bytes

func(){for i:=32;i<127;i++{print(string(i))}}

Attempt This Online!

Prints to STDERR.

GolfScript, 15 14 bytes

-1 byte thanks to Steffan

95,{[32+]''+}/

Try it online!

Explanation

     {...}/ # for each item in
95,         # 0-95
      [32+] # add 32 to that number and put it in an array
      ''+   # output that value as ascii

Alice, 14 bytes

' w.oh.'~h-$K@

Try it online!

Explanation

' w.oh.'~h-$K@   Full program
'                Adds 32 (space) on the stack
  w        $K@   Repeat until...
      .'~h-      ...we reach 126 (~)
   .oh           Print and increase the current character

q, 13 bytes

10h$32+til 95

k, 10 bytes

10h$32+!95

Generate 32, 33, ..., 126, 127 and convert these to their ASCII character representations.

Zsh builtins only, 25 bytes

Using "builtins only" to avoid competing with the jot solution (18 bytes).

25 bytes: try it online

for a ({\ ..~})echo -n $a

32 bytes: try it online

for a ({32..126})echo -n ${(#)a}

Pascal, 66 B

This program requires to be run on a processor using the ASCII character set (or a binary-compatible superset). The output will look quite different for instance on an IBM mainframe using EBCDIC.

program p(output);var c:char;begin for c:=' 'to'~'do write(c)end.

Note, in Pascal for-loop limits are inclusive. During the final iteration c assumes the specified value '~'.

Knight (v2), 23 bytes

;;=s@W>95s=s+sA+32sO^sN

Try it online!

Another Alternative is

;=a@W>95=a+1aO+A+31a"\"

Z80Golf, 9 bytes

00000000: 3e 20 06 5f ff 3c 10 fc 76                     > ._.<..v

Try it online!

Assembler source (z80asm):

start:
    ; start at space
    ld      a, ' '
    ; loop counter 
    ; I could also cp 0x7f; jr nz, .loop but this is faster to TOTALLY make up for below
    ld      b, 0x7F - ' '
.loop:
    ; Call 0x38, then nop slide to 0x8000 to print A to stdout
    ; only has a 130842 cycle overhead, which is worth the 2 bytes it saves
    rst     0x38
    ; set A to the next char
    inc     a
    ; Decrement b, then loop if non-zero
    djnz    .loop
    ; Exit
    halt

Pretty straightforward loop approach.

Ly, 7 bytes

' '~R&o

Try it online!

' '~     - push first (" ") and last ("~") printable characters
    R    - generate a rage of codepoints
     &o  - print the stack as characters

Knight, 23 bytes

;=a 31W>127=a+1aO+Aa"\"

Try it online!

Unminified:

; = a 31
: WHILE (> 127 (= a (+ 1 a)))
    : OUTPUT (+ (ASCII a) "\")

AMD64 Bare Metal, 512 bytes

mov ah, 0x0e
mov al, 0x20
for_1:
int 0x10
add al, 1
cmp al, 0x7f
je for_1_end
jmp for_1
for_1_end:
jmp $
times 510-($-$$) db 0
db 0x55
db 0xaa
nasm asciiprintable.asm -f bin
qemu-system-x86_64 -drive format=raw,file=asciiprintable

QEMU window with characters from 0x20 to 0x7e

Kotlin, 27 bytes

(' '..'~').joinToString("")

Try it online!

Julia 0.4, 18 bytes

map(print,' ':'~')

Try it online!

If returning a string from a function is acceptable, a further byte can be saved.

f()=' ':'~'|>join

Julia 1.0, 15 bytes

print.(' ':'~')

Try it online!

Vyxal, 5 bytes

kPs5ȯ

Try it Online!

-2 byte thanks to @AaronMiller

Python 3, 20 bytes

lambda:range(32,127)

Try it online! Returns a range of codepoints.

lambda:range(32,127)  # full program
lambda:               # return function taking no arguments that returns...
       range(  ,   )  # range object of all integers between...
             32       # literal...
       range(  ,   )  # minus 1 and...
                127   # literal

Perl 5 using only keywords with lowercase alphabets only separating each of them only a space, 227 129 bytes

eval q y print chr length xor s qq q while uc le q q q x length q q truncate tie q x length q q foreach q y for q q q x ord q q q

Try it online!

How it works

eval q y
      print chr length
      xor s qq q
   while
      # default variable has spaces only; equibalent to $_
      uc
      # instead of <=126
      le q q q
         # 126==14*9
         x length q q truncate tie q
         x length q q foreach q
# just noticed i could golf the word
y for q q q x ord q q q

Previous: 227 bytes.

eval q y print chr length xor s qq q while chr length lt chr length q q length length length length length length length length length length length length length length length length length length q y foreach q q q x ord q q q

Try it online!

How it works

Using length of default variable to be accumulator.

eval q y
      # print chr($accumulator)
      print chr length xor
      # increment it
      s qq q
   while
      # instead of <
      chr length lt
      # 127 is unfortunately a prime; any efficient ideas within the restrictions?
      chr length q q length length length length length length length length length length length length length length length length length length q
# $accumulator=32
y foreach q q q x ord q q q

Factor, 18 bytes

32 126 [a,b] write

Works in any modern version of Factor that supports printing non-string sequences directly. (i.e. not TIO.)

Japt, 2 bytes

;E

Test it

Or, without a built-in:

Japt -P, 5 bytes

95odH

Test it

95o       :Range [0,95)
   d      :Get the characters at those codepoints
    H     :After adding 32

Pxem, 17 bytes (filename) + 0 bytes (content) = 17 bytes.

Try it online!

With comments

XX.z
.a~.zXX.z # push 127; while size<2 || (pop!=pop); do
  .a.cXX.z # dup
  .a\001.-XX.z # push 1; push abs(pop-pop) iff size>=2
  .a.cXX.z # dup
.a\037.aXX.z # push 31; done
.a.s.pXX.z # pop (* to remove 31 *); while size>0; do printf "%c", pop; done
.a

x86_16 machine code - 21 15 bytes

-6 bytes, thanks @anna328p

B8 20 0E        MOV AX, 0E20H
            .LOOP:
CD 10           INT 10H
40              INC AX
3C 7E           CMP AL, 7EH
75 F6           JNE .LOOP
B8 4C00         MOV AX, 4C00H
CD 21           INT 21H

Running on DOSBox :

enter image description here

naz, 32 bytes

4a5m6m6a2x1v1x1f1a1o3x1v1l0x4d1f

Try it online!

Explanation (with 0x instructions removed)

4a5m6m6a2x1v   # Set variable 1 equal to 126
1x1f           # Function 1
    1a1o       # Add 1 to the register, then output
        3x1v1l # Goto the start of the function if the register is less than variable 1
4d             # Integer divide by 4, setting the register to a value of 31
1f             # Call function 1

APL (Dyalog Extended), 7 bytes (SBCS)

Full program.

' '…'~'

Try it online!

Do I need to explain?

Python - 41 bytes

for i in range(32, 127, 1):
 print(chr(i))

Python has a built-in ASCII function, so we can use that and print all 95 characters in a loop, one at a time.

No newlines - 50 bytes

for i in range(32, 127, 1):
 x = x + chr(i)
print(x)

This is just in case newlines aren't allowed, so this entry still gets in.

Elixir, 24 bytes

IO.puts Enum.uniq 32..?~

Try it online!

Prints a trailing newline. If that's not acceptable, it's +1 byte for write instead of puts.

uniq is the cheapest operation I managed to find for converting range to list. As a bonus, here are 4 different programs that all accomplish the task in 27 bytes:

IO.puts Enum.to_list 32..?~
IO.puts Enum.into 32..?~,[]
IO.puts Enum.take 32..?~,95
IO.puts for n<-32..?~,do: n

PowerShell 5.1, 22 Bytes

-join[char[]](32..126)

Or 17 bytes if newlines are allowed and we can ditch the join.

Dyalog APL, 11 bytes

⎕UCS 31+⍳99

⍳99 integers 1 through 99

31+ add 31 to them

⎕UCS pick those from the Unicode Character Set

Befunge-93, 18 bytes

 g:"~"`#@_:,1+00p#

You can try it here. The leading space is important!

                     The current character to be printed/checked, starts loop with a space
  g                  Push character from (0|0) onto stack(using the implicit 0s on the empty stack)
   :"~"`#@_          Check whether the char on (0|0) is over ~, if yes then end
           :,1+00p   Duplicate current char for output and incrementation
                  #  Since the code is a torus, it would continue at (0|0) so we skip it, since it could break the code.

Prolog (SWI), 80 68 67 62 45 bytes

?-between(32,126,I),writef('%n',[I]),1=0;1=1.

Try it online!

JavaScript (Node.js), 47 bytes

for(i=31;++i<127;)alert(String.fromCharCode(i))

Try it online!

Yabasic/VBA, 29 bytes

An anonymous function that takes no input and outputs to the console.

Note that the VBA answer could be 1 byte shorter by using Chr instead of Chr$.

For i=32To 126:?Chr$(i);:Next

Yabasic: Try it online!

VBA:      There is no TIO for VBA :(

Mathematica, 22 bytes

32~CharacterRange~126&

Pretty simple. & creates an anonymous function and 32~CharacterRange~126 outputs a list of characters from 32 () to 126 (~). Actually, I'm pretty sure this is optimal this time.

Jelly, 2 bytes

ØṖ

Try it online!

Yep, it's included, but here's an answer without the builtin:

Jelly, 7 bytes

95Ḷ+32Ọ

Try it online!

95Ḷ        create lowered range, from 0 to 94 inclusive
   +32     add 32 to every element in the range
      Ọ    cast the entire list to characters and implicitly print

TSQL, 53 bytes - Vertical solution

DECLARE @ int=32x:PRINT char(@)SET @+=1IF @<127GOTO x

Fiddle

TSQL, 75 71 68 bytes - Horizontal solution

DECLARE @ char(95)=''WHILE 95>LEN(@)SET @=char(126-LEN(@))+@ PRINT @

Fiddle

Stax, 2 bytes

Vp

Run and debug it

Forth (gforth), 27 bytes

: f 127 32 do i emit loop ;

Try it online!

Explanation

127 32 do  \ loop from 32 to 126 (127 is not printable)
  i emit   \ get the index of the loop, then print it as its ascii representation
loop       \ end the loop       

Whitespace, 52 bytes

[S S S T    S S S S S N
_Push_32][N
S S N
_Create_Label_LOOP][S N
S _Duplicate][T N
S S _Print_as_character][S S S T    N
_Push_1][T  S S S _Add][S N
S _Duplicate][S S S T   T   T   T   T   T   T   N
_Push_127][T    S S T   _Subtract][N
T   T   N
_If_negative_Jump_to_Label_LOOP]

Letters S (space), T (tab), and N (new-line) added as highlighting only.
[..._some_action] added as explanation only.

Try it online (with raw spaces, tabs, and new-lines).
Program stops with error: No exit defined.

Pseudo-code:

Integer c = 32
Start LOOP:
  Print c as character
  c = c + 1
  If c - 127 is negative:
    Go to next iteration of LOOP

Java 8, 48 bytes

v->{for(char i=31;++i<127;)System.out.print(i);}

Try it online.

Explanation:

v->{                       // Method with empty unused parameter and no return-type
  for(char i=31;++i<127;)  //  Loop characters from ' ' to '~'
    System.out.print(i);}  //   And print it

Swift 4, 57 bytes

for i in 32...126{print(UnicodeScalar(i)!,terminator:"")}

Try it online!

Perl 5, 21 bytes

print map{chr}32..127

Try it online!

Chip -w -gii -c127, 19 bytes

aABbcC,~S
dDEefF^Gg

Try it online!

Flags:

Code:

This is a cat program suitable for ASCII (only handles 7 bits):

aABbcC
dDEefF Gg

And this suppresses output for values outside the range 0x20-0x7f. (More accurately, it requires that at least one of the bits 0x20 or 0x40 to be true):

      ,~S
     F^G

Python 2, 30 bytes

print bytearray(range(32,127))

Try it online!

VBA (Excel), 28 bytes

using immediate window.

for i=32to 126:?chr(i);:next

Ruby, 14 bytes

print *?\s..?~

Try it online!

Actually, 12 bytes

:95r:32+♂┌εj

Try it online!

Explanation

:95r          Push [0 .. 95]
    :32+      Add 32
        ♂┌    Map chr over TOS
          εj  Join by empty string

3var, 20 bytes

iiss+<+<>+<+<kkF[Pi]

Try it online!

Explanation

iiss                 Increment A twice, square A twice (set a to 16)
    +                Add A to B (set R to 16)
     <               Set B to R
      +<>            Add A and B (16 + 16 = 32), store to A and B
         +<+<        Add 32 to B twice more (B = 96)
             kk      Decrement B twice (B = 94)
               F[  ] Do B times
                 Pi  Print A as character and increment A

2sable, 8 bytes

95Ý32+çJ

Try it online!

Same as for 05AB1E

Explanation

95Ý       Push [0..95]
   32+    Add 32 (vectorizes)
      ç   chr (vectorizes)
       J  Join by empty string

05AB1E, 2 bytes

žQ

Try it online!

No builtin, 8 bytes:

95Ý32+çJ

Try it online!

Explanation

95Ý       Push [0..95]
   32+    Add 32 (vectorizes)
      ç   chr (vectorizes)
       J  Join by empty string

><>, 21 19 bytes

48*v
)?;>:o1+:763**

Try it online!

Explanation

48*v               Push 32 and move down
                   Print character, increment, stop if greater than 126
)?;>:o1+:763**

Add++, 12 bytes

L^,126 32rBF

Try it online!

Explanation

L^,          Lambda returning stack cast to string (takes character code of numbers)
   126 32r   Inclusive range from 32 to 126
          BF Flatten stack

Canvas, 1 byte

Try it here!


Without builtin:

15 14 bytes

9⁵×4-{⁷⁷++╷c]∑

Try it here!

Tcl, 55 bytes

set i 31
time {puts -nonewline [format %c [incr i]]} 95

Try it online!

Charcoal, 1 byte

γ

Try it online!

No builtin, 7 bytes:

⪫…· ¦~ω

Try it online!

Explanation

⪫     ω  Join by empty string
 …· ¦~    Inclusive range from " " to "~"

Common Lisp, 41 bytes

(dotimes(i 95)(princ(code-char(+ i 32))))

Try it online!

F# (.NET Core), 30 bytes

Seq.iter(printf"%c")[' '..'~']

Try it online!

Gol><>, 9 bytes

`_FLss|rH

Try it online!

How it works

`_FLss|rH

`_F...|    Run the following 95 times:
   Lss       Push the loop counter + 32
       rH  Print all the chars in the pushed order and halt

Bash, 54 bytes

man ascii|fold -w1|LC_ALL=C sort -u|tr -cd '[:print:]'

Try it online!

I like that this uses the ASCII man page (which contains an ASCII table) to extract the characters.

Retina, 12 bytes

The  is the Unit Separator character \x1F (31)



+;T`p`p_

Try it online!


Retina 0.8.2, 18 bytes

Same method as above, but requires some extra bytes for printing and not having a trailing newline.



+*\T`p`p_
\`.

Try it online!


If, like in Martin's answer, a trailing newline is acceptable, then this is possible, beating him by 5 bytes:

Retina 0.8.2, 13 bytes



+*\T`p`p_

Try it online!

C, 33 bytes

i;f(){++i<96&&putchar(i+31)|f();}

PHP, 40 30 29 26 24 bytes

Thanks to Mego, manatwork and Titus for helping me golf this down.

<?=join(range(' ','~'));

Retina, 18 bytes


~
{2`
$`
T01`p`_p

The leading linefeed is significant.

Try it online!

Explanation

Stage 1: Substitution


~

We start by replacing the empty (non-existent) input with a single ~.

Stage 2: Substitution

{2`
$`

The regex of this substitution is still empty, since the ` separates configuration from regex and {2 is therefore just the configuration. The { indicates that the remaining two stages should be run in a loop until they stop changing the output. The 2 indicates that this specific stage has a limit of 2, meaning that only the first two matches of the regex will be replaced. Since the regex is empty, that means we get an empty match in front of the string and an empty match after the first character.

This match is replaced with the prefix $` which refers to everything in front of the match. For the first match, there is nothing in front of it, so this doesn't insert anything, but for the second match, there is the leading character in front of it, which therefore gets duplicated.

Stage 3: Transliteration

T01`p`_p

Here, T activates transliteration mode, and 0 and 1 are limits (where 0 just means "don't set this limit"). Together, they mean "transliterate only the first character in the string". The actual transliteration maps from p to _p. Here, p expands to the printable ASCII characters and _ means "remove" this character, so the expanded lists look like this:

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
_ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

That means spaces get removed and all other characters get decremented by one.

To see how the last two stages act together here is the string after each of the first few and last stages:

~
~~
}~
}}~
|}~
||}~
{|}~

...

"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
""#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
!!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

Since the state of the string is only checked after every other stage to determine whether to end the loop, and the two stages cancel each other once we reach the leading space (since Stage 2 adds a space and Stage 3 removes it), this terminates the loop and therefore the program.

MATL, 3 bytes

6Y2

Try it Online

And for the sake of a non-built-in (7 bytes)

32:127c

C#, 51 45 40 bytes

for(char x=' ';x<=128;)Debug.Write(x++);

Majc (formely hashmap), 6 bytes

r af

The delete character is unprintable so here's the hex code (xxd):

0000000: 7220 7f61 660a                           r .af.

Excel VBA, 57 bytes:

Prints individual characters

Sub a()
For i = 32 To 126
Debug.Print Chr(i)
Next
End Sub

Prints out joined string, 68 bytes

Sub a()
For i = 32 To 126
b = b & Chr(i)
Next
Debug.Print b
End Sub

C - 35 bytes

f(i){for(i=31;++i<128;putchar(i));}

Call:

int main() {
    f();
}

Uses the horrible int-as-a-string trick I learnt from Lynn. (Will again if OP confirms that a vertical output is OK).

Lua - 41 bytes

for i=32,127 do io.write(("").char(i))end

Ruby, 17 bytes

$><<[*' '..?~]*''

or

print *[*' '..?~]

Scala, 25 bytes

()=>' 'to'~'foreach print

Anonymous function with no args which prints given range

See it online: https://ideone.com/fX2rwf

Brachylog, 3 bytes

@Pw

@P is the string that contains the printable ASCII characters so… yeah, not very interesting.

It's not clear whether OP accepts built-ins or not, and since others have posted answers that use built-ins, I'll use the 3 bytes version until OP clarifies this point.

With no built-in, 14 bytes

32:126e          Get a number between 32 and 126
       :"~c"w    Format that number to STDOUT as a char code
             \   Backtrack

Pyke, 5 bytes

~KS4>

Try it here!

Pyke's printable variable isn't sorted and it contains tabs and newlines etc... :(

Haskell, 16 bytes

putStr[' '..'~']

Brainfuck, 30 27 bytes

+[[>++<<+>-]>]<<<++[<.+>++]

Try it online!

How it works

+ changes the initial cell to 1. After this step, we enter the following, nested loop.

[        While the current cell is non-zero:
  [        While the current cell (C) is non-zero:
    >++      Increment the cell to C's right twice.
    <<+      Increment the cell to C's left.
    >-       Decrement C.
  ]
  >        Advance to the cell to C's right.
]

This computes consecutive powers of 2 until the the value 256 = 0 (mod 256) is reached. When the outer loop finishes, the tape is in the following state.

                                     v
001 002 004 008 016 032 064 128 000 000 000

<<<++ retrocedes three cells and increments twice, leaving the tape as follows.

                         v
001 002 004 008 016 032 066 128 000 000 000

Now we're ready to print the actual output. As a stop condition, we increment the cell above twice each time we print and increment the cell to its left. Since 66 + 95 × 2 = 256 = 0 (mod 256), we stop after printing all 95 printable ASCII characters. We achieve this as follows.

[      While the current cell (C) is non-zero:
  <      Retrocede to the cell to C's left.
  .+     Print its content and increment.
  >++    Increment C twice.
]

JavaScript, 54 bytes

for(i=32;i<128;i++)console.log(String.fromCharCode(i))

Wasted quite a few bytes printing it... Also prints each char on a new line.

SQL, 76 75 bytes

(Microsoft SQL Server 2012+)

declare @ int=32;while(@<127)begin;print char(@);set @+=1;end

Demo

Cheddar, 29 bytes

->(32:126).map((i)->@"i).fuse

Range from 32-126, loop over it and get the string at the given char code @" and the fuse together (join)

Cheddar, 7 bytes

32@"126

Unfortunately this is broken as of the current release but I'm sure you can go back some versions where this works

Octave, 13 bytes

disp(' ':'~')

Try it on ideone.

Brainfuck, 40 39 bytes

++++[->++++[->++>++++++<<]<]>>>-[-<.+>]

Try it online.

Explanation

++++[->++++[->++>++++++<<]<]

The nested loops basically mean you multiply the number of plusses together, so 4 × 4 × 2 = 32 in one cell and 4 × 4 × 6 = 96. Here is the tape after running this:

00 00 32 96
 ^

>>>- moves the pointer to the fourth cell and decrements it. Now we're done with the setup. 32 is the code for space, the first printable ASCII character. 95 is the number of characters we have to print. Here is the tape now:

00 00 32 95
          ^

[-<.+>] runs until the current cell (the fourth one) is zero. It decrements the counter and prints the character and increments it for the next time.

Bash + general Linux utilities, 18

jot -s '' -c 95 32

C, 40 bytes

f(){for(char i=32;i<128;i++)putchar(i);}

Pyth, 5 bytes

srd\

Try it here.

 r         range from
  d        space
   \<del>  to the delete character, 0x7F (included literally in the program)
s          sum (concatenate all)

Perl 6, 17 bytes

print |(' '..'~')
print chrs ^95+32

Python 2.7, 36 bytes:

print''.join(map(chr,range(32,127)))

Simple enough. A full program that prints out the entire ASCII sequence in order.

CJam, 6 bytes

',32>

The second byte is a DEL character. Try it online!