Cello icon indicating copy to clipboard operation
Cello copied to clipboard

Web Framework

Open orangeduck opened this issue 11 years ago • 28 comments

Cello requires a web framework to become popular.

Suggestions:

  • Cello on Chains
  • Cello on Chariots

( No I'm not totally serious :P )

orangeduck avatar May 09 '13 15:05 orangeduck

That's Sonds interesting,dude. Go ahead. :100:

zhcy avatar May 11 '13 14:05 zhcy

While you're at it. A REPL would be nice.

Anyhow, I just wanted to say I think it's awesome what you did with libCello. Great job!

P.S.: I root for "Cello on Chords"

To1ne avatar Jul 23 '13 10:07 To1ne

It's a shame that Symfony is already taken...

wandernauta avatar Jul 23 '13 10:07 wandernauta

Also Sinatra would have been a nice match.

To1ne avatar Jul 23 '13 10:07 To1ne

Seriously though, a web framework would be neat. If it would be possible to write a nice Cello-feeling layer above libevent's http functionality, you'd be halfway there.

wandernauta avatar Jul 23 '13 10:07 wandernauta

You can sort of use gdb as a poor man's repl:

https://www.hackerschool.com/blog/5-learning-c-with-gdb

Yeah I think a web framework would be a good challenge to see how up-to-it cello really is for higher level programs. Might take a shot at it if I ever get some more free time - but anyone else is more than welcome :)

@To1ne Cheers! +1 for Cello on Chords

orangeduck avatar Jul 23 '13 10:07 orangeduck

Or just libtcc

On 07/23/13 12:58, Daniel Holden wrote:

You can sort of use gdb as a poor man's repl:

https://www.hackerschool.com/blog/5-learning-c-with-gdb

Yeah I think a web framework would be a good challenge to see how up-to-it cello really is for higher level programs. Might take a shot at it if I ever get some more free time - but anyone else is more than welcome :)

@To1ne https://github.com/To1ne Cheers! +1 for Cello on Chords

— Reply to this email directly or view it on GitHub https://github.com/orangeduck/libCello/issues/27#issuecomment-21406557.

radare avatar Jul 23 '13 11:07 radare

@radare Wouldn't that require Cello to compile on TCC? AFAIK it doesn't.

wandernauta avatar Jul 23 '13 11:07 wandernauta

This idea keeps wandering in my head...

How hard would it be to make a Sinatra-like framework? I like the idea to use libevent. We can start from this: http://www.impera-online.de/index.php/2012/07/creating-a-multithreaded-http-server-using-libevent/

Maybe we can call it "Stradivarius" or if you like a shorter name "Strad".

To1ne avatar Aug 19 '13 12:08 To1ne

After finding this, I've lost my motivation of creating it. Maybe we need to close #45 first?

To1ne avatar Sep 12 '13 19:09 To1ne

What needs to be done for this to happen? I've been meaning to find a C side project.

tekknolagi avatar Sep 18 '13 02:09 tekknolagi

I'm not a web developer so I know the exact details. If anyone has more insight into this issue I'd love to know more!

Probably wrapping libevent in a Cello like layer might be a good start. And after that probably looking into some routing stuff. Looking at the C code for Bogart might be a nice start to get something up and running quickly.

I'm currently working on a parser combinator library in vanilla C which I could look at porting to Cello if we need a proper regex engine and/or JSON support.

After that I suspect there is lots of string manipulation stuff to do as well as some database stuff (redis is probably a very easy choice) and template stuff.

orangeduck avatar Sep 18 '13 13:09 orangeduck

People are writing about this: https://medium.com/code-adventures/ff723209f8f5

To1ne avatar Sep 24 '13 21:09 To1ne

I was able to run libCello using GWAN webserver ... https://gist.github.com/solisoft/79ec698238a4cf3805c2 What about a regexp tool ? It will be awesome !

solisoft avatar Sep 25 '13 20:09 solisoft

That's awesome! I do have some vague plans for regex but a proper regex engine isn't that trivial to implement. Like I mentioned above I have a vanilla C parser combinator library I could port or an existing regex library for C could be wrapped in a Cello-like interface.

For now you can probably achieve 90% of what is required as far as matching goes using the scan functions (which work like sscanf but with cello types too).

orangeduck avatar Sep 25 '13 21:09 orangeduck

Probably wrapping libevent in a Cello like layer might be a good start.

libuv would probably be a better match. It was written to replace libev/libevent in node.js and it has a LOT of really useful stuff including threading, file and network I/O, timers/time, processes, etc.

http://nikhilm.github.io/uvbook/ <- some pretty good examples https://github.com/joyent/libuv/blob/master/include/uv.h <- main header, which you really want to go on

