LINUX.ORG.RU

Вышел новый релиз Lua 5.1


0

0

После почти трехлетнего перерыва увидел свет новый релиз языка программирования Lua, Lua 5.1. Среди основных изменений долгожданная система модулей, инкрементный GC, новые элементы синтаксиса, обновленный парсер и др. Почти одновременно вышел и очередной релиз LuaJIT (http://luajit.luaforge.net/luajit.html) , который обеспечивает поддержку 5.1.

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

★★★★★

Проверено: Shaman007 ()

Вот такая кострукция проперла:
local _var, _limit, _step = tonumber(e1), tonumber(e2), tonumber(e3)

Велик магучим ла языка. :/

vada ★★★★★
()

А кто-нибудь ion с ним пробовал? Собирается, работает?

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

(defpackage "02.01-helloworld" (:use :excl :common-lisp))
(in-package "02.01-helloworld")

(ff:defun-foreign-callable hello ((widget (* gtk:GtkWidget))
				  (data gtk:gpointer))
  (declare (ignore widget data))
  #+original (format t "~&Hello Lisp World~%")
  #-original (format t "~&Hello Lisp World [~a]~%" mp:*current-process*)
  (values))

(ff:defun-foreign-callable delete-event ((widget (* gtk:GtkWidget))
					 (event (* gtk:GdkEvent))
					 (data (* gtk:gpointer)))
  (declare (ignore widget event data))
  (format t "~&Delete Event Called~%")
  gtk:FALSE)

(ff:defun-foreign-callable destroy ((widget (* gtk:GtkWidget))
				    (data gtk:gpointer))
  (declare (ignore widget data))
  (format t "~&Destroy Event Called~%")
  #+original (gtk:gtk_main_quit)
  #-original (gtk:gtk-main-quit)
  )

(defun helloworld ()
  (gtk:gtk_init 0 0)

  (let ((window (gtk:gtk_window_new gtk:GTK_WINDOW_TOPLEVEL))
	(button #+original (gtk:gtk_button_new_with_label "Hello from Lisp")
		#-original (gtk:gtk_button_new_with_label (format nil "~
Hello from Lisp Process: ~a" mp:*current-process*))))

    (gtk:g_signal_connect (gtk:G_OBJECT window) "delete_event"
			  (gtk:G_CALLBACK
			   (ff:register-foreign-callable 'delete-event))
			  gtk:NULL)

    (gtk:g_signal_connect (gtk:G_OBJECT window) "destroy"
			  (gtk:G_CALLBACK
			   (ff:register-foreign-callable 'destroy))
			  gtk:NULL)

    (gtk:gtk_container_set_border_width (gtk:GTK_CONTAINER window) 10)

    (gtk:g_signal_connect (gtk:G_OBJECT button) "clicked"
			    (gtk:G_CALLBACK
			     (ff:register-foreign-callable 'hello))
			    gtk:NULL)

    (gtk:g_signal_connect_swapped
     (gtk:G_OBJECT button) "clicked"
     (gtk:G_CALLBACK (ff:get-entry-point "gtk_widget_destroy"))
     window)

    (gtk:gtk_container_add (gtk:GTK_CONTAINER window) button)
    
    (gtk:gtk_widget_show button)
    
    (gtk:gtk_widget_show window)
    
    #+original (gtk:gtk_main)
    #-original (gtk:gtk-main)
    ))



(flet ((run-example (name function)
	 ;; workaround for bogus (imo) redef. warnings generated by defvar
	 (declare (special gtk::*run-example*))
	 (unless (boundp 'gtk::*run-example*)
	   (setq gtk::*run-example* t))
	 (when gtk::*run-example*
	   (mp:process-run-function
	    (format nil "GTK+ Example: ~a" name)
	    function))))
  (run-example "02.01-helloworld" #'helloworld))

Для тех, кто не понял, это - "хелловорд"

Sun-ch
()
Ответ на: комментарий от Sun-ch

Саныч, а зачем "hello, world"'у обработчики сигналов и кнопка?

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

Саныч на лиспе написал, а не на луе

Лучше тем что на нее завязан ион :-)

sergej ★★★★★
()
Ответ на: комментарий от Sun-ch

А как это запустить? Из-под gcl не работает.

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

Зато так короче, а функциональность та же. А то, что у Саныча кнопка лишняя, так в ТЗ задачи "Hello, World" про это не сказано.

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

А вы FORTRAN IV не видили.

GOTO (D+C)*D 100, 200, 300, 400, 500, 600, и еще ХЗ куда

Что-то в этом роде. Чужую прогу читать - поседеть можно.

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

>GOTO (D+C)*D 100, 200, 300, 400, 500, 600, и еще ХЗ куда

Ну, такое в туче языков было. От Бейсика до Форта :D (хотя в Форте и не goto...)

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

>>GOTO (D+C)*D 100, 200, 300, 400, 500, 600, и еще ХЗ куда <<

Да не, такие вирши читались как роман - знаете такие книжные игры, когда ты выбираешь, что случится дальше из нескольких вариантов и тебя отсылают то на одну, то на другую страницу. Тут главное было - в бесконечный цикл не попасть - людей начинало плющить в сырообразное состояние.

YagMort ★★
()
Ответ на: комментарий от Sun-ch

>+++++++++[<++++++++>-]<.>++++++[<+++++>-]<-.+++++++..++
+.
>>+++++++[<++++++>-]<++.------------.<++++++++.--------.
+++.------.--------.>+.>++++++++++.



Для тех, кто не понял, это - "хелловорд" на brainfuck

AcidumIrae ★★★★★
()

Ruby 1.8

% cat > test.rb print "hello world\n" ^D % cat test.rb print "hello world\n" % ruby test.rb hello world

redroot
()

Вы чего, он уже сто лет как вышел. Недели две наверное, точно не помню...

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

> Functions in Lua are first-class values with proper lexical scoping. > Another interesting feature of functions in Lua is that they do proper tail calls > You can change the environment of a function with the setfenv function (set function environment).

Вот это интересно

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

да, но это первый раз, когда я посмотрел документацию по lua :)

grob ★★★★★
()

Lua 5.1 was released on 21 Feb 2006.

Запоздала новость :-(

Ardolynk
()

>который обеспечивает поддержку 5.1

а поддержка 7.1 когда ожидаецца?

anonymous
()

>The long string/long comment syntax ([[...]]) does not allow nesting. You can use the new syntax ([=[...]=]) in these cases

они специально делают чтобы неудобнее было или мне показалось? чем больше номер версии, тем хуже...

anonymous
()

>The luaopen_* functions (to open libraries) cannot be called directly, like a regular C function. They must be called through Lua, like a Lua function.

руль, вместо одной строчки теперь нужно писать 3-4 (написать строку кода на луа, загрузить её в lua vm и выполнить). Хорошо!... Ж)

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