MSE 3.0 beta, свои компилятор и интепретатр в скором будущем

Вопросы программирования и использования MSEide + MSEgui.

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

MSE 3.0 beta, свои компилятор и интепретатр в скором будущем

Сообщение debi12345 » 29.06.2013 13:30:41

Не встречал более амбициозного и работсоспособного человека :
Hi,
MSEide+MSEgui 3.0beta1 is available.

https://sourceforge.net/projects/mseide ... /3.0beta1/

This is the first release without dependence on FPC FCL and streaming system.
Please change "db" to "mdb" and add "mclasses" after "classes" in uses of
your units if necessary.

The development of an own compiler/interpreter has been started too.
It will take several years, stay tuned! :-)

Martin
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5759
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: MSE 3.0 beta, свои компилятор и интепретатр в скором буд

Сообщение GrayEddy » 29.06.2013 23:25:29

Можно подробнее?
1. Компилятор будет на базе FPC (форк)? Или с нуля?
2. Интерпретатор. Байт-код?
3. В связи с чем у Мартина появилась необходимость в отделении от FPC?

PS. В свое время читал эпичный тред, где Мартин общался с разработчиками FPC по поводу сломанных закладок (bookmarks) в DB.pas. Это ли послужило толчком?
GrayEddy
постоялец
 
Сообщения: 375
Зарегистрирован: 06.05.2005 09:37:56

Re: MSE 3.0 beta, свои компилятор и интепретатр в скором буд

Сообщение debi12345 » 30.06.2013 01:34:01

Компилятор будет на базе FPC (форк)? Или с нуля?

С нуля.

Интерпретатор. Байт-код?

Я спрашивал насчет этого. Переписка :
Which Pascal Script? Do you mean MSEpascal I started working on?
It is planned to implement a very fast compiler which compiles to stack
machine byte code which can be interpreted by a runtime engine or transformed
by optional backends to machine code. There will be a universal table driven
frontend with a small kernel which allows to be optimised even with hand
crafted assembler code.
Most likely there will be a single pass without scanner.
A work of many years. :-)
-----------------------
> PS: like Java as to its final code ?
>
No, the ultimate goal is compiled machine code. The possibility of the
intermediate bytecode interpreted by a runtime environment is a "side effect"
in order to have the ability to develop and test the compiler frontend
independently of the CPU specific backends. Development of the backends will
need another some years. The interpreter can be used for rather small
procedures mainly in combination with remote-MSEifi and reports.
----------------------
> Java has a huge kernel (JVM). Because of the huge library & GUI
> capabilities to provide ?
>
I think so.


В связи с чем у Мартина появилась необходимость в отделении от FPC?

Думаю, что свобода делать как сам считаешь нужным, ни под кого не подстраиваясь (у нас была несколко раз очень жаркая полемика в девелоперской ветке ФПЦ - которая ни к чему не привела, каждый по-своему прав и каждый остался при своем). Ну и еще то, что Мартин ВСЕГДА умудряется найти идеальное (без компориссов) решение. Теперь понимаю,что прийти к на компормиссу = либо недодумать или сдаться раньше времени.

Добавлено спустя 10 часов 1 минуту 3 секунды:
Re: MSE 3.0 beta, свои компилятор и интепретатр в скором будущем
Это ли послужило толчком?

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

Добавлено спустя 21 час 40 минут 34 секунды:
Re: MSE 3.0 beta, свои компилятор и интепретатр в скором будущем
Мартин пишет что новый компилятор+интепретатор будут делаться в режиме "фулл-тайм". Вероятно ему (насколько понял - специалисту по проектированию и программированию микро-ЭВМ и аналоговой "обвязки" к ним) это действительно нужно и будет вознаграждаться.
И видать понадобился 100% рабочий инструмент для GUI-программирования под АРМ-ы, AVR-ы и Ко.
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5759
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: MSE 3.0 beta, свои компилятор и интепретатр в скором буд

Сообщение t-ea » 01.07.2013 13:46:38

А исправления во 2-ю версию он вносить будет?
Мне очень сильно надо…
t-ea
новенький
 
Сообщения: 98
Зарегистрирован: 22.09.2006 00:22:34

Re: MSE 3.0 beta, свои компилятор и интепретатр в скором буд

Сообщение debi12345 » 01.07.2013 16:33:48

А исправления во 2-ю версию он вносить будет?

Конечно. 1) репортуйте по багам 2) переписываться будет компилятор а не МСЕgui
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5759
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: MSE 3.0 beta, свои компилятор и интепретатр в скором буд

Сообщение t-ea » 02.07.2013 11:28:51

debi12345 писал(а): 1) репортуйте по багам