sakkaku avatar Jan 09 '14 20:01 sakkaku

Fine by me, some webserver examples (also using http-parser): https://github.com/philips/libuv-webserver https://github.com/springmeyer/libuv-webserver

To1ne avatar Jan 10 '14 08:01 To1ne

:+1:

momer avatar Apr 03 '14 05:04 momer

C REPL

  • http://root.cern.ch/drupal/content/cint
  • http://code.google.com/p/ccons/
  • https://github.com/martine/c-repl

C Package Managers

  • https://github.com/clibs
  • http://ooc-lang.org/docs/tools/sam/
  • https://www.npmjs.org/package/c-pm
  • https://github.com/ryppl

@solisoft Cool! What project were you working on with g-wan? I love experimenting and benchmarking with different webservers and the kernel. Update: found it out: it's http://solicms.com/ awesome project btw.! Always wanted to make something like that too!

The only and the most required thing for C is (formally) safe string manipulation libraries. Everything else already exists and is easy to find, or easier to solve. This is (imho) a hard problem, which people always nag about, when they try to bash C for the Web. I don't see a reason why C is bad for the web, NOT AT ALL (given the right 'framework' in which one securely operates).

I don't think that libuv is better, but it maybe is just taste. Better means more efficient to me, which always needs to proven in a reproducible manner, to be considered and called so.

this thread gives me hope =)

X4 avatar Apr 05 '14 23:04 X4

@X4 yes it's solicms.com but it's still a Ruby code ... didn't get the time for a C conversion. I have another projects like hermes.io which will be a private / secure / spam free messaging system. The goal is to replace actual mail system (quite ambitious though) ;)

solisoft avatar Apr 06 '14 00:04 solisoft

I looked at Cello a while ago and it looks great. If you want we can start testing an optional Cello mode when writting web services when using Duda I/O. So people may use our direct API or some Cello helpers.

What do you think ?

edsiper avatar Aug 21 '14 17:08 edsiper

Also have you seen dyad? I saw it on Hacker News recently and that might be helpful.

On Thu, Aug 21, 2014 at 10:42 AM, Eduardo Silva [email protected] wrote:

I looked at Cello a while ago and it looks great. If you want we can start testing an optional Cello mode when writting web services when using Duda I/O http://duda.io. So people may use our direct API or some Cello helpers.

What do you think ?

— Reply to this email directly or view it on GitHub https://github.com/orangeduck/libCello/issues/27#issuecomment-52955542.

tekknolagi avatar Aug 21 '14 17:08 tekknolagi

@edsiper That sounds awesome. I'd love to give that a play with! Tell me if there is anything I can help with.

@tekknolagi dyad looked interesting, although there are probably some more mature solutions such as libuv.

I was planning on wrapping my other library mpc in a Cello interface at some point so that Cello could have some basic regex support. Then it would allow for pattern matching in routing (and at that point you are half way there). I really need to get around to that...

orangeduck avatar Aug 21 '14 17:08 orangeduck

Oh, I didn't know about libuv. Neat!

On Thu, Aug 21, 2014 at 10:56 AM, Daniel Holden [email protected] wrote:

@edsiper https://github.com/edsiper That sounds awesome. I'd love to give that a play with! Tell me if there is anything I can help with.

@tekknolagi https://github.com/tekknolagi dyad looked interesting, although there are probably some more mature solutions such as libuv.

I was planning on wrapping my other library mpc https://github.com/orangeduck/mpc in a Cello interface at some point so that Cello could have some basic regex support. Then it would allow for pattern matching in routing (and at that point you are half way there). I really need to get around to that...

— Reply to this email directly or view it on GitHub https://github.com/orangeduck/libCello/issues/27#issuecomment-52957364.

tekknolagi avatar Aug 21 '14 17:08 tekknolagi

@orangeduck the first think is that you get started with the hello_world example, easy steps:

$ sudo pip install dudac
$ dudac -s
$ git clone https://github.com/monkey/duda-examples
$ dudac -w duda-examples/001_hello_world -p 8080

then you can reach the service with:

$ curl -i http://localhost:8080/hello/

then play with Cello and main.c :)

edsiper avatar Aug 21 '14 18:08 edsiper

I'm a webdeveloper, if someone are testing httpd on Cello, please, tell me. Because i want to try routing+http using Cello.

Something like:

http_get("/") {
    response.write(200, "hello world");
};

http_serve(":8080");

xshifty avatar Dec 28 '14 21:12 xshifty

it would be fantastic if building web app over C in high level syntax

nodegin avatar Aug 05 '15 11:08 nodegin

Is it possible to use Kore + Cello? If so, maybe we have our web framework already.

kerunaru avatar Jul 27 '17 06:07 kerunaru