98 comments

[ 4.9 ms ] story [ 134 ms ] thread
Not a comment about tio but I didn't realize it isn't possible to write a simple hello world in C# dot net core.

What a shitty situation.

What can we do to make it better? Provide a default csproj file on load? Any better ideas?

Microsoft (R) Build Engine version 15.3.117.23532 Copyright (C) Microsoft Corporation. All rights reserved.

code.cs(1,22): error CS1022: Type or namespace definition, or end-of-file expected [/home/runner/project/project.csproj] code.cs(1,22): error CS1026: ) expected [/home/runner/project/project.csproj]

Build FAILED.

code.cs(1,22): error CS1022: Type or namespace definition, or end-of-file expected [/home/runner/project/project.csproj] code.cs(1,22): error CS1026: ) expected [/home/runner/project/project.csproj] 0 Warning(s) 2 Error(s)

Time Elapsed 00:00:04.92 No executable found matching command "dotnet-project/bin/Debug/netcoreapp*/project.dll"

Real time: 6.033 s User time: 2.973 s Sys. time: 0.442 s CPU share: 56.61 % Exit code: 1

Just filling in some default fields in the tio editor would do. For example pre-fill the header as:

   using System;
   using System.IO;
and pre-filling Code with

   namespace example
   {
      public class Example
      {
         static void Main(){
         }
      }
   }
(But better names, my naming sucks!)

That would go a long way, then you could just add "Console.WriteLine("Hello World"); for hello world.

This works for me in TIO:

public class App { public static void Main(string[] args) { System.Console.WriteLine("Hello World"); } }

Breaks the back button.
Yeah, hijacks left-swipe on mobile safari, too. Annoying!
If you are on Chrome right click the back button as a temporary solution.
A description would be nice. I tried clojure and it successfully printed when my code was (+ 1 3) but I didn't grasp the input/arguments/etc...
Input is StdIn. Arguments are command line arguments. Header and Footer are glued to code by newlines. Output is StdOut, Debug is StdErr and timing information.
Really cool. Would be great if each language had an "hello world" example which would populate the fields.
There already is a collection of `Hello, World!`s for every language used in tests, and this feature is planned to be implemented soon.
I agree. In the standard Racket IDE you get automatically the initial

  #lang racket
line, and in some variants for students the equivalent line is hidden. So I had to try a few times until I realized I forgot to add this line. https://tio.run/##K0pMzk4t@a@ck5iXrlAE4Sh5pObk5CuE5xelKP3/Dw...

Another improvement could be to show the debug output automatically. I didn't understand the problem until I read the error message.

There's a Hello World button now that does just this.
Looks like http://repl.it/ but with more languages.
TIO looks great. However, it's probably serving different purposes than Repl.it, here are some differences as I see them:

- repl.it is interactive, which means that not only a process and a container is booted up that stays with you the whole session time but also means that the program state is saved when you're executing code from the repl console. This enabled interactive games like text games and cli programs.

- support for multiple file with realtime file update. You can plot something for example: https://repl.it/site/blog/file-updates

- support for third party modules starting with pipy and npm (you can import any module from those registries).

There are many other small features that's worth checking out. But to sum up, Repl.it is not just trying to be a code execution service but an actual programming environment.

Repl.it sounded really epic... except it's not REPL, at least not for the first language that I wanted to repl: C (https://repl.it/languages/c).

Still, I like the website better than TIO. At TIO I picked PHP to test and it gives me options like headers, options (without a list of options/settings to modify, just an "Add" button)... I just want to type code in an editor and run it. Repl.it also has syntax highlighting.

(For those who don't know, REPL is read-evaluate-print-loop, so it takes an input (e.g. "int i = 0;"), evaluates it (runs it), prints any output, and loops back to the start.)

For languages like C that don't ship with a repl we don't currently implement one -- although we probably should, since a lot of them have third-party repl libraries.

Check our most of our other languages. They're proper repls I promise ;)

I wrote about the distinction you're talking about when we released swift support:

https://repl.it/site/blog/swift

No love for Common Lisp? Please add Common Lisp :).

Anyway, pretty nice collection of languages you have there; a lot of which I want to play with but don't feel like installing a proper toolchain yet. So I'll definitely use the service :).

It's actually quite simple: 'options' are command line options that you can supply, I don't know PHP but for Ruby it might be `-p` for example. Header and Footer are just glued to the code by newlines.
Oh command line options. Then what are 'arguments', a little further below?
Options are what get passed to the interpreter. Arguments get passed to the program. How the interpreter gets called for most languages roughly goes like:

   interpreter options input.tio arguments
Where input.tio is the file containing the code.
Another alternative is https://glot.io

They spin up a docker container with a language of your choice, all from the web.

This looks cool, but can you guys fix your push state code, I can't hit back to come back to HN.
confirmed. Chrome 59.0.3071.115 on Mac back button is broken.

cool site, tho

Long press back button and select HN.
Doesn't help you on mobile.
It works on Firefox, give it a try
THANK YOU. Before Shift-Back (or right click?) would work and it stopped working a few versions back.
confirmed, safari Version 10.1.1 (12603.2.4) macOS
Yes, same here, FF 54.01 (64 bit) on Arch Linux.
Double-tapping back sometimes works on sites where the landing page immediately forwards you to something else, but this site appears to actively hijack the back/forward buttons. For shame.
Not intentionally. This was a simple bug: a history.pushState that should have been history.replaceState.

  cat /etc/passwd

  root:x:0:0:root:/root:/bin/bash
  bin:x:1:1:bin:/bin:/sbin/nologin
  daemon:x:2:2:daemon:/sbin:/sbin/nologin
  adm:x:3:4:adm:/var/adm:/sbin/nologin
  lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
  sync:x:5:0:sync:/sbin:/bin/sync
  shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
  halt:x:7:0:halt:/sbin:/sbin/halt
  mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
  operator:x:11:0:operator:/root:/sbin/nologin
  games:x:12:100:games:/usr/games:/sbin/nologin
  ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
  nobody:x:99:99:Nobody:/:/sbin/nologin
  systemd-timesync:x:999:998:systemd Time Synchronization:/:/sbin/nologin
  systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
  systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin
  dbus:x:81:81:System message bus:/:/sbin/nologin
  polkitd:x:998:997:User for polkitd:/:/sbin/nologin
  rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
  abrt:x:173:173::/etc/abrt:/sbin/nologin
  sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
  cockpit-ws:x:997:995:User for cockpit-ws:/:/sbin/nologin
  rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
  nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
  tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
  chrony:x:996:994::/var/lib/chrony:/sbin/nologin
  tcpdump:x:72:72::/:/sbin/nologin
  systemd-coredump:x:993:993:systemd Core Dumper:/:/sbin/nologin
  apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
  epmd:x:992:991:Erlang Port Mapper Daemon:/dev/null:/sbin/nologin
  runner:x:1000:1000::/home/runner:/bin/bash
  tio:x:1001:1001::/home/tio:/bin/bash
Just a comment overall, I bookmarked the site and think it's great.

Is it a good idea to present a site that compiles and runs code on a remote server to a site dedicated to hackers? :)

It has Bash - no need for Python subprocess shenanigans.
Just because /etc/passwd can be read doesn't mean there is no sandboxing - it's just not too restrictive, probably to allow many programming languages to run (bash is one of languages after all - so process execution has to be allowed). Just having access to /etc/passwd doesn't mean the service is hacked. Check other tools like this like ideone, they allow you to read /etc/passwd as well.

Try running `ps aux` for instance and notice that you can only notice runner's processes. Try writing a file in your home, and notice that it doesn't persist between runs. Run a process in background, it doesn't stay running. Essentially every change to the runner (account on which scripts are running) is undone after provided script is done running.

Some interpreters absolutely require being able to read /etc/passwd, as they use it to determine the user's home directory for some reason.

Since /etc/passwd, despite what the name suggests, doesn't actually contain sensitive information, I don't consider this an issue.

