Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Web Framework #27

Open
orangeduck opened this issue May 9, 2013 · 28 comments
Open

Web Framework #27

orangeduck opened this issue May 9, 2013 · 28 comments

Comments

@orangeduck
Copy link
Owner

Cello requires a web framework to become popular.

Suggestions:

  • Cello on Chains
  • Cello on Chariots

( No I'm not totally serious :P )

@zhcy
Copy link

zhcy commented May 11, 2013

That's Sonds interesting,dude. Go ahead. 💯

@To1ne
Copy link
Contributor

To1ne commented Jul 23, 2013

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"

@wandernauta
Copy link

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

@To1ne
Copy link
Contributor

To1ne commented Jul 23, 2013

Also Sinatra would have been a nice match.

@wandernauta
Copy link

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.

@orangeduck
Copy link
Owner Author

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

@radare
Copy link
Contributor

radare commented Jul 23, 2013

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
#27 (comment).

@wandernauta
Copy link

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

@To1ne
Copy link
Contributor

To1ne commented Aug 19, 2013

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
Copy link
Contributor

To1ne commented Sep 12, 2013

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

@tekknolagi
Copy link

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

@orangeduck
Copy link
Owner Author

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.

@To1ne
Copy link
Contributor

To1ne commented Sep 24, 2013

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

@solisoft
Copy link

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

@orangeduck
Copy link
Owner Author

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).

@sakkaku
Copy link
Contributor

sakkaku commented Jan 9, 2014

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

@To1ne
Copy link
Contributor

To1ne commented Jan 10, 2014

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

@momer
Copy link

momer commented Apr 3, 2014

👍

@X4
Copy link

X4 commented Apr 5, 2014

C REPL

C Package Managers

@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 =)

@solisoft
Copy link

solisoft commented Apr 6, 2014

@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) ;)

@edsiper
Copy link

edsiper commented Aug 21, 2014

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 ?

@tekknolagi
Copy link

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 notifications@github.com
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
#27 (comment).

@orangeduck
Copy link
Owner Author

@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...

@tekknolagi
Copy link

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

On Thu, Aug 21, 2014 at 10:56 AM, Daniel Holden notifications@github.com
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
#27 (comment).

@edsiper
Copy link

edsiper commented Aug 21, 2014

@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 :)

@xshifty
Copy link

xshifty commented Dec 28, 2014

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");

@nodegin
Copy link

nodegin commented Aug 5, 2015

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

@kerunaru
Copy link

kerunaru commented Jul 27, 2017

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests