18歳人口の減少（少子化）や若者の車離れが顕著になった1990年代末頃から、都市部を中心に各教習所間の競争が激化している。売上が減少していく中で、サービス・接遇に取り組む教習所がある一方、料金のディスカウント（値下げ競争）も激しくなっている。地方部の不採算校では合宿教習に取り組むところも増えてきたが、宿泊施設などの管理や仲介業者への手数料負担が重くのしかかってくる。厳しい経営環境で回復の見込みが立たないこともあって関連企業の意向や他業種への転換を狙っての廃業が2000年頃から目立っている。通常、閉鎖する半年前に（所轄の都道府県）公安委員会に報告して入校を取りやめ、近隣校へ教習生の引き継ぎを行うという指導がなされてきたが、2008年10月に東京地方裁判所に破産手続き開始の申し立てを行った東京都の八王子自動車教習所（指定校）は約1700人いる教習生に総額2億円とも言われる料金の返済をしなかったため、さまざまな所で問題となった。また、北海道札幌市の愛育安全相互自動車学校グループも、同年11月、安全相互二輪免許専門校（指定校）を閉鎖し、授業料を返金できないまま破産手続きに入った。廃校した旧自動車教習所で使われていた教習車・送迎車の大半は（旧教習所の）近隣にある別の自動車教習所や運転免許試験場へ譲渡される事もある。
教習の時間および方法については特に定められていない。その代わり、運転免許試験場で仮免許技能試験、仮免許学科試験、本免許技能試験などを受験しなければならない。また、本免許技能試験に合格した後、指定自動車教習所、または、特定届出自動車教習所へ行って、普通自動車免許の場合は7時間（危険予測講習2時間、高速道路講習2時間・応急救護処置教習3時間）の取得時講習を受講しなければ免許証が交付されない。なお、特定届出自動車教習所では、国家公安委員会規則で定められた特定講習を受講することができる。普通自動車免許を取得する場合は、高速教習・危険予測・応急救護など計7時間。これを受けると終了証明書を取得することができ、取得時講習が免除される。
ユニファイド形式（unified format、unidiffとも呼ぶ）はコンテキスト形式における技術的改良を継承し、より少量の出力でより読みやすい形式を追求し生まれた。通常、ユニファイド形式は「-u」オプションにより指定される。この出力形式はpatchプログラムへの入力形式として使われることが多い。現在、多くのプロジェクトにおいてdiff出力によるパッチを投稿する際にはこのユニファイド形式を使うよう推奨している。このため、このユニファイド形式がソフトウェア開発者の間でのいわば共通形式となっている。ユニファイド形式diffを最初に開発したのはウェイン・デイヴィソンで、1990年8月のことであった（comp.sources.miscのVolume 14にunidiffとして投稿）。リチャード・ストールマンがGNUプロジェクトのdiffコマンドにこの機能を1ヶ月後に加え、1991年1月リリースのGNU diff 1.15から使えるようになった。GNU diffではその後任意の形式のdiff出力を扱えるようコンテキスト出力サポートの拡張が進められた。GNU diffおよびdiff3は現在他のdiff系ツールやpatch系ツールと共にdiffutilsパッケージに含まれている。EmacsにはEdiffツールとしてパッチが変更する内容を表示しユーザが動的にパッチファイルの変更点を編集・マージすることができるインタフェースを持っている。ユニファイド出力形式ではヘッダの2行はコンテキスト形式と同一のもので始まるものの、元ファイルは「---」で示され新ファイルは「+++」で示される。これに続く変更箇所ではファイル間の相違が示されるが、非変更箇所は「 」(スペース)、挿入行は「+」、削除行は「-」で始まる行で示される。変更箇所ではその範囲を示す行番号・行数の情報に続いて行の挿入・削除、非変更箇所などが出力される。範囲を示す情報は2つの@マークで囲まれて出力され、前述のコンテキスト出力で示された内容は1行にまとめられた形で出力される。変更箇所の範囲情報の出力形式を以下に示す:@@ -R +R @@変更箇所の範囲情報は2つの範囲についての情報を含んでいる。一方はマイナス記号が頭に付いた元ファイルにおける変更箇所を示すものであり、もう一方はプラス記号が頭に付いた変更後のファイルにおける変更箇所を示している。範囲を示すRはl,sという形式となり、lは変更箇所の開始行、sはそれぞれのファイルにおける変更箇所の行数を示している。GNU diffの大半のバージョンでは、Rにおいてsがデフォルトの1である場合にはカンマ以降を省略した形式も使える。元ファイルの変更箇所の範囲を示す情報では非変更箇所行・削除行についての行数分も含んだ情報が提示される。一方、変更後ファイルにおける範囲情報でも非変更箇所行・挿入行の分も含んだ情報が出力される。変更箇所における行数と範囲情報が示している行数が一致しない場合、その出力は不正な形式として拒絶される。ある行が変更された場合、削除+挿入として表現される。元ファイルと変更後ファイルの変更箇所が同一の場所に現われ相互に隣り合って出力されることになる。以下のその一例を示す。-check this dokument. On+check this document. Ondiff -u original newというコマンドを実行した際は、以下のような出力が行われる。:--- /path/to/original ''timestamp''+++ /path/to/new      ''timestamp''@@ -1,3 +1,9 @@+This is an important+notice! It should+therefore be located at+the beginning of this+document!+ This part of the document has stayed the same from version to@@ -5,16 +11,10 @@ be shown if it doesn't change.  Otherwise, that would not be helping to-compress the size of the-changes.--This paragraph contains-text that is outdated.-It will be deleted in the-near future.+compress anything. It is important to spell-check this dokument. On+check this document. On the other hand, a misspelled word isn't the end of the world.@@ -22,3 +22,7 @@ this paragraph needs to be changed. Things can be added after it.++This paragraph contains+important new additions+to this document.diff出力形式の中には特定のプログラムや一定の利用法の中で変更や拡張が加えられているものもある。例えばバージョン管理システムでは、diffのヘッダ出力部分のタイプスタンプの箇所に版番号・バージョン番号や「ワーキングコピー」その他のコメント類を出力する場合もある。また複数のdiff出力を一つにまとめた形式が使えるものもある。この場合各変更ファイルのヘッダとして以下のような形式が使われる。: Index: path/to/file.cpp ===================================================================