LINUX.ORG.RU

Вышел Jython 2.5.2

 , ,


0

3

После полутора лет разработки (последняя версия была выпущена 9 сентября 2009 года) вышла в свет новая версия Jython — реализации языка Python на Java. Jython является интерпретатором и компилятором (с возможностью компилировать в байткод Java).

Помимо стандартной библиотеки, программы, выполняемые в среде Jython, могут использовать любые классы Java.

Список нововведений:

  • модуль сокетов теперь поддерживает IPv6;
  • модуль сокетов также поддерживает многоязычные доменные имена (Internationalized Domain Names (RFC 3490)), поддерживаемые в Java 6;
  • повышение производительности: на тесте Richards Jython 2.5.2 работает в 3 раза быстрее, на тесте Pystone на 20% быстрее, чем версия 2.5.1;
  • модуль Posix/nt был переписан, его производительность заметно улучшилась;
  • улучшены сообщения OSError об ошибках в Windows;
  • немного уменьшено время запуска;
  • улучшен модуль эмуляции readline (требуется для поддержки IPython);
  • функции Python теперь могут быть переданы непосредственно в методы Java, которые принимают одиночный метод интерфейса (например, Callable или Runnable);
  • добавлен индексатор Google;
  • исправлены многочисленные ошибки.

>>> Подробности



Проверено: post-factum ()
Последнее исправление: post-factum (всего исправлений: 3)
Ответ на: комментарий от anonymous

объясни тогда, почему о нем новость на быдлохабре есть, а на уютненьком нету

anonymous
()
Ответ на: комментарий от anonymous

>оба г-вно

«Эй, вы, трое! Оба ко мне, я тебе сказал!» ©

KRoN73 ★★★★★
()
Ответ на: комментарий от buddhist

>1.3.0

Ты сравнивай актуальную версию, там постоянно подкручивают JIT.

tensai_cirno ★★★★★
()
Ответ на: комментарий от Quasar

>Потому, что кроме жабы там ни на чём писать нельзя.
ну вот я и говорю - нафига нужен этот ваш питон на андроиде, кроме как побаловаться?

На крестах, кстати, тоже нельзя. Так что на чистых крестах тоже ничего серьёзного там нет, если что.

на крестах там большинство приличных игр. В тех же Angry Birds на java только тач-эвенты да реклама, а уровни вообще на lua написаны

thevery ★★★★
()
Ответ на: комментарий от Quasar

>Достаточно. Просто не в мейнстриме.
очень уклончивый ответ...

thevery ★★★★
()
Ответ на: комментарий от firestarter

А как же pypypy

С pypy всё хорошо, эти товарищи синтаксис могут менять очень легко, пусть лучше jit пилят и поддержку си-расширений.

baverman ★★★
()
Ответ на: комментарий от Vudod

>... ... ...он также самый-самый, поскольку это Питон, написанный на подмножестве Питона, а не Питон, написанный на Яве, которая написана на Си..

а ведь можно и дальше продолжить логику того кто на чём написан :-)

например:
«„“
...а не Питон, написанный на Яве, которая написана на Си, который написан в свою очередь на Си, который написан на Си, который написан на Си, который написан на Си, который написан на Си, который написан на Си, который написан на Си, который написан на Си, который написан на Си, ... ... ...
»«»

:-)

user_id_68054 ★★★★★
()

java не нужна. python не нужен. а этот выкидыш и подавно.

По теме: хороший вброс

anonymous
()
Ответ на: комментарий от KRoN73

Код, который могли принять за сишный. А какие еще варианты остаются? JVM вероятно реализована на Си, но вот сама ява.. :)

dave ★★★★★
()
Ответ на: комментарий от KRoN73

> А чего, тогда, ты на ЛОРе, на ней работающем, забыл? :)

если б жабы не было, то лор всё равно бы был! на erlang-е!

anonymous
()
Ответ на: комментарий от memnek

> дай пруф с разными бенчмарками.