Пришлось переписывать программу которая работает с базой MSSQL через ODBC. Столкнулся с тем, что при открытии некоторых таблиц (SELECT * FROM …) программа падает с ошибкой.
При запуске из под mseIDE дословно пишет 'Signal received. Signal: SIGFPE, Arithmetic exception. Function: SQLSRV32!BCP writefmt', при запуске из проводника просто 'Invalid float operation'.

У меня впечатление, что всё зависит от порядка и типа полей, так как:

1) если начать перечислять поля в SELECT'е, то с какого-то момента ошибка пропадает. (О! Вот оно это поле! Я нашёл! Сейчас всё опишу!). Однако, добавляешь только что удалённое поле в запрос, а ошибка не появляется.

2) подключаю в design-time через ODBC базу Firebird (ранее экспортированную из MSSQL), при выставлении sqlQuery.Active в True пишет ошибку 'Invalid float operation'. При запуске программы всё работает.

На какой-то версии mse (кажется 2.8rc, но потом несколько раз с SVN обновлял) в designtime MSSQL-таблица открывалась, а в run-time падала. Решил обновить mse прежде чем писать об ошибке — и на тебе — вообще перестало открываться.

Как это всё кратко и более понятно описать я не знаю.
В отдельный топик оформлять… то же самое… не могу точно описать где ошибка.
t-ea
новенький
 
Сообщения: 98
Зарегистрирован: 22.09.2006 00:22:34

Re: MSE 3.0 beta, свои компилятор и интепретатр в скором буд

Сообщение debi12345 » 02.07.2013 13:20:51

'Signal received. Signal: SIGFPE, Arithmetic exception. Function: SQLSRV32!BCP writefmt', при запуске из проводника просто 'Invalid float operation

Скорее всего не срабатывает автоопределние типа поля - флоат, намерик, дацимал,.. - потому что возвращен какой-то хитрый тип, или Мартин что-то изменил в конверсиях фпллавающей точки.
Напишите текст запроса и SQL-типы (ft*) полей которые он возвращает, и в какие SQLDB-типы их траслировать.И на каком поле запрос "падает".
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5759
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: MSE 3.0 beta, свои компилятор и интепретатр в скором буд

Сообщение t-ea » 02.07.2013 14:25:51

Запрос простой: "SELECT * FROM :TABLENAME"
TableName в процессе выполнения меняется.

В MSSQL поля описаны как "[decimal](4, 2)", "[decimal](6, 2)" и т.д., количество цифр разное, но после запятой или 0, или 2.
Например "[decimal](14, 2)" транслируется как ftBCD, Precision - 14, Size - 2. (Вот насчёт этих циферок я немного смущён, судя по названиям должно быть наоборот — 2, 14, но в то же время поле ftBCD, 14, 0 работает нормально).

А на каком падает, как я уже писал, я определить не могу. Например, запрос вида "select FIELD1, FIELD2, FIELD3 … FIELD100 from TABLE1" падает. Начинаю потихоньку выкидывать поля из запроса пока он не откроется. В итоге запрос к этому времени выглядит так: "select FIELD1, FIELD2 from TABLE1".
Кажется, что ошибка связана с полем 'FIELD3', добавляю это поле в запрос чтобы проверить догадку, а запрос открывается нормально, и можно добавлять туда ещё поле 'FIELD4', поле 'FIELD5', пока не появится ошибка. И снова начинаем в обратную сторону с тем же успехом…

То есть такого "железного" варианта при котором написал имя столбца в select получил ошибку, убрал — нет ошибки, я не нашёл. Из где-то 30 таблиц (всего таблиц в базе около 100) ошибка срабатывает на пяти. В "нормальных" 25-и таблицах поля типа float также присутствуют, но в гораздо меньшем разнообразии.


P.S. Может отдельную тему создать, а то как-то к "своему компилятору и интерпретатору" это мало относится.
t-ea
новенький
 
Сообщения: 98
Зарегистрирован: 22.09.2006 00:22:34

Re: MSE 3.0 beta, свои компилятор и интепретатр в скором буд

Сообщение debi12345 » 02.07.2013 14:47:50

Можете сэмулировать проблему на запросе, выбирающем костанты
Код: Выделить всё
  SELECT cast(1.2345 as decimal(3)),..

?

Добавлено спустя 3 минуты 32 секунды:
Re: MSE 3.0 beta, свои компилятор и интепретатр в скором будущем
Кажется, что ошибка связана с полем 'FIELD3', добавляю это поле в запрос чтобы проверить догадку, а запрос открывается нормально, и можно добавлять туда ещё поле 'FIELD4', поле 'FIELD5', пока не появится ошибка. И снова начинаем в обратную сторону с тем же успехом…

Тогда нужен минидамп БД и тесткэйс-программка и шаги.

