Orion - PHP подобный скриптовой движок

open source скриптовой язык Orion (аналог PHP) для freepascal / delphi

Модераторы: devels, Модераторы

Re: Orion - PHP подобный скриптовой движок

Сообщение devels » 03.12.2010 11:08:41

Последние новости

Разработка активно продолжается:

+ Добавлен break и continue для циклов
+ Добавлен оператор IN вхождения элемента в массив (в пхп этого нет, надо использовать in_array)
+ Добавлен цикл foreach (цикл по массиву) +возможность переберать элементы по ссылке (в пхп этого нет)
+ Добавлены функции для сохранения и загрузки байт-кода из памяти/строки/файла (в пхп этого нет)
+ Начата работа над динамической версией движка в dll/so виде и врапер для него
+ Оптимизирована работа хеш-таблиц
+ Оптимизирован и улучшен сборщик муссора, особенно для массивов
+ Добавлены инструкции global, include, require, eval, inlude_once, require_once
+ Добавлены новые юнит тесты на разную тематику

Модули:
+ Добавлен модуль функций для работы с математикой, реализован на 80%
+ Модуль для работы со строками, реализован на 50%
+ Модуль для работы с массивами, реализован на 20%

Движок компилируется в Linux'e, можно успешно скомпилировать пример project_lazarus.

Если у кого есть какие вопросы, можете их задавать.

P.S. У языка появилась персональная страничка: http://develstudio.ru/php-orion/ , в будущем будет на отдельном домене. Напоминаю, что исходники можно скачать только через SVN, инструкцию можно прочитать http://develstudio.ru/php-orion/svn-help/.
devels
постоялец
 
Сообщения: 137
Зарегистрирован: 01.09.2010 12:14:38

Re: Orion - PHP подобный скриптовой движок

Сообщение Odyssey » 03.12.2010 11:51:17

Проект очень радует, и хорошо, что новости о нём появляются на форуме.
devels писал(а):Если у кого есть какие вопросы, можете их задавать.

После прочтения странички про хэш-массивы остался не вполне понятным один момент:
Код: Выделить всё
list($x,$y) = myFunc();
echo $x; // выведет 20
echo $y; // выведет 30
Получается, в Orion есть функции, которым можно присваивать значения? Т.е. "функции наоборот", которые принимают результат и раскладывают его на аргументы? Или функции, возвращающие некоторый анонимный результат, присвоение которому отражается на аргументах функции? Это довольно необычная конструкция (во всяком случае для меня) и было бы неплохо почитать её более подробное описание (когда/если у разработчика останется на него время). Или это syntactic sugar и для него есть более традиционная запись?
Odyssey
энтузиаст
 
Сообщения: 581
Зарегистрирован: 29.11.2007 17:32:24

Re: Orion - PHP подобный скриптовой движок

Сообщение devels » 03.12.2010 12:20:55

Функциональность list взята из php, да она довольно оригинальна и нетепична, это даже не функция, а инструкция байт-кода. Я пока ее не реализовал еще, но она будет скоро реализована. Вообще да, это немного противоречит стандарту языка, но что поделать.
devels
постоялец
 
Сообщения: 137
Зарегистрирован: 01.09.2010 12:14:38

Re: Orion - PHP подобный скриптовой движок

Сообщение devels » 13.12.2010 08:47:34

Последние новости

+ Доработана версия для подключения движка через dll/so
+ Добавлены примеры подключения библиотеки orion и ее использования
+ Добавлен проект для компиляции движка в dll через lazarus
+ Добавлен генератор исходников врапера
+ На сайт проекта добавлен архив исходников с svn

Основная работа была проделана со структурой исходников, распределение типов и функций по исходникам более логичное и удобное.

На данный момент основная разработка завершена. Как я решил, делать модули функций это не так важно как классы и объекты в языке, т.е. это можно сделать и после. Второй этап это разработка системы классов и объектов в языке, она уже начата.
devels
постоялец
 
Сообщения: 137
Зарегистрирован: 01.09.2010 12:14:38

Re: Orion - PHP подобный скриптовой движок

Сообщение aolko » 31.12.2010 21:52:44

Не нужно изобретать велосипед. Люди будут сидеть на php, а если хоть кто-нибудь и будет пользоваться орионом то только малое количество людей
aolko
незнакомец
 
Сообщения: 1
Зарегистрирован: 31.12.2010 21:47:14

Re: Orion - PHP подобный скриптовой движок

Сообщение devels » 01.01.2011 13:03:51

aolko

Ты уже надоел, суешь свой нос везде где только можно, сам нихрена программировать не умеешь, все языки считаешь дерьмом, и не хочешь даже обучаться, что ты вообще здесь делаешь?
devels
постоялец
 
Сообщения: 137
Зарегистрирован: 01.09.2010 12:14:38

Re: Orion - PHP подобный скриптовой движок

Сообщение devels » 05.01.2011 16:28:39

Последние новости