gentoo-шный emerge под Jython запускается? профит есть?

anonymous
()
Ответ на: комментарий от KRoN73

не питон.
но синтаксис похожий :)
а если программа выглядит как питон, но работает со скоростью Си, то зачем платить больше? :)) (за всякие VM и интерпретаторы)









anonymous
()
Ответ на: комментарий от anonymous

а если собирать с valac --profile=posix, то бинарник не зависит от libgio и libgobject, а зависит только от libc.

anonymous
()
Ответ на: комментарий от anonymous

>а если собирать с valac --profile=posix, то бинарник не зависит от libgio и libgobject, а зависит только от libc.

это разве работает?

anonymous
()
Ответ на: комментарий от KRoN73

Я сам с него прусь. Но надо сказать, что на операциях ввода-вывода Jython сливает CPython-у. Надо будет чой-то поганять и дополнить в бложик.

cab ★★★★
()

А зачем ЭТО нужно?

Неужто в три раза быстрее Джавы работает???

Bioreactor ★★★★★
()
Ответ на: комментарий от anonymous

А проверить самому слабо? Всё работает.

~% mkdir -p ~/src/vala/genie; cd ~/src/vala/genie

genie% cat > hello-console.gs << EOF

[indent=4]
init
    print "Hello LOR\n" 
EOF

genie% valac --version Vala 0.10.3

genie% valac hello-console.gs -o hello-glib -C

genie% ./hello-glib Hello LOR

genie% strip ./hello-glib; du -hs ./hello-glib

8,0K ./hello-glib

genie% ldd ./hello-glib

	linux-vdso.so.1 =>  (0x00007fff6d1ff000)
	libgobject-2.0.so.0 => /usr/lib/libgobject-2.0.so.0 (0x00007f36fd5fa000)
	libgthread-2.0.so.0 => /usr/lib/libgthread-2.0.so.0 (0x00007f36fd3f5000)
	librt.so.1 => /lib/librt.so.1 (0x00007f36fd1ec000)
	libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0x00007f36fced6000)
	libpthread.so.0 => /lib/libpthread.so.0 (0x00007f36fccb9000)
	libc.so.6 => /lib/libc.so.6 (0x00007f36fc92d000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f36fd84c000)
genie% cat hello-console.c
/* hello-console.c generated by valac 0.10.3, the Vala compiler
 * generated from hello-console.gs, do not modify */


#include <glib.h>
#include <glib-object.h>
#include <stdlib.h>
#include <string.h>




void _vala_main (char** args, int args_length1);



void _vala_main (char** args, int args_length1) {
	g_print ("Hello LOR\n\n");
}


int main (int argc, char ** argv) {
	g_type_init ();
	_vala_main (argv, argc);
	return 0;
}

genie% valac hello-console.gs -o hello-posix -C --profile=posix genie% cat hello-console.c

/* hello-console.c generated by valac 0.10.3, the Vala compiler
 * generated from hello-console.gs, do not modify */


#include <stdlib.h>
#include <string.h>
#include <stdio.h>




void _vala_main (char** args, int args_length1);



void _vala_main (char** args, int args_length1) {
	printf ("Hello LOR\n\n");
}


int main (int argc, char ** argv) {
	_vala_main (argv, argc);
	return 0;
}

genie% ldd ./hello-posix

linux-vdso.so.1 => (0x00007fff4ede0000) libc.so.6 => /lib/libc.so.6 (0x00007f3f64970000) /lib64/ld-linux-x86-64.so.2 (0x00007f3f64cfc000)

genie% strip ./hello-posix;du -hs ./hello-posix

8,0K ./hello-posix

genie% ./hello-posix

Hello LOR

anonymous
()
Ответ на: комментарий от cab

Jython сделал еще больший прогресс - теперь он опережает CPython на объектном Фибоначчи.

протестируйте кто-нибудь вариант на Vala/Genie: cat > fib-o.gs << EOF

[indent=4]      
/*
    vi: ts=4 expandtab 
*/              


