[ruby-core:88449] [Ruby trunk Feature#14982] Improve namespace system in ruby to avoiding top-level names chaos

From: shevegen@...
Date: 2018-08-11 12:41:12 UTC
List: ruby-core #88449
SXNzdWUgIzE0OTgyIGhhcyBiZWVuIHVwZGF0ZWQgYnkgc2hldmVnZW4gKFJvYmVydCBBLiBIZWls
ZXIpLgoKCkkgdGhpbmsgdGhpcyBoYXMgY29tZSB1cCBiZWZvcmUgaW4gb3RoZXIgaXNzdWUgcmVx
dWVzdHMuCgpJIGFsc28gaGFkIGEgZmV3IGlkZWFzOyBlLiBnLiB0byBiZSBhYmxlIHRvIGF0dGFj
aCBtZXRhLWluZm9ybWF0aW9uCnRvIGNsYXNzL21vZHVsZXMgKHRoYXQgd2F5IHdlIGNhbiBmaW5k
IG91dCB3aG8gaXMgdGhlIG9yaWdpbmFsIGF1dGhvciwKd2hlbiBhbmQgd2hhdCBjaGFuZ2VzIG1h
eSBoYXZlIGJlZW4gbWFkZSBldGMuLi4pLgoKSSBhZ3JlZSB3aXRoIHRoaXMgY29tbWVudCBoZXJl
IGEgbG90IGJ5IHRoZSB3YXk6CgogICAgaW1wb3J0IDoiQTo6Qjo6Qzo6RCIsIGFzOiA6RQoKTm90
IG5lY2Vzc2FyaWx5IGFib3V0IHVzaW5nIHRoZSBuYW1lICJpbXBvcnQiLCBidXQgd2l0aCB0aGUg
YWJpbGl0eQp0byByZS1kZWZpbmUgbmFtZXNwYWNlcyBhdCByZXF1aXJlIHRpbWUuIFdlIGNhbiBv
ZiBjb3Vyc2UgYWxyZWFkeQpkbyBzbyBieSBpbmNsdWRpbmcgbW9kdWxlcyBhbmQgcmVtb3Zpbmcg
KG9sZGVyKSBjb25zdGFudHMsIGJ1dCBJIAphbHdheXMgdGhvdWdodCBpdCBtYXkgYmUgbW9yZSBl
bGVnYW50IHRvIGJlIGFibGUgdG8gZG8gc28gdGhlIG1vbWVudAp3ZSByZXF1aXJlIHJ1YnkgY29k
ZS4KCkkgYW0gbm90IHNvIHN1cmUgYWJvdXQgdGhlIHJlc3Qgb2YgdGhlIHN1Z2dlc3Rpb24uIEkg
ZG9uJ3QgaGF2ZSBhbnkKcGFydGljdWxhcmx5IHN0cm9uZyBwcm8gb3IgY29uIG9waW5pb24sIGFs
dGhvdWdoIEkgYW0gYSBiaXQgd2FyeS4KClBhcnQgb2YgdGhlIHN1Z2dlc3Rpb25zIGFsbCBhcmUg
YSBiaXQgY29tcGxpY2F0ZWQsIEFQSS13aXNlIGFuZCBmcm9tCnRoZSBzY29wZS4gSSB1bmRlcnN0
YW5kIHRoYXQsIGlmIHdlIHdhbnQgbW9yZSBmbGV4aWJpbGl0eSwgd2UgbWF5IApuZWVkIHRvIGJl
IGFibGUgdG8gaGF2ZSBhIHdheSB0byBhZGQgY29kZSB3aGljaCByZXF1aXJlcyBtb3JlIGNoYXJh
Y3RlcnMKYW5kIHN1Y2guIEJ1dCBvbmUgdGhpbmcgdGhhdCBpcyBncmVhdCBpbiBydWJ5LCBldmVu
IGlmIHdlIHNheSB0aGF0IAoiaGF2aW5nIG5vIG5hbWVzcGFjZXMgaXMgYSBkaXNhZHZhbnRhZ2Ui
LCBpcyB0aGF0IHVzaW5nIG1vZHVsZXMgYW5kCmNsYXNzZXMgb24gdGhlIHRvcGxldmVsIHNwYWNl
LCBpcyB2ZXJ5LCB2ZXJ5IHNpbXBsZS4gUGVvcGxlIHZlcnkKcXVpY2tseSB1bmRlcnN0YW5kIHRo
YXQgY29uY2VwdC4KCiAgICBjbGFzcyBDYXQKICAgICAgZGVmIG1lb3cKICAgICAgICBwdXRzICdU
aGUgY2F0IG1lb3dzLicKICAgICAgZW5kCiAgICBlbmQKCldpdGggbmFtZXNwYWNlcyBhcyBzdWdn
ZXN0ZWQgaGVyZSwgd2UgbWF5IGFkZCBhbm90aGVyIGxheWVyIG9mIApjb21wbGV4aXR5OyBhbmQg
d2hpbGUgSSBkbyBhZ3JlZSB3aXRoIHNvbWUgc3Ryb25nZXIgZm9ybSBvZgpjb250cm9sIHBvc3Np
YmxlIG92ZXIgIm5hbWVzcGFjZXMiIGluIHJ1YnksIEkgYW0gbm90IHN1cmUgaWYKdGhlIHByb3Bv
c2FsIGluIHRoaXMgZm9ybSBpcyBoYXZpbmcgYSBnb29kIHRyYWRlLW9mZi4gQnV0IGFzIEkKd3Jv
dGUsIGl0J3Mgbm90IHRoYXQgSSBoYXZlIGEgYmlnIG9waW5pb24gZWl0aGVyIHdheSAtIEkgdGhp
bmsKdGhlIGJpZ2dlc3QgY29uY2VybiBJIGhhdmUgaGFkIGluIHJlZ2FyZHMgdG8gbmFtZXNwYWNl
cyB3YXMKd2hlbiBydWJ5IHdlcmUgdG8gdXNlIFBIUCdzICJzb2x1dGlvbiIgYW5kIHN5bnRheCBm
b3IgCm5hbWVzcGFjZXMgLi4uIDpQCgpBcyBmb3IgcmVmaW5lbWVudHMgLSB0aGUgb2RkIHRoaW5n
IGlzIHRoYXQgSSBhZ3JlZSBiZWhpbmQgdGhlCnByb3Bvc2FsIGFuZCBpZGVhcywgYnV0IHRoZSBz
eW50YXggYW5kIEFQSSBpcyBzbyB3ZWlyZCB0byBtZQphbmQgaXQgZmVlbHMgLi4uIHN0cmFuZ2Ug
dG8gdXNlIHRoZW0uIEkgYWxzbyBoYXZlIG5vIGFsdGVybmF0aXZlCnN1Z2dlc3Rpb24sIHNvIHRo
aXMgaXMgbm90IGdvb2Q7IGJlc3Qgd2F5IHdvdWxkIGJlIHRvIGhhdmUKYm90aCBuYW1lc3BhY2Vz
LCBuYW1lc3BhY2Ugc2NvcGVzIGFuZCByZWZpbmVtZW50cyBpbiBhIHNpbmdsZQppc3N1ZSB3aXRo
IGEgZ3JlYXQsIGJlYXV0aWZ1bCBzeW50YXguIDpECgooV2Ugc2hvdWxkIGhvd2V2ZXIgaGFkIGFs
c28gY29uc2lkZXIgd2hldGhlciB0aGUgc3RhdHVzIHF1bwppcyBhY3R1YWxseSBiZXR0ZXIgdGhh
biB0aGUgcHJvcG9zZWQgY2hhbmdlcy4gQW5kIHRvIHNvbWUKZXh0ZW50IEknZCByYXRoZXIgdXNl
IGEgc3RhdHVzIHF1byB0aGFuIHdhbnQgdG8gdHJhbnNpdGlvbgppbnRvIGNoYW5nZXMgdGhhdCBk
byBub3Qgc2VlbSB0byBiZSBhcyB3b3J0aHdoaWxlIHRvIGJlCmhhZCAtIGV2ZW4gdGhvdWdoIEkg
YWN0dWFsbHkgYWdyZWUgd2l0aCBhIExPVCBvbiB3aGF0IGlzIApzYWlkIGFib3V0IG5hbWVzcGFj
ZXMsIHJlZmluZW1lbnRzIGV0Yy4uLikKCi0gQXMgZm9yIHJlcXVpcmluZyBydWJ5IGNvZGUsIEkg
YWdyZWUuIEluIHBhcnRpY3VsYXIgZm9yIGxhcmdlcgpwcm9qZWN0cyB3cml0dGVuIGluIHJ1Ynks
IGl0IG1heSBiZSB1c2VmdWwgdG8gbm90IG9ubHkgaGF2ZQptb3JlIGNvbnRyb2wsIGJ1dCBtYWtl
IG1hbmFnaW5nIHRoYXQgcnVieSBjb2RlIHNpbXBsZXIuIEluCnlvdXIgZXhhbXBsZSwgdGhlIGF1
dGhvciB3aG8gd3JvdGUgdGhlIGNvZGUgbXVzdCBoYXZlIGZvcmdvdHRlbgp0byByZXF1aXJlIHNv
bWUgb3RoZXIgZmlsZXM7IGJ1dCBJIHVuZGVyc3RhbmQgdGhhdCB0aGlzIG1heQpiZSB0ZWRpb3Vz
IGlmIG9uZSBoYXMgYSBsYXJnZSBwcm9qZWN0IHdpdGggbG90cyBvZiAucmIgZmlsZXMuClRoZW4g
dGhlcmUgYXJlIGFsc28gY2lyY3VsYXIgd2FybmluZ3Mgd2hpY2ggYXJlIG5vIGZ1biBhdCBhbGwu
CgpJIGFtIGNvbmZpZGVudCB0aGF0IHRoaXMgbWF5IGltcHJvdmUgaW4gdGhlIGxvbmcgcnVuIC0g
bWF0eiAKYWx3YXlzIHNhaWQgdGhhdCBydWJ5IGlzIGZvciBodW1hbnMgcmF0aGVyIHRoYW4gY29t
cHV0ZXJzCmFuZCB0aGF0IHRoZSBjb3JlIHRlYW0gd2lsbCBsaXN0ZW4gdG8gKGFuZCBwcmlvcml0
aXplIG9uKQoicmVhbCBwcm9ibGVtcyIgYW5kIHBhaW5wb2ludHMgcGVvcGxlIGhhdmUgd2hlbiB3
cml0aW5nCnJ1YnkgY29kZS4gQW5kIHBlcnNvbmFsbHkgSSB0aGluayB0aGF0IGEgbG90IG9mIHRo
ZXNlIHByb2JsZW1zCmVtZXJnZSB3aGVuIG9uZSB3cml0ZXMgYSBsb3Qgb2YgcnVieSBjb2RlIGFu
ZCBoYXMgbG90cyBvZiAKcnVieSBmaWxlcywgdG9vLiAKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KRmVhdHVyZSAjMTQ5ODI6IEltcHJvdmUgbmFtZXNwYWNlIHN5c3Rl
bSBpbiBydWJ5IHRvIGF2b2lkaW5nIHRvcC1sZXZlbCAgbmFtZXMgY2hhb3MKaHR0cHM6Ly9idWdz
LnJ1YnktbGFuZy5vcmcvaXNzdWVzLzE0OTgyI2NoYW5nZS03MzUxNAoKKiBBdXRob3I6IGpqeXIg
KGp5IGopCiogU3RhdHVzOiBPcGVuCiogUHJpb3JpdHk6IE5vcm1hbAoqIEFzc2lnbmVlOiAKKiBU
YXJnZXQgdmVyc2lvbjogCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IyMgV2h5CgpSdWJ5IGhhcyBldmFsdWF0aW9uIGFsbCBjbGFzcy9tb2R1bGUgbmFtZXMgaW4gdG9w
LWxldmVsIGNvbnRleHQoYWthIFRPUExFVkVMX0JJTkRJTkcpLiAKQXMgYSB1c2VyIHdlIGJhc2lj
YWxseSBoYXJkIHRvIGtub3cgaG93IG1hbnkgbmFtZXMgaW4gdGhlIGN1cnJlbnQgY29udGV4dCwg
aXMgY2F1c2luZyBjaGFvcyBpbiBzb21lIGNhc2VzLiBGb3IgZXhhbXBsZToKCmNhc2UgMTogCgpQ
dXQgY29tbW9uIHVzZWQgZXJyb3JzIGNsYXNzIGluIGEgc2luZ2xlIGZpbGUsIGxpa2UgYmVsb3cK
CmBgYCBydWJ5CiMgdXRpbHMvZXJyb3JzLnJiCgpjbGFzcyBGb29FcnJvcgplbmQKCmNsYXNzIEJh
ckVycm9yCmVuZApgYGAKCkluIG90aGVyIGZpbGVzIHVuZGVyICd1dGlscycgd2Ugd2FudCB0byB1
c2UgdGhvc2UgZXJyb3JzLCBzbyB0aGUgYmVzdCBwcmFjdGljZSBpcyB0byB1c2UgYHJlcXVpcmVf
cmVsYXRpdmUgJ2Vycm9ycydgIGluIGVhY2ggZmlsZSB3ZSBuZWVkLgoKYGBgIHJ1YnkKIyB1dGls
cy9iaW5hcnlfaGVscGVyLnJiCgojIHdlIGZvcmdldCByZXF1aXJlIGVycm9ycwoKbW9kdWxlIEJp
bmFyeUhlbHBlcgojIC4uLgogIHJhaXNlIEJhckVycm9yCiMgLi4uCmVuZAoKYGBgCgpCdXQgc29t
ZXRpbWUgd2UgbWF5IGZvcmdldCB0byByZXF1aXJlIGRlcGVuZGVuY2llcyBpbiBhIGZpbGUsIGl0
J3MgaGFyZCB0byBub3RpY2UgYmVjYXVzZQogaWYgUnVieVZNIGFscmVhZHkgZXhlY3V0ZSB0aGUg
cmVxdWlyZXMgd2Ugc3RpbGwgY2FuIGFjY2VzcyB0aGUgbmFtZSBCYXJFcnJvciwKCmJ1dCBpZiB1
c2VyIGRpcmVjdGx5IHRvIHJlcXVpcmUgJ3V0aWxzL2JpbmFyeV9oZWxwZXInLCBoZS9zaGUgd2ls
bCBnb3QgYW4gTmFtZUVycm9yLgoKCmNhc2UgMjogCgpUd28gZ2VtcyB1c2Ugc2FtZSB0b3AtbGV2
ZWwgbW9kdWxlIG5hbWUsIHNvIHdlIGNhbid0IHVzZSB0aGVtIHRvZ2V0aGVyCgojIyBUaGUgUmVh
c29uIG9mIFRoZSBQcm9ibGVtCgpUaGUgcmVhc29uIGlzIHdlIGxldCBtb2R1bGUgYXV0aG9yIHRv
IGRlY2lzaW9uIHdoaWNoIG1vZHVsZSB1c2VyIGNhbiB1c2UuICgncmVxdWlyZScgaXMgYmFzaWNh
bGx5IGV2YWx1YXRpb24sIGhpZ2hseSBkZXBlbmRlbnQgb24gdGhlIG1vZHVsZSBhdXRob3IncyBk
ZXNpZ24pCgpCdXQgd2Ugc2hvdWxkIGxldCB1c2VycyBjb250cm9sIHdoaWNoIG5hbWVzIHRvIHVz
ZSBhbmQgYXZhaWxhYmxlIGluIGNvbnRleHQuIEFzIG1hbnkgb3RoZXIgcG9wdWxhciBsYW5ndWFn
ZXMgZG9zZShSdXN0LCBQeXRob24uLikKCkkgdGhpbmsgdGhlIHNvbHV0aW9uIGlzIGJhc2ljYWxs
eSB0aGUgc2FtZSBwaGlsb3NvcGh5IGNvbXBhcmVzIHRvIHJlZmluZW1lbnQgZmVhdHVyZS4KCgoj
IyBUaGUgRGVzaWduCgpJIHByb3Bvc2UgYW4gaW1wcm92ZWQgbmFtZXNwYWNlIHRvIFJ1YnksIHRv
IHNvbHZlIHRoZSBwcm9ibGVtcyBhbmQgc3RpbGwgY29tcGF0aWJsZSB3aXRoIHRoZSBjdXJyZW50
IFJ1YnkgbW9kdWxlIHN5c3RlbS4KCmBgYCBydWJ5CmNsYXNzIEZvbwplbmQKCiMgaW50cm9kdWNl
IEtlcm5lbCNuYW1lc3BhY2UKbmFtZXNwYWNlIDpIZWxsbyBkbwogICMgYXZvaWRpbmcgbmFtZXNw
YWNlIGNoYW9zCiAgIyBGb28gLT4gTmFtZUVycm9yLCBjYW4ndCBhY2Nlc3MgVE9QTEVWRUxfQklO
RElORyBkaXJlY3RseQogIAogICMgS2VybmVsI2ltcG9ydCBtZXRob2QsIGludHJvZHVjZSBGb28g
bmFtZSBmcm9tIFRPUExFVkVMX0JJTkRJTkcKICBpbXBvcnQgOkZvbwoKICAjIGluIGEgbmFtZXNw
YWNlIHVzZXIgY2FuIG9ubHkgYWNjZXNzIGltcG9ydGVkIG5hbWUKICBGb28KCiAgIyBpbXBvcnQg
Y29uc3RhbnQgdG8gYW5vdGhlciBhbGlhcyBuYW1lCiAgIyBjYW4gYXZvaWQgd3JpdGluZyBuZXN0
ZWQgbW9kdWxlL2NsYXNzIG5hbWVzCiAgaW1wb3J0IDoiQTo6Qjo6Qzo6RCIsIGFzOiA6RQoKICAj
IHJlcXVpcmUgdGhlbiBpbXBvcnQsIGZvciBjb252ZW5pZW50IAogIGltcG9ydCA6IkE6OkI6OkM6
OkQiLCBhczogOkUsIGZyb206ICdzb21lX3JiX2ZpbGUnCgogICMgaW1wb3J0IHNhbWUgbmFtZSBm
cm9tIHR3byBnZW1zCiAgaW1wb3J0IDoiRm9vIiwgYXM6IDpGb29fQSwgZnJvbTogJ2Zvb19hJwog
IGltcG9ydCA6IkZvbyIsIGFzOiA6Rm9vX0IsIGZyb206ICdmb29fYicKCiAgIyBpbXBvcnQgbmFt
ZXMgaW4gYmF0Y2gKICBpbXBvcnQgJWl7IkE6OkI6OkM6OkQiLCAiQW5vdGhlckNsYXNzIn0sIGZy
b206ICdzb21lX3JiX2ZpbGUnCgogICMgaW1wb3J0IGFuZCBhbGlhcyBpbiBiYXRjaAogIGltcG9y
dCB7OiJBOjpCOjpDOjpEIiA9PiA6RSwgOkZvbyA9PiBGb28yfSwgZnJvbTogJ3NvbWVfcmJfZmls
ZScKCiAgY2xhc3MgQmFyCiAgICBkZWYgeHh4CiAgICAgICMgY2FuIGFjY2VzcyBhbGwgbmFtZXMg
aW4gbmFtZXNwYWNlIHNjb3BlCiAgICAgIFtGb28sIEZvb19BLCBGb29fQl0KICAgIGVuZAogIGVu
ZAplbmQKCkhlbGxvLmNsYXNzICMgIC0+IG1vZHVsZS4gbmFtZXNwYWNlIGlzIGp1c3QgYSBtb2R1
bGUKSGVsbG86OkJhciAjIHNvIHdlIGRvIG5vdCBicm9rZW4gY3VycmVudCBydWJ5IG1vZHVsZSBk
ZXNpZ24KCiMgbmFtZXNwYWNlIHN5c3RlbSBpcyBpbnRlbnQgdG8gbGV0IHVzZXIgdG8gY29udHJv
bCBuYW1lcyBpbiBjb250ZXh0CiMgU28gdXNlciBjYW4gY2hvb3NlIHVzZSB0aGUgb2xkIHJlcXVp
cmUgd2F5CgpyZXF1aXJlICdoZWxsbycKCkhlbGxvOjpCYXIKCgojIE9yIHVzZXIgY2FuIHVzZSBu
YW1lc3BhY2Ugc3lzdGVtIGFzIHdlIGRvIGluIGhlbGxvLnJiCgpuYW1lc3BhY2UgOkV4YW1wbGUg
ZG8KICBpbXBvcnQgOiJIZWxsbzo6QmFyIiwgYXM6IDpCYXIKICBCYXIgIyBvawogIEZvbyAjIG5h
bWUgZXJyb3IsIGNhdXNlIHdlIGRvIG5vdCBpbXBvcnQgRm9vIGluIDpFeGFtcGxlIG5hbWVzcGFj
ZQplbmQKCkZvbyAjIG9rLCBjYXVzZSBGb28gaXMgbG9hZGVkIGluIFRPUExFVkVMX0JJTkRJTkcK
CiMgZGVmaW5lIG5lc3RlZCBuYW1lc3BhY2UKCiMgbW9yZSBjbGVhciBzeW50YXggdGhhbiDigJxt
b2R1bGUgRXhhbXBsZTo6TmVzdGVkRXhhbXBsZeKAnQpuYW1lc3BhY2UgOk5lc3RlZEV4YW1wbGUs
IHVuZGVyOiBFeGFtcGxlIGRvCmVuZAoKbmFtZXNwYWNlIDpFeGFtcGxlMiBkbwogIG5hbWVzcGFj
ZSA6TmVzdGVkRXhhbXBsZSBkbwogIGVuZAplbmQKCmBgYAoKUHJvczoKCiogQ29tcGxldGVseSBj
b21wYXRpYmxlIHdpdGggdGhlIGN1cnJlbnQgbW9kdWxlIHN5c3RlbSwgYSBnZW0gdXNlciBjYW4g
Y29tcGxldGVseSBpZ25vcmUgd2hldGhlciBhIGdlbSBpcyB3cml0ZSBpbiBOYW1lc3BhY2Ugb3Ig
bm90LgoqIFVzZXIgY2FuIGNvbXBsZXRlbHkgY29udHJvbCB3aGljaCBuYW1lcyBpbiBjdXJyZW50
IGNvbnRleHQvc2NvcGUuCiogTWF5IHNvbHZlIHRoZSB0b3AgbW9kdWxlIG5hbWUgY29uZmxpY3Qg
aXNzdWUoZGVwZW5kcyBvbiBWTSBpbXBsZW1lbnRhdGlvbikuCiogQXZvaWQgaW50cm9kdWNpbmcg
bmV3IGtleXdvcmQgYW5kIHN5bnRheC4KKiBUeXBlIGhpbnQgb3IgbmFtZSBoaW50IGNhbiBiZSBt
b3JlIGFjY3VyYWN5IHVuZGVyIG5hbWVzcGFjZShub3Qgc3VyZSkuCgpDb25zOgoKKiBOZWVkIHRv
IG1vZGlmeSBSdWJ5IFZNIHRvIHN1cHBvcnQgdGhlIGZlYXR1cmUuCgoKCgotLSAKaHR0cHM6Ly9i
dWdzLnJ1YnktbGFuZy5vcmcvCgpVbnN1YnNjcmliZTogPG1haWx0bzpydWJ5LWNvcmUtcmVxdWVz
dEBydWJ5LWxhbmcub3JnP3N1YmplY3Q9dW5zdWJzY3JpYmU+CjxodHRwOi8vbGlzdHMucnVieS1s
YW5nLm9yZy9jZ2ktYmluL21haWxtYW4vb3B0aW9ucy9ydWJ5LWNvcmU+Cg==

In This Thread

Prev Next