- Уже вырисовывается система объектов и классов, реализовал вызов статических методов у классов, методы уже могут быть public, protected, private, а также иметь модификатор static (т.е. вызывать только статически). Реализованы константы parent:: и self:: - первый указывает на класс родитель, второй - на текущий класс.

На данный момент структура классов и объектов выглядит так, объекты и классы по сути одно и тоже, так выглядит изнутри. Любой объект может быть классом, т.е. породить новый класс или объект.

Главным отличием от PHP является то, что "::" и "->" у меня являются бинарными операторами, что позволяет использовать сложные выражения как слева, так и справа, а не только строки.

Простой тест, который я провел недавно:

// Orion - 250 mlsec
// PHP 5.2.4 - 1250 mlsec
// PHP 5.2.4, если создать экземпляр класса URa и вызывать через него - 370 mlsec
Код: Выделить всё
class IUra {
    static protected function x($y){
        return $y+1;
    }
}

class URa extends IUra {
   
    function test($y){
        return IUra::x ( $y );
    }
}

$i = 0;
while ($i < 100000){
  $i++;
  URa::test($i);
}



6 Января

Реализовал константы для классов (public, protected, private), кстати в пхп константы класса могут быть только публичными. Константы работают в 2-3 раза быстрее чем в php, вызов статичного метода в 6-7 раз быстрее в orion'e по сравнение с php 5.2.6.

Код: Выделить всё
// Speed Test
// ORION - 250 mlsec
// PHP 5.2.4 - 1350 mlsec

class URa {

      const MY_CONST = 20;

      function test(){
          return URa::MY_CONST;
      }
}

$i = 0;
while ($i < 100000){
  $i++;
    $d = URa::MY_CONST + URa::MY_CONST + URa::MY_CONST;
    $d = URa::test();
}
devels
постоялец
 
Сообщения: 137
Зарегистрирован: 01.09.2010 12:14:38

Re: Orion - PHP подобный скриптовой движок

Сообщение devels » 24.01.2011 16:16:03

Поддержка Linux:

Для тех кто под линуксом и кому лень качать исходники и компилировать проект, сделал бинарное демо для linux'a и win32:

Скачать можно тут, вместе с демо-скриптами: http://code.google.com/p/orionphp/downloads/detail?name=OrionTest_win_linux.7z
devels
постоялец
 
Сообщения: 137
Зарегистрирован: 01.09.2010 12:14:38

Re: Orion - PHP подобный скриптовой движок

Сообщение Fess » 25.01.2011 00:15:54

Проект вообще отличный ! а всякие там aoloka'и пусть заткнутся . у нас свои двигуны должны быть и надо наоборот помогать и содействовать если требуется а не трепаться . да и ось свою неплохо было бы замутить . в общем -хорошее дело делаешь .
Fess
незнакомец
 
Сообщения: 2
Зарегистрирован: 03.12.2010 01:03:19

Re: Orion - PHP подобный скриптовой движок

Сообщение devels » 25.01.2011 08:46:01

Насущная проблема, нужная помощь с реализацией сборки циклического мусора (циклические ссылки). Пишите мне если что.
devels
постоялец
 
Сообщения: 137
Зарегистрирован: 01.09.2010 12:14:38

Re: Orion - PHP подобный скриптовой движок

Сообщение devels » 20.02.2011 12:33:07

С циклическими ссылками разобрался.

Последние новости:

После большой переделки движка, а также небольшого затишья:

1. Переделана вся структура движка (это касается всего, стиля написания и не только - упрощен исходный код).
2. Добавлены объекты, вместе с ними пока оператор New, свойства и методы объектов, сборщик мусора для объектов. Все это работает относительно быстро. Пока не реализована передача $this в методы классов, но скоро будет.

Разработка движется к логическому завершению, дальше - написание расширений для гуи, игр, web'a. Скоро появится официальная страница языка по адресу http://orion-lang.org, на русском и английском языках, с примерами и документацией.
devels
постоялец
 
Сообщения: 137
Зарегистрирован: 01.09.2010 12:14:38

Re: Orion - PHP подобный скриптовой движок

Сообщение v-t-l » 22.02.2011 12:35:48

Решил попробовать сделать автономный ftp-клиент, программируемый на php. Пока все довольно неплохо (console,synapse ftpsend, win32 ~400kb), но не знаю как организовать паскалевскую функцию, возвращающую массив записей вроде:
Код: Выделить всё
$R[0]["Filename"]="mydir1";
$R[0]["Directory"]=true;
$R[0]["FileSize"]=-1;

$R[1]["Filename"]="myfile1.txt";
$R[1]["Directory"]=false;
$R[1]["FileSize"]=12345;
Не могли бы Вы привести пример. Заранее спасибо.
v-t-l
энтузиаст
 
Сообщения: 698
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Re: Orion - PHP подобный скриптовой движок

Сообщение Maxizar » 22.02.2011 13:10:48

aolko писал(а):Не нужно изобретать велосипед. Люди будут сидеть на php, а если хоть кто-нибудь и будет пользоваться орионом то только малое количество людей


IMHO: Пока не изобретешь и не соберешь свой велосипед, никогда не поймешь на сколько прекрасен или УБОГ велосипед другого.

PS. Devels если, Вам интересно писать целый движок, То никого не слушайте. В конце концов это вам нравится :). Удачи в разработке.
Maxizar
постоялец
 
Сообщения: 385
Зарегистрирован: 20.03.2010 19:48:14

Re: Orion - PHP подобный скриптовой движок

Сообщение devels » 22.02.2011 15:49:34

v-t-l писал(а):Решил попробовать сделать автономный ftp-клиент, программируемый на php. Пока все довольно неплохо (console,synapse ftpsend, win32 ~400kb), но не знаю как организовать паскалевскую функцию, возвращающую массив записей вроде:
Код: Выделить всё
$R[0]["Filename"]="mydir1";
$R[0]["Directory"]=true;
$R[0]["FileSize"]=-1;

$R[1]["Filename"]="myfile1.txt";
$R[1]["Directory"]=false;
$R[1]["FileSize"]=12345;
Не могли бы Вы привести пример. Заранее спасибо.


Вот примерно так:

Код: Выделить всё
procedure x_your_func(pr: TOriMemoryStack; Return: TOriMemory; eval: Pointer); cdecl;
  var
  i: integer;
  M: TOriMemory;
  ARR,Sub: TOriTable;
begin
     ARR := TOriTable.CreateInManager; // создаем массив в менеджере
     
    for i := 0 to 9 do // добавим 10 элементов в массив
    begin
         M := TOriMemory.GetMemory;
         Sub := TOriTable.CreeateInManager;
            Sub.GetCreateValue('Filename').Val( 'string value' ); // создаем TOriMemory в массиве с ключем и сразу задаем значение...
            Sub.GetCreateValue('Directory').Val(False); // ...
            Sub.GetCreateValue('Filesize').ValL(100); // ...
         
         M.ValTable( Sub ); // задаем значению Массив
         Arr.Add( M ); // добавляем элемент массив
    end;

     Return.ValTable(ARR); // результат функции
end;


За освобождением массива следит движок, можно не волноваться за утечки.

Добавлено спустя 2 минуты 36 секунд:
Maxizar писал(а):
aolko писал(а):Не нужно изобретать велосипед. Люди будут сидеть на php, а если хоть кто-нибудь и будет пользоваться орионом то только малое количество людей


IMHO: Пока не изобретешь и не соберешь свой велосипед, никогда не поймешь на сколько прекрасен или УБОГ велосипед другого.

PS. Devels если, Вам интересно писать целый движок, То никого не слушайте. В конце концов это вам нравится :). Удачи в разработке.


Официальный велосипед PHP очень убог, его исходники это прям настоящий клад говнокода. Я пытался что-то оттуда почерпать, но это тихий ужас. Я понял что развитие пхп с такими кривыми исходниками невозможно, и сам язык загнется без нормальной реализации.
devels
постоялец
 
Сообщения: 137
Зарегистрирован: 01.09.2010 12:14:38

Re: Orion - PHP подобный скриптовой движок

Сообщение v-t-l » 23.02.2011 13:33:06

ЧЯДНТ?
Код: Выделить всё
procedure x_your_func(pr: TOriMemoryStack; Return: TOriMemory; eval: Pointer); cdecl;
  var
  i: integer;
  M: TOriMemory;
  ARR,Sub: TOriTable;
begin
     ARR := TOriTable.CreateInManager; // создаем массив в менеджере

    for i := 0 to 9 do // добавим 10 элементов в массив
    begin
         M := TOriMemory.GetMemory;
         Sub := TOriTable.CreateInManager;
            Sub.GetCreateValue('Filename').Val( 'string value' ); // создаем TOriMemory в массиве с ключем и сразу задаем значение...
            Sub.GetCreateValue('Directory').Val(False); // ...
            Sub.GetCreateValue('Filesize').ValL(100); // ...

         M.ValTable( Sub ); // задаем значению Массив
         Arr.Add( M ); // добавляем элемент массив
    end;

     Return.ValTable(ARR); // результат функции
end;

Код: Выделить всё
$dir=your_func();
print("count($dir)=", count($dir));
foreach($dir as $entry){
  print("$entry=", $entry, "(", count($entry), ")");
  foreach($entry as $fld){
    print("$fld=", $fld);
  };
};

Код: Выделить всё
count($dir)=10
$entry=Array(0)
$entry=Array(0)
$entry=Array(0)
$entry=Array(0)
$entry=Array(0)
$entry=Array(0)
$entry=Array(0)
$entry=Array(0)
$entry=Array(0)
$entry=Array(0)


Добавлено спустя 14 минут 3 секунды:
orion SVN Revision: r218
v-t-l
энтузиаст
 
Сообщения: 698
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Пред.След.

Вернуться в Orion

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

Рейтинг@Mail.ru