Looks neat, but the code editor really needs syntax highlighting and intelligent indentation.
It's not meant to be an editor. That sounds like unnecessary feature creep - the point is to run snippets of code in different languages through your web browser, not to be an IDE.
But people still need to type those snippets. Typing up fresh code in online code runners (as opposed to pasting in pre-written code) is extremely common.
I think syntax highlighting makes sense. People do write code right into things like this. In that case, syntax highlighting helps if that's what you're used to. Also it is helpful even if copy pasting for readability if you're normally used to syntax highlighting.
(Disclaimer: client is by me) but I have an alternative front-end for TIO which supports syntax highlighting and indentation for popular languages: https://vihan.org/p/tio
The play button turning into a gear that spins is pretty cool. First time I have seen that.
The reason it's the first time you've seen might be because it's stupidly difficult to get that effect to work on IE/Edge. You might notice that there's a different effect on the run button for those browsers.
Broken piece of shi_ "g++: error: : No such file or directory g++: error: : No such file or directory /srv/wrappers/cpp-gcc: line 5: ./.bin.tio: No such file or directory"
I don't like it. I still prefer Codepen and jsfiddle.
What do they do for languages other than JavaScript?
Ok, then Codeanywhere would be a better choice. Don't you think? ;)
Saying that Codeanywhere is a better choice than TIO is like saying that GMail is a better choice than Netflix.

In both cases, both services were built for different purposes, and neither one can or intends to replace the other.

Yeah, I don't see this as an attempt to be another Codepen or jsfiddle. This is just a way to easily test out features of a language, without going through the (sometimes very tedious) installation and setup processes required to code in certain languages locally.
no swift?
TIO is powered by Fedora Linux, and unfortunatly the site's maintainer was unable to get the Linux port of Swift to work. This may change in the near future, however.
I was pleasantly surprised to see my own joke language 99 in the list.

https://github.com/Keith-S-Thompson/99

I would have been even more pleasantly surprised if it worked.

Please contact @Dennis, the maintainer of TIO in talk.tryitonline.net, and tell him what isn't working. Fixes and language requests tend to be resolved within a day, because Dennis is awesome.
am i not getting this? i typed echo "hello"; for PHP and the output says "echo 'hello';"

it just repeated back what i typed instead of processing the code hmm

it works exactly like the real PHP interpreter:

   <?php echo "hello"; ?>
Some clarifications are in order:

This site is not a competitor to codepen, jsfiddle, etc. It's main purpose is to allow play with programming languages you'd otherwise have to install locally -- specifically, it's extremely helpful when browsing https://codegolf.stackexchange.com/ -- the author is a prolific and impressive contributor to that site.

It's sad to see a simple, well-designed, free, open-source project embracing the values of the HN crowd ("The TIO web app is free of charge, ad-free, and doesn't use tracking cookies or third-party analytic scripts.") -- and the top comment, as well as many others, are essentially a nitpick about a bug that can be trivially fixed.

>It's sad to see

No it's not. The top comment is a bug report because people are using the app. It also got fixed, which, for a comment chain, is about as much value as possible.

(comment deleted)
(comment deleted)
Code samples for each language would be appreciated
Looks like getting mentioned on Hacker News is an excellent way to get your servers overloaded. :) I've added a couple of additional servers.

I'll work on the issues that were brought up here asap. TIO only has two developers at this point (and only one of us works on the web app), so "asap" might take a little while.

Good job for the website though! It'll be very helpful to many people.
I really look forward to using this. It would be a great help to mobile users if uneeded options, e.g., 'header', could be made to disappear to save screen real estate.
This is pretty great!

It would be nice to add swift and elixir on the list.

Nice, looks pretty useful!

I think the default execution time should probably be less than 60 seconds. Most simple programs that people run on this kind of site should have an execution time of less than a second, so ~10 seconds should certainly be enough by default. This would free up some resources on your end and would inform people more quickly that they may have an infinite loop in their code.

On codegolf.stackexchange.com we have answers that need all 60 seconds. This would not be viable
The site is usable but can be made a lot better simply by changing the priorities.

Hide all those compiler flags etc in the first page. The idea is if any one needs such advanced settings surely the source code will be multi page source code, even for the special use case it would be in the 1 % users.

Include some template code which is readily compilable. THis is will be useful

The sharable link should be integrated with reddit, google +, etc to be more resistance free sharing.

Except for in C, when you want to use the math library, you'd need the `-lm` option, which comes up fairly commonly.