|
Под какой лицензией firebird.pas?
|
|||
---|---|---|---|
#18+
Симонов ДенисHommer, является, потому что он написан руками, а не сгенерирован автоматически. Разницу видишь? З.Ы. ты можешь написать собственный генератор который создаёт интерфейс для любого другого языка программирования. И вновь генерированный файл не обязан сдержать какую-то лицензию. А если такой файл набить руками, то обязательно нужно прилеплять к нему IDPL? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2018, 15:42 |
|
Под какой лицензией firebird.pas?
|
|||
---|---|---|---|
#18+
Hommer, не ужели ты не видишь разницу между использованием чужого кода с лицензией в который ты вносишь правки и написанием полностью своего (в котором не используются части чужого кода)? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2018, 15:46 |
|
Под какой лицензией firebird.pas?
|
|||
---|---|---|---|
#18+
Симонов ДенисЗ.Ы. ты можешь написать собственный генератор который создаёт интерфейс для любого другого языка программирования. И вновь генерированный файл не обязан сдержать какую-то лицензию. А если сгенерённый файл будет монолитным cpp файлом в котором будет весь код Firebird? :) Это просто про подумать где проходит грань. Если что-то сгенерено из того что под IDPL, обязано ли сгенерённое тоже быть под IDPL? А если написать конвертор кода из C++ в pascal, то паскалевский код тоже должен стать под IDPL? А базы данных которые генерятся IDPL-ным кодом? :) Воззможно существует способ перегенерации кода (в рамках лицензии конечно), которым можно уйти от IDPL на что-то попонятней :) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2018, 15:57 |
|
Под какой лицензией firebird.pas?
|
|||
---|---|---|---|
#18+
Хочу указать правильное выравнивание для структур из firebird.pas Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
Под 32-бит: - структура TraceCounts одинакова при любом выравнивании. - структура PerformanceInfo одинакова при выравниваниях 1,2 и 4. И одинакова при выравниваниях 8 и 16. Т.е при 4 и 8 она разная. - структура Dsc одинакова при любом выравнивании. Под 64-бит: - структура TraceCounts одинакова при выравниваниях 1,2 и 4. И одинакова при выравниваниях 8 и 16. Т.е при 4 и 8 она разная. - структура PerformanceInfo одинакова при любом выравнивании. - структура Dsc одинакова при любом выравнивании. Proof: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. 236. 237. 238. 239. 240. 241. 242. 243. 244. 245. 246. 247. 248. 249. 250. 251. 252. 253. 254. 255. 256. 257. 258. 259. 260. 261. 262. 263. 264. 265. 266. 267. 268. 269. 270. 271. 272. 273. 274. 275. 276. 277. 278. 279. 280. 281. 282. 283. 284. 285. 286. 287. 288. 289. 290. 291. 292. 293. 294. 295. 296. 297. 298. 299. 300. 301. 302. 303. 304. 305. 306. 307. 308. 309. 310. 311. 312. 313. 314. 315. 316. 317. 318. 319. 320. 321. 322. 323. 324. 325. 326. 327. 328. 329. 330. 331. 332. 333. 334. 335. 336. 337. 338. 339. 340. 341. 342. 343. 344. 345. 346. 347. 348. 349. 350. 351. 352. 353. 354. 355. 356. 357. 358. 359. 360. 361. 362. 363. 364. 365. 366. 367. 368. 369. 370. 371. 372. 373. 374. 375. 376. 377. 378. 379. 380. 381. 382. 383. 384. 385. 386. 387. 388. 389. 390. 391. 392. 393. 394. 395. 396. 397. 398. 399. 400. 401. 402. 403. 404. 405. 406. 407. 408. 409. 410. 411. 412. 413. 414. 415. 416. 417. 418. 419. 420. 421. 422. 423. 424. 425. 426. 427. 428. 429. 430. 431. 432. 433. 434. 435. 436. 437. 438. 439. 440. 441. 442. 443. 444. 445. 446. 447. 448. 449. 450. 451. 452. 453. 454. 455. 456. 457. 458.
Можно ли исходить из того, что в бинарниках Firebird в структурах для 32-битных платформ выравнивание 8 байт, а для 64-битных - 16? Зависит ли это от компилятора? Если выравнивание зависит от компилятора, или может быть изменено в последующих их версиях, то тогда нужно прописывать выравнивания в коде Firebird. Или сделать функцию в Firebird API, которая бы возвращала выравнивание. И тогда хоть будет возможность использовать соответствующую ему структуру или кидать исключение если выравнивание не может быть обработано. Или предложите свой вариант :) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2018, 12:45 |
|
Под какой лицензией firebird.pas?
|
|||
---|---|---|---|
#18+
HommerМожно ли исходить из того, что в бинарниках Firebird в структурах для 32-битных платформ выравнивание 8 байт, а для 64-битных - 16? Зависит ли это от компилятора? Нельзя. Вероятнее всего - да, но авторы компиляторов Си вступили в сговор. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2018, 12:53 |
|
Под какой лицензией firebird.pas?
|
|||
---|---|---|---|
#18+
А не проще ли написать свой враппер , чем патчить интерфейсную библиотеку или тем более ее генератор? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2018, 12:58 |
|
Под какой лицензией firebird.pas?
|
|||
---|---|---|---|
#18+
AS. вопрос ещё, является ли декларация типов и констант, без единственнйо выполнимой строчки, кодом. Как в Turbo Pascal были *.int файлы - юниты у которых было отрезано всё, начиная со строчки implementation. Симонов Денисявляется, потому что он написан руками, а не сгенерирован автоматически. Разницу видишь? Не вижу. Вариант 1: берём исходник интерфейса на каком-нибудь IDL, запускаем какой-нибудь clop, получаем "сгенерированый автоматически" исходник на Паскале Вариант 2: берём исходник интерфейса на каком-нибудь C (*.h), запускаем какой-нибудь H2P, получаем "сгенерированый автоматически" исходник на Паскале Вариант 3: берём исходник на Паскале, запускаем какой-нибудь Smart Mobile Studio, получаем "сгенерированый автоматически" исходник на JavaScript http://github.com/jashkenas/coffeescript/wiki/list-of-languages-that-compile-to-js Ну и где грань? Во всех случаях у нас есть транслятор, который получает исходник на одном языке и автоматически по нему создает исходник на другом языке. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2018, 13:07 |
|
Под какой лицензией firebird.pas?
|
|||
---|---|---|---|
#18+
Vladimir Baskakov, Проще. Один раз. ....но интерфейс продолжает развиваться и меняться. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2018, 13:08 |
|
Под какой лицензией firebird.pas?
|
|||
---|---|---|---|
#18+
Ariochинтерфейс продолжает развиваться и меняться. Ага. Причём обычно это происходит внезапно, без предупреждения и без описания "назачем". Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2018, 13:10 |
|
Под какой лицензией firebird.pas?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovHommerМожно ли исходить из того, что в бинарниках Firebird в структурах для 32-битных платформ выравнивание 8 байт, а для 64-битных - 16? Нельзя. И как же тогда писать обёртки? Кто об этом должен задумываться? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2018, 13:33 |
|
Под какой лицензией firebird.pas?
|
|||
---|---|---|---|
#18+
HommerИ как же тогда писать обёртки? Кто об этом должен задумываться? В идеале - разработчик интерфейса. На практике - автор обёртки, который должен методично сравнить размеры структур и смещения их мемберов у своей обёртки и оригинала. В данном конкретном случае - я бы вообще забил на это "новое API", поскольку старое проверено годами и, надо сказать, удобнее в использовании. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2018, 13:46 |
|
Под какой лицензией firebird.pas?
|
|||
---|---|---|---|
#18+
HommerИ как же тогда писать обёртки? Кто об этом должен задумываться?Об этом лучше бы задумываться до релиза. Раз 3-ку пропустил, сосредоточься на 4-ке - общими усилиями сделаем лучше, чем первый блин. Ну, или можно как Сибиряков - срать на всё и всех ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2018, 14:01 |
|
Под какой лицензией firebird.pas?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, это смотря для каких целей. Если для взаимодействия с приложениями, то может и старого API достаточно, а вот если плагины свои писать или UDR, то так и сяк придётся разбираться с новым API ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2018, 14:03 |
|
Под какой лицензией firebird.pas?
|
|||
---|---|---|---|
#18+
Симонов ДенисЕсли для взаимодействия с приложениями, то может и старого API достаточно, а вот если плагины свои писать или UDR, то так и сяк придётся разбираться с новым API Да. Но не пришлось бы, если бы некоторые, придумав гениальную идею со структурами указателей на обычные функции, довели её до логического завершения и сделали всего одну структуру с указателями на функции старого API. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2018, 14:10 |
|
Под какой лицензией firebird.pas?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovСимонов ДенисЕсли для взаимодействия с приложениями, то может и старого API достаточно, а вот если плагины свои писать или UDR, то так и сяк придётся разбираться с новым API Да. Но не пришлось бы, если бы некоторые, придумав гениальную идею со структурами указателей на обычные функции, довели её до логического завершения и сделали всего одну структуру с указателями на функции старого API.Не вижу гениального тикета в трекере. Не вижу связи между старым ISC API и написанием плагинов\UDR. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2018, 14:16 |
|
Под какой лицензией firebird.pas?
|
|||
---|---|---|---|
#18+
hvladНе вижу связи между старым ISC API и написанием плагинов\UDR. Понимаю, меня тоже склероз иногда одолевает. Ну так я напомню историю: "новое API" изначально создавалось чтобы передавать в плагины (включая UDR) указатели по которым можно было бы вызывать функции движка для выполнения (в том числе) запросов к базе в контексте текущего коннекта и транзакции. Поскольку, по понятным причинам, загружать в плагине новый инстанс fbclient было бы неудачной идеей. И это новое API тогда было действительно ОО, базирующимся на абстрактных классах (так же известных как COM-интерфейсы). Но потом внезапно обнаружилось, что в FPC (и Дельфи) есть баг, не позволяющий вернуть интерфейс из функции. И понеслась... Результатом было текущее состояние: структуры указателей. Что забавно, это то же самое, что использовалось ещё с Джимовском коде, только тогда оно было без автогенерации. Была там структура с указателями на все функции GDS API. Казалось бы, сделай аналогичную структуру и изначальная проблема решена, но нет, тогда пришлось бы не писать новый код, а избавляться от уже написанного, на который потрачены два года жизни. "На энто я пойтить не могу!" (с) А оптимисты, думающие, что их идеи могут найти отклик в сердцах разработчиков - могут писать в трекер или рассылку. Я, к счастью, этим уже переболел. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2018, 14:50 |
|
Под какой лицензией firebird.pas?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovКазалось бы, сделай аналогичную структуру и изначальная проблема решена, но нет, тогда пришлось бы не писать новый код, а избавляться от уже написанного, на который потрачены два года жизниКакая изначальная проблема ? Какой уже написанный код для UDR\плагинов ? Dimitry SibiryakovЯ, к счастью, этим уже переболел.Это твои проблемы. Плюс неумение и нежелание сотрудничать и принимать общие правила. PS Гадить же я тебе не разрешаю, пинал и буду пинать по мере сил. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2018, 15:12 |
|
Под какой лицензией firebird.pas?
|
|||
---|---|---|---|
#18+
hvladКакая изначальная проблема ? Повторяю медленно: нужен был способ передавать в плагины (включая UDR) указатели по которым можно было бы вызывать функции движка для выполнения (в том числе) запросов к базе в контексте текущего коннекта и транзакции. hvladКакой уже написанный код для UDR\плагинов ? Весь код, включая CLOOP, интерфейсы и так называемое "новое API" в полном составе. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2018, 15:44 |
|
Под какой лицензией firebird.pas?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakovв FPC (и Дельфи) есть баг, не позволяющий вернуть интерфейс из функции ????? не знаю как там в FPC, а в Delphi это стандартная возможность. или речь про ABI, что такие функции реализованы компилятором, как процедуры с дополнительным by reference out-параметром ? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2018, 15:49 |
|
Под какой лицензией firebird.pas?
|
|||
---|---|---|---|
#18+
Ariochили речь про ABI, что такие функции реализованы компилятором, как процедуры с дополнительным by reference out-параметром ? Они так реализованы для соглашения safecall. Проблема в том, что для остальных соглашений это не работает, хотя должно бы. Дебаркадер умеет ловко избавляться от старого мусора и ссылка http://qc.embarcadero.com/wc/qcmain.aspx?d=51313 уже не работает, но проблема выглядит в точности как https://bugs.freepascal.org/view.php?id=26593 вплоть до порождаемого ассемблера. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2018, 17:11 |
|
Под какой лицензией firebird.pas?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Хммм... похоже вы нашли какой-то цзкоспецифический случай, который никем практически на практике не использовался (за все время обсуждения кроме FB не было названо других практических примеров). И тут дело именно в том, что в Delphi/FPC всеми автоматическими объектами (со счетчиками ссылок то есть) занимается компилятор. > Standard C++ library provides a template for interface smart pointer. Можешь считать, что вот такой template и является типом interface в Delphi/FPC И счетчики ссылок автоматически прорабатывать компилятор обязан. А как именно и кем именно в случае передачи такого темплейте через EAX/RAX должны вызываться _AddRef и _Release вы договориться даже не пытались. Можно ли _любую_ структуру одного языка в 2-3 слова описать на другом языке? видимо не всегда. Собственно, когда я читал описание нового FB3 API, там был целый раздел, почему это свой собственный API, а не COM/XPCOM, и там прямо было написано, что FB3 API экономит время исполнения потому что не занимается подсчётом ссылок. Т.е. этот тип не является COM-интерфейсом и как следствие не является Delphi-интерфейсом. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2018, 18:50 |
|
Под какой лицензией firebird.pas?
|
|||
---|---|---|---|
#18+
Ariochпохоже вы нашли какой-то цзкоспецифический случай, который никем практически на практике не использовался (за все время обсуждения кроме FB не было названо других практических примеров). Правда? Погугли "Delphi Direct3dCreate9". Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2018, 18:59 |
|
Под какой лицензией firebird.pas?
|
|||
---|---|---|---|
#18+
Ariochкогда я читал описание нового FB3 API, там был целый раздел, почему это свой собственный API, а не COM/XPCOM, и там прямо было написано, что FB3 API экономит время исполнения потому что не занимается подсчётом ссылок. Т.е. этот тип не является COM-интерфейсом и как следствие не является Delphi-интерфейсом. Уже после одного этого наглядного примера как люди путают COM и IUnknown можно было отправлять описание в печь. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2018, 19:05 |
|
Под какой лицензией firebird.pas?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, а что останется от COM, если из него убрать IUnknown? это из серии "люди путают C++ и классы. Классы для C++ не обязательны." в любом случае, interface в Object Pascal - это именно iUnknown для этого и вводился (аналогично, как справеливо указали, Visual Basic'y). Со всеми плюсами и минусами этого (например весьма проблемно делать наследуемые интерфейсы без GUIDов, как классы наследуются)/ если FB3 интерфейс отказывается от iUnknown - то он отказывается от Delphi/FPC interface Dimitry SibiryakovИ это новое API тогда было действительно ОО, базирующимся на абстрактных классах (так же известных как COM-интерфейсы). Но потом внезапно обнаружилось, что в FPC (и Дельфи) есть баг, не позволяющий вернуть интерфейс из функции. И понеслась... Ну не поддерживается такой тип, не-IUnknown-интерфейс в языке. Это факт. Java-объекты тоже напрямую в язык не встроены, например. Я правда как-то с трудом верю, что когда делали API FB3 совместимость с Delphi была первостепенной задачей. Скорее всего во втором десятке где-то. В любом случае, с точки зрения Delphi эти интерфейсы FB3 ничем не отличаются. Ни некий COM-без-IUnknown, о котором ты говоришь, ни то, что сдели в итоге вместо него. Оба эти типа одинаково не являются паскалевскими интерфейсами. Поэтому я не понимаю, что именно "понеслось". Если бы Delphi нативно поддерживал один из двух конкурирующих предендентов на FB3 API, то чисто гипотетически это как-то могло повлиять на выбор Firebird Team. Но поскольку он одинаково не поддерживает их оба - то Delphi просто остаётся за скобками. Какие бы причины ни были у них сделать именно такой API - Delphi к этому отношения не имело. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2018, 19:31 |
|
Под какой лицензией firebird.pas?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovAriochпохоже вы нашли какой-то цзкоспецифический случай, который никем практически на практике не использовался (за все время обсуждения кроме FB не было названо других практических примеров). Правда? Погугли "Delphi Direct3dCreate9". Ну значит два случая. Причём MSDNThe IDirect3D9 interface inherits from the IUnknown interface То есть счётчик ссылок не так сильно затормаживает процесс, чтобы мешать писать 3D-стрелялки. А потом я смотрю на d3d9->CreateDevice - и кажется мне я там вижу safecall. https://msdn.microsoft.com/en-us/library/windows/desktop/bb204867.aspx http://gamesmaker.ru/programming/directx/directx-api-inicializaciya-direct3d/ И я вообще перестаю понимать, почему накладные расходы, вполне терпимые для 3D-стрелялок, оказываются нетерпимыми для RDBMS, которая зачастую утыкается или в диск (если запросов мало, но у каждого огромные данные), или в парсинг и препарирование (если запросы мелкие, но их мнооого) Но, что выросло - то выросло. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2018, 19:42 |
|
|
start [/forum/topic.php?fid=40&msg=39626785&tid=1561169]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
41ms |
get topic data: |
7ms |
get forum data: |
1ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 132ms |
0 / 0 |