class Fib : Object
    value : int
    
    def setn ( n : int)
        value = n

    def getval () : int
        if value <= 2 do return 1
        var f1 = new Fib()
        f1.setn(value - 1)
        var f2 = new Fib()                              
        f2.setn(value - 2)
        return f1.getval() + f2.getval()  


init
    var f = new Fib()
    f.setn(40)
    print " Fib(40)=%d \n ", f.getval()

EOF

% valac fib-o.gs

% /usr/bin/time ./fib-o

 Fib(40)=102334155 
 
221.96user 1.43system 4:31.63elapsed 82%CPU (0avgtext+0avgdata 5248maxresident)k
0inputs+0outputs (0major+397minor)pagefaults 0swaps

% /usr/bin/time python ./fib.py

Fri Mar 11 14:49:06 2011
102334155
Fri Mar 11 14:57:49 2011
447.04user 3.23system 8:42.31elapsed 86%CPU (0avgtext+0avgdata 17648maxresident)k
0inputs+0outputs (0major+1360minor)pagefaults 0swaps

% python --version

Python 2.7.1

вообще-то в языке есть проперти, так что setn/getval не нужен. Проперти, сигналы, интерфейсы и исключения и т.п. скорее всего работают только со стандартной --profile=glib (а не --profile=posix или --profile=dova):

valac fib-obj.gs -o Fib-o-posix --profile=posix -C

fib-obj.gs:7.13-7.18: error: The type name `Object' could not be found
class Fib : Object
            ^^^^^^
Compilation failed: 1 error(s), 0 warning(s)

Если заменить class Fib : Object на просто class Fib, и посмотреть сгенерированный с -C исходник на С, всё равно увидим там

Fib* fib_new (void);
Fib* fib_construct (GType object_type);

, то есть, уже для new Fib() требуется GObject. (неявно uses Glib)

Вывод:

--profile=posix работает для простого хелловорда, не использующего фичи языка. Как только начинаются фичи (классы, интерфейсы, проперти, сигналы, исключения, и т.п.), начинается рантайм и завязка на рантайм (Glib).

Хотя поработав напильником можно всё это отрубить, но это означает, что фактически нужно написать новый рантайм (dova вместо gobject), --profile=posix годится только для простых вещей с минимумом зависимости от рантайма (но уже с синтаксисом питона или C#).

anonymous
()
Ответ на: комментарий от anonymous

для коллекции: бенчмарк на Jython

fib-o % /usr/bin/time jython2.5 ./fib.py
Fri Mar 11 16:05:17 2011
102334155
Fri Mar 11 16:13:17 2011
397.55user 4.49system 8:10.92elapsed 81%CPU (0avgtext+0avgdata 487536maxresident)k
0inputs+0outputs (0major+45358minor)pagefaults 0swaps

fib.py тот же что и по ссылке выше.

anonymous
()
Ответ на: комментарий от anonymous

отсюда вывод:
язык питон — это то, что реализует рантайм языка питон.
язык Jython — является языком питон в той мере, в которой реализует стандартный рантайм питона, и своей собственной реализацией, в остальной мере. Синтаксис у этих двух языков одинаковый.
язык Vala/Genie — это язык, который имеет синтаксис, похожий на питон, реализует фичи языка, но при этом реализует рантайм, привязанный к GObject. Так же, как для C есть dietlibc, ulibc, crt0.o — стд. рантайм языка Си, который можно переделать на свою реализацию, в Vala/Genie можно указав --profile=foobar заменить свой рантайм. Чтобы все фичи языка заработали, они должны поддерживаться в этом --profile=foobar.

А вот если взять какой-нибудь http://sam.ai.ki/brace/ http://sam.ai.ki/brace/examples/fib http://sam.ai.ki/brace/examples/ — то это будет тоже язык с похожим синтаксисом «в стиле питон», но тоже совершенно другой язык — потому что другой рантайм, и другие «фичи языка».

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.