Where communities thrive

  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
Repo info
  • Mar 13 2019 05:45

    IngwiePhoenix on master

    Adjustments for AS_NO_COMPILER … Fixed a problem with dictionary… Fixed memory leak in weakref wi… and 5 more (compare)

  • Dec 14 2018 05:20

    IngwiePhoenix on master

    Ownership of shared template in… Fixed crash in compiler when ma… Documentation git-svn-id: http… and 5 more (compare)

  • Dec 04 2018 14:10
    Albrecht-S commented #5
  • Dec 04 2018 12:35
    Albrecht-S commented #4
  • Dec 04 2018 12:27
    Albrecht-S commented #3
  • Dec 04 2018 05:41
    IngwiePhoenix commented #2
  • Dec 03 2018 19:49
    Postrediori commented #2
  • Nov 27 2018 21:20

    IngwiePhoenix on master

    documentation git-svn-id: http… documentation git-svn-id: http… documentation git-svn-id: http… and 11 more (compare)

  • Sep 24 2018 22:50

    IngwiePhoenix on master

    - Factories with only one argum… Fixed problem when compiler tri… - saving and loading bytecode w… and 4 more (compare)

  • May 31 2018 01:33
    BillUtada opened #5
  • Apr 02 2017 08:16
    DmitryHetman opened #4
  • Jan 13 2017 08:27
    mrwert commented #1
  • Jan 12 2017 21:32
    mrwert closed #1
  • Jan 12 2017 14:00
    mrwert opened #1
  • Dec 13 2016 14:13
    Israel- commented #3
  • Dec 13 2016 02:30
    oberon2007 edited #3
  • Dec 13 2016 02:28
    oberon2007 opened #3
  • Sep 17 2016 16:15

    IngwiePhoenix on master

    Implemented parseUInt for the s… Implemented findFirstOf, findLa… Implemented removeRange for the… and 38 more (compare)

  • Mar 31 2016 15:56

    IngwiePhoenix on master

    Expressions like (expr ? null :… auto var = null; no longer caus… Compiler wasn't giving an error… and 1 more (compare)

  • Mar 31 2016 15:55

    IngwiePhoenix on master

    [CMake] Fix library name (Debug… [CMake] Remove redundant linkin… [CMake] Simplify CMake build fi… and 4 more (compare)

Ingwie Phoenix
var worker = new PhoenixEngine.PHPWorker();
worker.on("map.new", function(e){
    // e could be info about the new map being loaded

// Tell the worker to update a server that the player entered a room
// with coordinates x=20 and y=18.
worker.emit("room.enter", {x:20,y:18});
use PhoenixEngine;
// Otherwise this would be: PhoenixEngine\Worker.
// PhoenixEngine reserves its own namespace everywhere.
$parent = Worker::getParent();

$server = new SomeServerConnection(...);

$parent->on("room.enter", function($e){
    // The parent could also set some values and offer them to the worker.
    // In this case, update the user's position on the server.
    $server->updateRoom($e->x, $e->y, $parent->user->id);
just an example of what i plan
this way you can „multithread“ in the browser context.
and i plan on making the workers into shared instances. so even if your app loads a new page, they can still access the same worker by some ID
var worker = PhoenixEngine.PHPWorker("somefile.php", {id: "game_engine"});

// Later at some other page
var worker = PhoenixEngine.getWorker("game_engine“);
the PhoenixEngine is the main namespace for all the APIs that it offers
there is also the Chromium namespace that holds some of the ported Chromium API
Then there is the FLTK namespace and some others too
each namespace represents a library’s functions.

in C++ with FLTK, you usually would do

Fl_Window* win = new Fl_Window(100,100,"Hello World“);

But in AngelScript:

FLTK::Window win(height:100, width:100, title:"Hello World“);
and yes, angelscript has named parameters. So cool!
I was the one to make the dev add these, actually
looks brilliant! glad to hear you are feeling better.
Ingwie Phoenix
Thank you! :)
its time to get back to work and do some amazing things.
Ingwie Phoenix
I just got a new idea - and lots of updates. :3
First on, I have began to work on the new IceTea build executor. That one will take me a while.
But meanwhile I have began to sketch out internals - as in, how to load a bunch of internal modules into angelscript
so in the end i will have the modules automatically register and the structure be similar to nodejs. allowing me to have many modules and add them through the build files, but not needing to change much code
that means that if someone wants to contribute a module to the Phoenix Engine internals, it iwll be very easy for them
or if they want to roll their own specialized distro of it. :3
And, about the idea. I just registered for codepen.io and i was like „I totally need to code a HTML/CSS/JS prototyping app in Phoenix Engine.
codepen.io is like jsfiddle, if you know that.
Ingwie Phoenix
I told you that Phoenix Engine does feature the latest PHP? It will feature THIS PHP. http://info.zend.com/p0600L03qC0U0RrXjA0XcJ0
Ingwie Phoenix
Have you ever built a distributed socket server?
codepen.io looks good, I love jsfiddle and codepen looks the same but prettier!
cool about php7 I did not know that was coming out, looking forward to it.
Yes I have built a distributed socket server, I think it is actually quite nice to code, I use a library like socket.io or something similar so it takes care of the keep alives and all of the issues with older browsers and the like
then you basically just get an event oriented system with messages coming in and then you writing them to other channels or connections.
nodejs is really nice to write that sort of system in and the browsers having web sockets and most languages also now being able to connect it makes it a really nice way to program
it is quite like the really old school visual basic event oriented programming once again only now you are running in multiple places at the same time.
are you planning to write some kind of chat system or something else?
Ingwie Phoenix
Yes - in fact I have a chat system. I am working on a new version of my Dragon’s Inn project. The underlying CMS is codenamed BIRD. I am facing challenges that you wouldnt face if you were sane ;). PHP and Nodejs working hand-in-hand - to a point where the NodeJS request object’s most important data is given to PHP, and in an async way, PHP returns output to NodeJS and stuff goes to the client. The cool thing is, that there is a userData property now, which I use to distribute additional, pre-cache/-built data to PHP to reduce load balancing.
The PHP backend is now an evented TCP server running across multiple processes that uses the hprose protocol to talk to NodeJS just like any other service.
I contribute to hprose and also am part of the hprose organization :) https://github.com/hprose
its my biggest nodejs project ever. http://git.ingwie.me/ingwie/bird3 … but currently i am working on scaling it verticaly
HTTP is easily scaled, but socket.io is a big issue; the heartbeat (aka handshake) requires multiple requests, so I need to somehow implement http:/npmjs.org/sticky-session into my session. since it just didnt work the way I wanted, I decided to write an entirely new clustering module.
its called PowerHouse and it allows you to spawn new workers as either cluster.fork() or child_process.fork(). But the API is the same across all of them, with the difference being that a child process is it’s own master. So this thing can cluster away all that it wants and does not depend on the other cluster workers - but dies if the main process does. Its a pretty nice thing actually
Ingwie Phoenix
BTW. Are you good with the different licenses? There is a service that will grant you a free SSL certificate as long as your code is open source and has a fitting license. Can you help me on this topic?
Ingwie Phoenix
So… for whoever still reading forth and back here, I have news. I have continued work on IceTea and turned it into a hybrid program. That means, like NodeJS, it partially uses scripts and partially native code. There is a project called incbin that turns a file containing INCBIN(…) macros into either ASM blocks for Gnu/Linux or OS X or embeds char arrays for Windows. This allows IceTea to load scripts off its binary - which INCREDIBLY increased its power. There are native bindings to stuff like file system and such, while I am now having to work on a new rules resolver and task runner. however, due to now being in the script language itself, i can code much easier and export way friendlier APIs to developers.
there now is a global IceTea object that allows programmatic target/rule/action access as well as exporting some internals like IceTea.estimateRuleOutput(…) for other devs to use.
I am also extending IceTea to be embed-friendly - like I can turn it into a library too and pass it arguments and itll run. this will allow me to write a PoC to ditch node-gyp in favor of IceTea (as nicetea) to allow much easier code building.
IceTea is also no longer focused on just native code but itll also support the cases of webapps. I.e.: .css -> .min.css
or .jsx -> .es6 -> .js
or even .php -> .phar
it also can take partial support for INCBIN to allow a resource file to be turned into a .c/.cpp file
there is a lot that IceTea can and will do and I hope to bring it to a stable point soon.
itll also support „externals“ and threads, allowing the script to spread across threads - where one thread can be used to silently build something like Clang alongside other code, allowing one to use their own stuff too.
a use case will be that IceTea will specify the Chromium source tree as external, effectively „embedding“ GYP into itself as an external process and waiting for it to be done, and exporting the outputs back into IceTea scope, just as if that had actually been a real target.
so yeah, lots of nice stuff ive done there. (: