Sakura: MS独自の拡匵蚘法を蚱容するかどうか

Created on 13 Jun 2018  Â·  22Comments  Â·  Source: sakura-editor/sakura

僕は今のずころは蚱容しお良いず思っおいたす。

蚱容したくない堎合にはその理由を明確に説明しおおかないず議論が平行線をたどりたす。
ここでちゃんず敎理しおおきたしょう。

䟋

90

https://msdn.microsoft.com/ja-jp/library/tcxf1dw6.aspx
hs は Microsoft の拡匵なので䜿わなくお枈むのなら䜿わないほうがいいず思いたす。

Most helpful comment

雰囲気的に方蚀蚱容で良さそうではありたすね。
いったん蚱容っおこずにしたしょうか。

明日あたりにその旚をWikiにでも明蚘しお、このIssueはクロヌズしようず思いたす。
@sakura-editor/sakura-developers 異論があれば今のうちにコメントを

䞀応将来的にこの話がぶり返されおもそれはそれで構わないです。珟時点での方針がたずは決たればず。

All 22 comments

僕は今のずころは蚱容しお良いず思っおいたす。

Windowsずいう家の䞭で暮らす限り、最倧のパフォヌマンス性胜だけではなくを埗るためにはその家の䜜法にのっずらないず、゚ンドナヌザヌに提䟛できる満足なサヌビスが埗られない事が倚々あったので、クロスコンパむルやどのOSでも動くCLI的なコマンドでないかぎり、拡匵蚘法はさけられないかなずおもいたす。
文法的な問題で回避方法だったりもっずモダンな方法があるなら別ですけど。

ただ残念なのは圓のMicrosoftが郜合が悪くなるずたた勝手に仕様を倉えおしたうこず・・・

MinGW 等の他のコンパむラをサポヌトするかしないかがポむントだず思いたす。

サポヌトしないならMicrosoft固有衚珟を䜿うこずには問題ないですが、サポヌトするなら条件コンパむルするなり、
Microsoft固有衚珟を避けるなりの察応が必芁です。

MinGWもサポヌトする前提で考えおいたのですが、
サポヌトしなくおいいず考えおいたすか

MinGW

こちらのコンパむルをサポヌトするあたり、提䟛できる機胜に制限が出る、たたはmsずバッティングしおそれこそスむッチが増えおいくならもういっそMinGWをすおおもいいのかなずいうおもいがありたすが、
単に文法的なお䜜法守っお暙準語を぀かっおるかぎりMinGW䜿うひずずも亀流できるのであれば方蚀䜿わないほうがいいかなず。

珟にいたMinGWでもコンパむルできるようにするためにオヌバヌヘットかかっおるんすかね。
コミッタヌではないのでそのあたりの枩床感が私は぀かみきれなくお。

MinGWはCRTずしお msvcrt.dll を䜿いたすので、printf 等に関しお蚀えば、システムに入っおいる msvcrt.dll でどの曞匏が䜿えるかずいう問題になりたす。最近の Windows では、ファむル名は VC6 甚ず同じですが䞭身は VC2005 蟺りのものが䜿われおいるのではないかず思っおいたす。(_stat64 などがあるので。)

__USE_MINGW_ANSI_STDIO をdefineすれば、芏栌準拠床の高い MinGW 独自の printf が䜿われるようになりたすが、MS拡匵曞匏にどこたで察応しおいるかは知りたせん。

たあどちらにしおも "%I64d", "%hs" 等の VC6 の頃からある曞匏なら䜿えるんじゃないでしょうかね。

自分のスタンスや所感を述べさせおいただきたすず、

  • MinGW でコンパむルしたこずが無いので、そもそも珟状のコヌドが MinGW でコンパむル通るかどうか知らない。
  • 自分は MinGW に察しお興味を持っおいない。
  • が、MinGW 察応したい人がいるのであればそれを止める぀もりはない。
  • が、VS での開発効率を著しく萜ずすこずがあるのであれば、それは避けおほしい。
  • 䟋に出した "%hs" に぀いおは珟状のコヌドで既に倚数䜿われおいるので、今の時点の远加実装でこの曞匏を䜿うこずにNGを出すのは時期尚早に思う。仮に "%hs" の利甚を匟きたいのであれば先に既存コヌドの敎理をするのが先。その埌のレビュヌで "%hs" が匟かれるのであれば筋は通っおいる。
  • k-takata さんからも指摘があるずおり、おそらく "%hs" は問題なく動䜜するず想像される。
  • それ以倖の蚘法に぀いおは随時怜蚎が必芁かもしれないが、VS 開発効率を第䞀優先に考えお欲しい。

ずいうずころです。

%hsに぀いお「MinGWでも䜿える」ずいうこずが分かったので議論は䞀旊終了、ず芋おいたす。

vs2017をメむン開発環境ずしたい理由。
C蚀語でwindowsアプリを䜜るなら、VC++を䜿うべきだず考えおいたす。
なぜなら、C蚀語でアプリを曞くにはOSの補造元から提䟛されたヘッダヌファむルが必芁で、
windowsのヘッダヌファむル(=SDK)はVC++でビルドするこずを想定しお曞かれおいるからです。
OSの提䟛元が意図した通りのヘッダヌを䜿うにはVC++を䜿うしかない、ずいうこずになりたす。

microsoftがwindows sdkをvc++向けに曞いおいるこずが正しいかどうか、ずいうこずは別問題。
たたに、数幎前たでは正しいずされおいた情報が「非掚奚」になっおるこずがあるのも別問題。

VC++での開発効率を、本気で考え始めおよいのであれば、
ATLやWTLの採甚も芖野に入っおくるず思っおいたす。
いろいろず癖の倚い MFC ず比べ、ATLは扱いやすいず思っおいたす。

かなり近い未来に導入提案を予定しおいる機胜のいく぀かは、
ATL::CComPtrを䜿えるのず䜿えないのずで実装方法が党然倉わっおくる代物です。
ATLはMPLずいう䞀皮のオヌプン゜ヌスで公開されおいるので、
MinGW互換のために 劣化版 CComPtr を提案する腹積もりでいたした。
vc++特化が蚱されるなら本家ATLをそのたた䜿いたいです。

ATLはMPLずいう䞀皮のオヌプン゜ヌスで公開されおいるので

WTLはオヌプン゜ヌスですが、ATLは違いたす。

WTLはオヌプン゜ヌスですが、ATLは違いたす。

すみたせん。嘘でした。
atlは無償配垃で入手できるだけでした:cry:

劣化版CComPtrがNGだずするず、vc++特化しかないような 

がくが䜕も蚀わなくおもいずれそのCOMむンタヌフェヌスの話は出お来るような気がしおいたす。
そのずきたで保留にするか今決めるか。

MinGW ずいうか、 GNU projects には色々お䞖話になっおる気がするので、ビルド互換性を維持するこずが䜕かの貢献になるのなら残したい気持ちはありたす。ビルド互換性を維持しおいく動機は、がくにずっお「䜕らかの貢献」以倖の䜕者でもないような気がしたす。

ならば、他の方法で貢献できないかず考えるわけです。
゜ヌスをビルドできるこずは sakura の機胜ずは無瞁なんです。
テキスト゚ディタずしおの機胜で䜕か、具䜓的な貢献をするこずはできないかず考えるわけです。
もしそれができたらビルド互換性を維持する理由がなくなるず思いたす。

GNUにはvimやemacsがいるので、テキスト線集機胜で貢献するのは難しい気がしたす。
GUI のサクラ゚ディタならではのMinGW連携機胜を䜕か䜜り蟌めたら卒業でいい気もしたす。

どうでしょうか。

ひず぀倧事な点を曞き掩らしおいたので远蚘しおおきたす。

自分の芳枬範囲内では、

  • MinGW 察応に぀いおのプロゞェクトずしおのスタンスがいたいち䞍明確

ずいう点がありたす。MinGW 察応が歎史的にどのタむミングで行われたのか把握しおいたせんが、プロゞェクトの方針ずしおどういう理由で MinGW に察応しようずしおいたのかに぀いお経緯をご存知の方がいらっしゃいたしたら教えおいただきたいです。

ビルド方匏が耇数存圚するこずにより気を遣う点が倧きく増えるこずは足䞊みを遅らせるずいう点で倧きなデメリットであるず感じおいたすが、それを䞊回るメリットがあるずするならば怜蚎の䜙地はあるず考えおいたす。

MinGW ずいうか、 GNU projects には色々お䞖話になっおる気がするので、ビルド互換性を維持するこずが䜕かの貢献になるのなら残したい気持ちはありたす。ビルド互換性を維持しおいく動機は、がくにずっお䜕らかの貢献以倖の䜕者でもないような気がしたす。

  • MinGW, GNU に察する貢献
  • ゚ンドナヌザに察するスピヌディヌな改修

これらはトレヌドオフの関係にあるかず思いたす。
どちらを優先すべきかに぀いお方針をある皋床共有しおおく必芁があるでしょう。
個人的には埌者を優先したい気持ちが匷いです。

暙準語を話す事で他のプロゞェクトが盎接テク間接的に参考にできる、及び他のプロゞェクトから゜ヌスをむンスパむダしやすくなるっおこずはあるじゃなず思いたす。

私はC++超ド玠人ですがコピペしおきた゜ヌスが党然別な蚀語に芋えるこずがありたづ。

ただ、

゚ンドナヌザに察するスピヌディヌな改修

こちらが軞で他の方の参画が容易なら方蚀䜿うのもいいのかなず。
暙準語しゃべるためにオヌバヌヘッドがあるのなら。

すいたせん繰り返しな意芋になりたすが。

おそらくですが䞋手に MinGW 察応のコヌドが混じっおいるこずが原因で「このプロゞェクトは MinGW に察応するこずが前提で運甚されおいる」ずいう誀解を招いおいるずころが倧きいず思いたす。いや誀解ではないのかもしれたせんが。

今珟圚での方針を定めるずしたら、これたでの経緯は䞀旊無かったこずにしおおいお「今珟圚のコミッタ郜合で」MinGW 察応有無の方針を改めお決め盎すくらいの枩床感で良いず思っおたす。

仮に「MinGW 察応しない」ずいう方針になったずしおも将来のどこかのタむミングで MinGW 察応の匷い芁望があればそのずきに察応し盎すこずは可胜かず思いたす。

暙準語を話す事で他のプロゞェクトが盎接テク間接的に参考にできる、及び他のプロゞェクトから゜ヌスをむンスパむダしやすくなるっおこずはあるじゃなず思いたす。

本プロゞェクトが方蚀ベヌスの曞き方になっおいたずしおも、MinGW ベヌスの他プロゞェクトのコヌドを取り蟌むこずに぀いおはおそらく互換性的に問題は起こらないず考えおいたす。KENCHjp さんの蚀い回しを䜿うならば、方蚀に暙準語が混じるこずがあっおも動䜜䞊なんら問題はないずいうこずです。

逆に、本プロゞェクトの゜ヌスコヌドの䞀郚を他プロダクトで再利甚するようなこずがあるのであればMS独自蚘法は避けたほうが良いでしょう。しかしながら本プロゞェクトの性質は「再利甚を芋据えた郚品の提䟛」ではなく「プロダクトそのものを動かす」こずにあるので、独自蚘法をそこたで避ける理由は芋圓たらないず自分は考えおいたす。

@kobake さんの意芋にほが同意ですね。

倉な䟋えしたしたが、方蚀でも九州匁どうしで䌚話しおる分には、暙準語たざっおも、混乱しないず。
東北匁が混ざるず混乱するかもしれないがっお感じですかね。

ただ暙準語で話さないずず芋䞋す䞀郚の人もいるかずおもうので、@m-tmatma のご指摘の通り䞍甚意にMS独自仕様を䜿わないにこしたこずはないかなっおいうのは皆さん同意なのかなずは思いたす。ですよね

確かにあんたり特殊すぎるものは䜿いたくないですね。
方蚀を䜿う䜿わないに぀いおはれロかむチかで無理に統䞀しようずはせずに、䜿えるずころは䜿うくらいの感じで柔軟に運甚しおいきたいです。随時「雰囲気」で刀断するくらいで良いず思っおたす。

コンピュヌタを扱う䞊で「雰囲気」のような曖昧な考え方を嫌がる人が䞀定数いるこずも認識しおいるのですが、メンテナンスに関わる人が人間である以䞊は雰囲気でよしなに運甚しおいくのがストレスなく円滑に進める方針ずしお悪くないず思っおいたす。

今埌も方蚀呚りの問題は䜕床も出おくるず思いたす。
その床に人によっおは面倒かもしれたせんが必芁ずあれば随時議論しおいきたしょう。

方蚀が広範囲に分散しないように䜕かしらのラッパヌを䜜っお方蚀を䞀箇所に集玄するずいう運甚も堎合によっおはベタヌな遞択になるず思っおいたす。

P.S.
「方蚀」ずいう蚀い回しは文字数少ないしたぶん霟霬なく皆に意味䌝わるず思うので割ず気に入っおたす。

この議論の終着点は「今の時点今埌はさおおきで MinGW をサポヌトするかどうか」だず思いたす。
これに぀いおコンセンサスが取れたらクロヌズしたしょう。

@berryzplus さんに調べおもらった情報をいただきたしたのでここに貌っおおきたす。議論の材料にしおいただければず。

ログ蟿ったら痕跡が残っおたした。
どうも2009幎に公開された blog 蚘事を、2012幎に拟っお、2013幎に取り蟌たれたようです。
元ネタは mac 䞊の MinGW でビルドしお遊んでいただけの暡様。
upatchid:271
Imp: MinGW32 コンパむル察応

話に出おきおたせんが、初期のサクラ゚ディタはVC++6.0ずBCC5.5に察応しおいたようです。
これらずの互換性は既にないので、折を芋お関連コヌドのアヌカむブ化を進めるのが良いず思いたす。
https://github.com/sakura-editor/sakura/tree/master/btool
この issue ずは別件で、察応をすすめおみおもよいず思いたす。(優先床䜎)

MinGWに぀いおは、がくが真面目に考え過ぎおたなぁずいう所感ですね。
「やりたい人がいればやればよい」です。
珟圚ここを芋おる人の䞭に MinGW でビルドしたい人がいないなら気にしなくおいいず考えおいたす。

MinGW向けコヌドの倧半は本䜓に食い蟌んでいるので、
単にアヌカむブするこずができない認識です。
この issue ずは別件で、察応をすすめるべきだず考えおいたす。(優先床䞭)

将来的には MSIX(#101) や iOS 、android 等に察応させお行きたいですが、
他環境移怍ず開発環境(CRT の方蚀)は別の話だず思っおいたす。
必芁があれば個別に議論の堎を蚭けお行けばよいず考えおいたす。

別件の #100 でも觊れたしたが、ドッグフヌディングできない領域は無理に察応しおも誰が埗するかずいうずりヌンずいうのが自分の考えです。

話に出おきおたせんが、初期のサクラ゚ディタはVC++6.0ずBCC5.5に察応しおいたようです。

ログ持りたした。
http://sakura-editor.sourceforge.net/cgi-bin/cyclamen/cyclamen.cgi?log=unicode&ol=200711&tree=s44
僕のスタンスずしおは圓初から VS 䞀択掟だった暡様です

がちがち終息でよいですか

圓初の議題は「 ms 固有の フォヌマットパラメヌタ を蚱容するか吊か」
で、
「MinGWは結局 msvcrt.dll に䟝存するからその蟺気にしなくおもいいんじゃない」
ずいう発蚀がおお、
「それもそうだね。」、
ずみんなが玍埗した状態だず思っおおりたす。

がく個人は、もっずガシガシ visualstudio 䞀択の方向に進めおいきたい動機を持っおいたすが、
それはこの議題ずは関係のない話だず思っおいたす。

雰囲気的に方蚀蚱容で良さそうではありたすね。
いったん蚱容っおこずにしたしょうか。

明日あたりにその旚をWikiにでも明蚘しお、このIssueはクロヌズしようず思いたす。
@sakura-editor/sakura-developers 異論があれば今のうちにコメントを

䞀応将来的にこの話がぶり返されおもそれはそれで構わないです。珟時点での方針がたずは決たればず。

以䞋 Wiki に開発ポリシヌをたずめおいきたす。
https://github.com/sakura-editor/sakura/wiki/10.DevelopmentPolicy

今回は「MS独自の拡匵蚘法は蚱容する」旚を蚘茉したした。
本 Issue は䞀旊クロヌズしたす。

Was this page helpful?
0 / 5 - 0 ratings