[Ann] NPad alpha
От: Ziaw Россия  
Дата: 26.11.10 10:18
Оценка:
Вобщем npad дошел до той кондиции, когда с ним уже можно работать.

Прошу теста и фидбэка.

Что планирую делать дальше, но уже неспешно:
  1. асинхронный запуск кода и возможность его стопнуть да, сейчас синхронно
  2. возможность использовать макросы в примерах
  3. какой-нибудь показ readme к примеру
  4. генерацию экзешника/dll на диск (сейчас собирается в память, осталось понять как указывать во что именно собирать)
Re: [Ann] NPad alpha
От: igor609  
Дата: 26.11.10 10:32
Оценка: 7 (1)
Здравствуйте, Ziaw, Вы писали:

Z>Вобщем npad дошел до той кондиции, когда с ним уже можно работать.


Z>Прошу теста и фидбэка.


Z>Что планирую делать дальше, но уже неспешно:

Z>

    Z>
  1. асинхронный запуск кода и возможность его стопнуть да, сейчас синхронно
    Z>
  2. возможность использовать макросы в примерах
    Z>
  3. какой-нибудь показ readme к примеру
    Z>
  4. генерацию экзешника/dll на диск (сейчас собирается в память, осталось понять как указывать во что именно собирать)
    Z>

При запуске получаю


После нажатия на Run
System.IO.FileNotFoundException: Could not load file or assembly 'Nemerle.Macros, Version=1.0.0.9342, Culture=neutral, PublicKeyToken=5291d186334f6101' or one of its dependencies. The system cannot find the file specified.
File name: 'Nemerle.Macros, Version=1.0.0.9342, Culture=neutral, PublicKeyToken=5291d186334f6101'
   at System.Reflection.Assembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection)
   at System.Reflection.Assembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection)
   at System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
   at System.Reflection.Assembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
   at System.Reflection.Assembly.Load(String assemblyString)
   at Nemerle.Compiler.LibraryReferenceManager.assemblyLoad(String name)
   at Nemerle.Compiler.LibraryReferenceManager.LoadMacrosFrom(String name, String strongPart)
   at Nemerle.Compiler.ManagerClass.LoadNemerleMacros()
   at Nemerle.Compiler.ManagerClass._N__N_lambda__24273__24379.apply_void()
   at Nemerle.Compiler.ManagerClass._N_tryEx_24296(_N_closure_24280 _N_LoadExternalLibraries_cp_24295, FunctionVoid f)
   at Nemerle.Compiler.ManagerClass.LoadExternalLibraries()
   at Nemerle.Compiler.ManagerClass.Run()
   at NPad.ManagedCompiler.Compile(FileInfo fileName, TextWriter log)
   at NPad.AppRunner.CompileAndRun(FileInfo file)
   at NPad.AppRunner.CompileAndRun(FileInfo file)
   at NPad.MainForm.runCode()

WRN: Assembly binding logging is turned OFF.
To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.
Note: There is some performance penalty associated with assembly bind failure logging.
To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].
Re: [Ann] NPad alpha
От: Маслаков Михаил Эстония www.ammyui.com
Дата: 26.11.10 10:55
Оценка: 7 (1)
Стартует нормально, но при попытке запустить пример выдаёт:


System.InvalidCastException: Unable to cast object of type 'Nemerle.Internal.OperatorAttribute' to type 'Nemerle.Internal.OperatorAttribute'.
   at Nemerle.Compiler.LibraryReferenceManager.LoadMacrosFrom(Assembly assembly)
   at Nemerle.Compiler.LibraryReferenceManager.LoadMacrosFrom(String name, String strongPart)
   at Nemerle.Compiler.ManagerClass._N__N_lambda__24273__24379.apply_void()
   at Nemerle.Compiler.ManagerClass._N_tryEx_24296(_N_closure_24280 _N_LoadExternalLibraries_cp_24295, FunctionVoid f)
   at Nemerle.Compiler.ManagerClass.LoadExternalLibraries()
   at Nemerle.Compiler.ManagerClass.Run()
   at NPad.ManagedCompiler.Compile(FileInfo fileName, TextWriter log)
   at NPad.AppRunner.CompileAndRun(FileInfo file)
   at NPad.AppRunner.CompileAndRun(FileInfo file)
   at NPad.MainForm.runCode()



Здравствуйте, Ziaw, Вы писали:

Z>Вобщем npad дошел до той кондиции, когда с ним уже можно работать.
www.livexaml.com
www.ammyui.com
www.nemerleweb.com
Re[2]: [Ann] NPad alpha
От: Ziaw Россия  
Дата: 26.11.10 11:17
Оценка:
Здравствуйте, igor609, Вы писали:

I>При запуске получаю

I>
А nemerle установлен? Какой версии? Если установлен можно указать путь в настройка (File|Settings)

I>После нажатия на Run

I>
I>System.IO.FileNotFoundException: Could not load file or assembly 'Nemerle.Macros, Version=1.0.0.9342, Culture=neutral, PublicKeyToken=5291d186334f6101' or one of its dependencies. The system cannot find the file specified.
I>File name: 'Nemerle.Macros, Version=1.0.0.9342, Culture=neutral, PublicKeyToken=5291d186334f6101'
I>   at System.Reflection.Assembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection)
I>   at System.Reflection.Assembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection)
I>   at System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
I>   at System.Reflection.Assembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
I>   at System.Reflection.Assembly.Load(String assemblyString)
I>   at Nemerle.Compiler.LibraryReferenceManager.assemblyLoad(String name)
I>   at Nemerle.Compiler.LibraryReferenceManager.LoadMacrosFrom(String name, String strongPart)
I>   at Nemerle.Compiler.ManagerClass.LoadNemerleMacros()
I>   at Nemerle.Compiler.ManagerClass._N__N_lambda__24273__24379.apply_void()
I>   at Nemerle.Compiler.ManagerClass._N_tryEx_24296(_N_closure_24280 _N_LoadExternalLibraries_cp_24295, FunctionVoid f)
I>   at Nemerle.Compiler.ManagerClass.LoadExternalLibraries()
I>   at Nemerle.Compiler.ManagerClass.Run()
I>   at NPad.ManagedCompiler.Compile(FileInfo fileName, TextWriter log)
I>   at NPad.AppRunner.CompileAndRun(FileInfo file)
I>   at NPad.AppRunner.CompileAndRun(FileInfo file)
I>   at NPad.MainForm.runCode()

I>WRN: Assembly binding logging is turned OFF.
I>To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.
I>Note: There is some performance penalty associated with assembly bind failure logging.
I>To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].
I>


Либо нет немерла либо немрл не той версии в которой собран npad (9342). Я пока не знаю как бороться с этим, пусть товарищи подскажут.
Re[2]: [Ann] NPad alpha
От: Ziaw Россия  
Дата: 26.11.10 11:19
Оценка:
Здравствуйте, Маслаков Михаил, Вы писали:

ММ>Стартует нормально, но при попытке запустить пример выдаёт:


ММ>
ММ>System.InvalidCastException: Unable to cast object of type 'Nemerle.Internal.OperatorAttribute' to type 'Nemerle.Internal.OperatorAttribute'.
ММ>   at Nemerle.Compiler.LibraryReferenceManager.LoadMacrosFrom(Assembly assembly)
ММ>   at Nemerle.Compiler.LibraryReferenceManager.LoadMacrosFrom(String name, String strongPart)
ММ>   at Nemerle.Compiler.ManagerClass._N__N_lambda__24273__24379.apply_void()
ММ>   at Nemerle.Compiler.ManagerClass._N_tryEx_24296(_N_closure_24280 _N_LoadExternalLibraries_cp_24295, FunctionVoid f)
ММ>   at Nemerle.Compiler.ManagerClass.LoadExternalLibraries()
ММ>   at Nemerle.Compiler.ManagerClass.Run()
ММ>   at NPad.ManagedCompiler.Compile(FileInfo fileName, TextWriter log)
ММ>   at NPad.AppRunner.CompileAndRun(FileInfo file)
ММ>   at NPad.AppRunner.CompileAndRun(FileInfo file)
ММ>   at NPad.MainForm.runCode()
ММ>


Скорее всего проблема та же что и у igor609 не совместимость версий немерла. Видимо я зря бинарники выложил, либо к ним надо свой немерл прицепить. А собрать и попробовать можете?
Re[3]: [Ann] NPad alpha
От: hardcase Пират http://nemerle.org
Дата: 26.11.10 12:49
Оценка: +1
Здравствуйте, Ziaw, Вы писали:

Z>Скорее всего проблема та же что и у igor609 не совместимость версий немерла.


А если убрать VersionSpecific=true из немерловых референсов проекта?
/* иЗвиНите зА неРовнЫй поЧерК */
Re[3]: [Ann] NPad alpha
От: igor609  
Дата: 26.11.10 13:42
Оценка: +1
Здравствуйте, Ziaw, Вы писали:

Z>Либо нет немерла либо немрл не той версии в которой собран npad (9342). Я пока не знаю как бороться с этим, пусть товарищи подскажут.


Немерл у меня не установлен. Как бы это не должно быть препятствием для NPad
Re[3]: [Ann] NPad alpha
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.11.10 16:58
Оценка:
Здравствуйте, Ziaw, Вы писали:

Z>Либо нет немерла либо немрл не той версии в которой собран npad (9342). Я пока не знаю как бороться с этим, пусть товарищи подскажут.


Дык в сообщении об ошибке ответ и содержался. Задай в процессе переменную среды окружения Nemerle так чтобы она указывала в каталог где лежит требуемые версии компиляторных сборок.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: [Ann] NPad alpha
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.11.10 16:59
Оценка:
Здравствуйте, igor609, Вы писали:

I>Немерл у меня не установлен. Как бы это не должно быть препятствием для NPad


Вообще, планируется что он будет поставляться в составе компилятора. Так что проблем быть не должно.

Но можно сделать и так, чтобы он мог использовать отдельную версию комплятора. Только получается масло масленное.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: [Ann] NPad alpha
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.11.10 17:01
Оценка:
Здравствуйте, hardcase, Вы писали:

H>А если убрать VersionSpecific=true из немерловых референсов проекта?


То могу быть проблемы в рантайме. Хотя вероятность не очень велика.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: [Ann] NPad alpha
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.11.10 17:02
Оценка:
Здравствуйте, Ziaw, Вы писали:

Z>Вобщем npad дошел до той кондиции, когда с ним уже можно работать.


7zip то зачем? Не все же его на машине имеют. Зачем людям дополнительный геморрой?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: [Ann] NPad alpha
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.11.10 17:21
Оценка:
Здравствуйте, Ziaw, Вы писали:

Z>Скорее всего проблема та же что и у igor609 не совместимость версий немерла. Видимо я зря бинарники выложил, либо к ним надо свой немерл прицепить. А собрать и попробовать можете?


Ага. Вот список загруженных модулей:

Nemerle.Compiler.dll  E:\temp\NPAD\npad\Nemerle.Compiler.dll        No    N/A    No symbols loaded.        13        13.11.2010 01:55    0000000050FE0000-0000000051172000    [1188] NPad.exe: Managed (v2.0.50727)    
Nemerle.Compiler.dll  E:\Program Files\Nemerle\Nemerle.Compiler.dll No    N/A    Symbols loaded.    E:\Program Files\Nemerle\Nemerle.Compiler.pdb    18        12.11.2010 00:33    00000000506B0000-0000000050860000    [1188] NPad.exe: Managed (v2.0.50727)    
Nemerle.dll           E:\temp\NPAD\npad\Nemerle.dll                 Yes    N/A    No symbols loaded.        11        13.11.2010 01:54    000000005FEA0000-000000005FEE6000    [1188] NPad.exe: Managed (v2.0.50727)    
Nemerle.dll           E:\Program Files\Nemerle\Nemerle.dll          No    N/A    Symbols loaded.    E:\Program Files\Nemerle\Nemerle.pdb    17        11.11.2010 21:13    0000000050860000-00000000508AA000    [1188] NPad.exe: Managed (v2.0.50727)    
Nemerle.Macros.dll    E:\Program Files\Nemerle\Nemerle.Macros.dll   No    N/A    Symbols loaded.    E:\Program Files\Nemerle\Nemerle.Macros.pdb    16        12.11.2010 00:33    00000000508B0000-000000005094C000    [1188] NPad.exe: Managed (v2.0.50727)


Попробуй прописать в Options.LibraryPaths текущий каталог (содержащий сборки компилятора).
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: [Ann] NPad alpha
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.11.10 17:26
Оценка:
Здравствуйте, Ziaw, Вы писали:

Кстати, в архиве нет Nemerle.Macros.dll необходимого для компиляции.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: [Ann] NPad alpha
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.11.10 17:54
Оценка:
Здравствуйте, Ziaw, Вы писали:

В общем, похоже что баг заключается в том, что ты химичишь с путями плюс не положил в архив сборку Nemerle.Macros.dll. Вместо этой химии нужно просто задать в качестве пути путь где расположен NPad.exe (т.е. где находятся подходящие по версии сборки NPad.exe Nemerle.dll Nemerle.Compiler.dll Nemerle.Macros.dll).
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: [Ann] NPad alpha
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.11.10 18:06
Оценка:
Здравствуйте, Ziaw, Вы писали:

Z>Вобщем npad дошел до той кондиции, когда с ним уже можно работать.


Z>Прошу теста и фидбэка.


Если выключить компиляцию в домене, затем выбрать в дереве HelloWorld и выполнить его несколько раз, то на второй раз появляется сообщение об ошибке:

error: file 'E:\Libs\NPad\NPad\bin\Debug\Samples\HelloWorld.n' occured twice on the list to compile

а потом иногда возникает сообщение:

System.IO.IOException: Процесс не может получить доступ к файлу "E:\Libs\NPad\NPad\bin\Debug\Samples\HelloWorld.n", так как этот файл используется другим процессом.

Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: [Ann] NPad alpha
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.11.10 18:14
Оценка: 1 (1)
Здравствуйте, Ziaw, Вы писали:

Что касается скорости компиляции... Вариант с доменом работает намного медленее нежели запуска ncc.exe в отдельном процессе.

Уж если использовать домен, то надо не выгружать его каждый раз, а делать это только изредка, в фоне, для очистки памяти.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: [Ann] NPad alpha
От: hardcase Пират http://nemerle.org
Дата: 26.11.10 19:11
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Уж если использовать домен, то надо не выгружать его каждый раз, а делать это только изредка, в фоне, для очистки памяти.


Так IIS поступает. У него есть пороговое значение количества перекомпиляций aspx файлов.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[2]: [Ann] NPad alpha
От: Ziaw Россия  
Дата: 26.11.10 20:51
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, Ziaw, Вы писали:


VD>Что касается скорости компиляции... Вариант с доменом работает намного медленее нежели запуска ncc.exe в отдельном процессе.


Кинь кодом компилятора в отдельном процессе.
VD>Уж если использовать домен, то надо не выружать его каждый раз, а делать это только изредка, в фоне, для очистки памяти.
согласен. но если компилятор работает намного быстрее — нафик этот домен.
Re[5]: [Ann] NPad alpha
От: igor609  
Дата: 27.11.10 06:20
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, igor609, Вы писали:


I>>Немерл у меня не установлен. Как бы это не должно быть препятствием для NPad


VD>Вообще, планируется что он будет поставляться в составе компилятора. Так что проблем быть не должно.


VD>Но можно сделать и так, чтобы он мог использовать отдельную версию комплятора. Только получается масло масленное.

На работе я не смогу установить компилятор nemerle, а вот с NPad удовольствием бы поигрался.
Re[3]: [Ann] NPad alpha
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.11.10 07:57
Оценка:
Здравствуйте, Ziaw, Вы писали:

Z>Кинь кодом компилятора в отдельном процессе.


Проще всего воспользоваться MSBuild Task-ом которым пользуется студия — Nemerle.MSBuild.Tasks.dll.
Исходник лежит здесь: http://nemerle.googlecode.com/svn/nemerle/trunk/tools/msbuild-task/MSBuildTask.cs (на шарпе, так как нужен раньше чем получается скопилированный компилятор, а код прост как три копейки)

VD>>Уж если использовать домен, то надо не выружать его каждый раз, а делать это только изредка, в фоне, для очистки памяти.

Z>согласен. но если компилятор работает намного быстрее — нафик этот домен.

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

Получилось бы два варианта:
1. В памяти с периодическим перезапуском домена.
2. На диск с использованием отдельного процесса.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.