Добавлено спустя 2 минуты 57 секунд:
Re: MSE 3.0 beta, свои компилятор и интепретатр в скором будущем
Запрос простой: "SELECT * FROM :TABLENAME"
TableName в процессе выполнения меняется.

"query.FieldDefs" после каждого изменения обновляется нормально ?
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5759
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: MSE 3.0 beta, свои компилятор и интепретатр в скором буд

Сообщение t-ea » 02.07.2013 16:14:15

"query.FieldDefs" после каждого изменения обновляется нормально

Вот сейчас, вроде бы дошёл до одного запроса на котором проявляется ошибка.
Запрос выбирает три поля описанные в MSSQL как:
1) [varchar] (50)
2) [varchar] (20)
3) [decimal] (11, 2)

В FieldDefs соответственно:
1) ftString Size: 50
2) ftString Size: 20
3) ftBCD Precision: 11, Size: 2

При наличии в запросе поля decimal ошибка даже в design-time — при написании запроса и нажатии кнопки Test или OK.
Без этого поля всё работает.
t-ea
новенький
 
Сообщения: 98
Зарегистрирован: 22.09.2006 00:22:34

Re: MSE 3.0 beta, свои компилятор и интепретатр в скором буд

Сообщение debi12345 » 02.07.2013 16:33:46

Отписался в ньюсконфу :
DB error (even in design time) when acessing DECIMAL fields of query to M$ SQL Server via ODBC

Defined in the SQL-query :
fld 1) [varchar] (50)
fld 2) [varchar] (20)
fld 3) [decimal] (11, 2) <<<< HERE

The corresponding FieldDefs :
fld 1) ftString Size: 50
fld 2) ftString Size: 20
fld 3) ftBCD Precision: 11, Size: 2 <<< HERE

Ждем.
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5759
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: MSE 3.0 beta, свои компилятор и интепретатр в скором буд

Сообщение t-ea » 02.07.2013 17:24:06

Ага.
Версия (git): 3fe27c7cb6077b2f5a21dd143cd38c09c74ba5cc
Ошибка на этом конкретном запросе: 'Invalid float operation'.
По поводу testcase.
Что нужно? Код программы? Легко. Завтра с работы приложу сюда весь исходник.
Но он там простой:
Код: Выделить всё
qry1.SQL.Text:='SELECT * FROM :TABLE';
qry1.Open;


А если сами данные, то всё сложнее, так програмно я таблицу отрыть не могу, а физического доступа к базе нет.
Могу скрипт с описаниями полей предоставить, как оно там в MS SQL создавалось.
t-ea
новенький
 
Сообщения: 98
Зарегистрирован: 22.09.2006 00:22:34

Re: MSE 3.0 beta, свои компилятор и интепретатр в скором буд

Сообщение debi12345 » 02.07.2013 17:54:37

Подождем что скажет Мартин.

Добавлено спустя 7 минут 47 секунд:
Re: MSE 3.0 beta, свои компилятор и интепретатр в скором будущем
1) нужно либо

- минидамп БД (думаю хватит только структуры, без данных или с одной-двумя заисями), и наверное по шагам (где взять инстллягу сервака, команды создания БД и пользователей и импорта дампа для LINUX-а) как получить коненкт к этой БД - очень (до фрустрации) много труда, знаю по себе

ИЛИ (если есть возможность "прострелить" входящие коннекты через файрвол)

- адрес и логин БД-сервера в инете - тогда Мартину не нужно мучаться исталяцией у себя, а это всегда было огромной проблемой для теткэйсов

2) простейшая программка, позволяющая кликнуть на кнопке и получить проявления бага.
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5759
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: MSE 3.0 beta, свои компилятор и интепретатр в скором буд

Сообщение Vapaamies » 03.07.2013 08:25:51

t-ea писал(а):при запуске из проводника просто 'Invalid float operation'.

В порядке общего бреда: а не может ли быть такое из-за специфических флагов в Default8087CW, которые обычно разрешают использование Extended и еще чего-то там, что принципиально отсутствует в Си?
Аватара пользователя
Vapaamies
постоялец
 
Сообщения: 292
Зарегистрирован: 24.07.2012 22:37:59
Откуда: Санкт-Петербург

Re: MSE 3.0 beta, свои компилятор и интепретатр в скором буд

Сообщение SeZuka » 03.07.2013 09:15:27

Собственно по теме.
А чем мартина на устроил FPC?
Начать писать с нуля это просто бред, скорее просто переделает FPC под свои нужды.
SeZuka
постоялец
 
Сообщения: 209
Зарегистрирован: 05.09.2012 14:58:05

След.

Вернуться в MSEide + MSEgui

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

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

Рейтинг@Mail.ru