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

From: loic.nageleisen@...
Date: 2018-09-12 07:48:15 UTC
List: ruby-core #88957
SXNzdWUgIzE0OTgyIGhhcyBiZWVuIHVwZGF0ZWQgYnkgbGxvZWtpIChMb2ljIE5hZ2VsZWlzZW4p
LgoKClBsZWFzZSBhbGxvdyBtZSB0byBodW1ibHkgcHJlc2VudCBbdGhpcyBkZXNpZ24gYW5kIGlt
cGxlbWVudGF0aW9uIG9mIGltcG9ydCBzZW1hbnRpY3NdKGh0dHBzOi8vZ2l0bGFiLmNvbS9sbG9l
a2kvcGFrKSBhaW1pbmcgdG8gc29sdmUgcHJlY2lzZWx5IHRoZSBjdXJyZW50IGlzc3VlLCB0YWtp
bmcgaW5zcGlyYXRpb24gZnJvbSBHbywgUHl0aG9uLCBhbmQgTm9kZS4KCkJhc2ljYWxseSBpdCBp
bXBsZW1lbnRzIGEgYFBhY2thZ2VgIGNsYXNzIGluaGVyaXRpbmcgYE1vZHVsZWAgYW5kIGxldmVy
YWdpbmcgdGhlIGBLZXJuZWwjbG9hZGAgYWJpbGl0eSB0byBgd3JhcGAgd2l0aCBpdHMgc2Vjb25k
IGFyZ3VtZW50LCB0b2dldGhlciB3aXRoIGBtb2R1bGVfZXZhbGAuCldpdGggaXQgeW91IGNhbiBj
dXJyZW50bHkgZG86Cgp+fn5ydWJ5CmltcG9ydCgnZm9vJykgICAgICAgICAgICAgICAgICAgICMg
aW1wb3J0IHBhY2thZ2UgZmlsZSBhcyBgZm9vYAppbXBvcnQoJ2Zvby9iYXonKSAgICAgICAgICAg
ICAgICAjIGltcG9ydCBuZXN0ZWQgcGFja2FnZSBmaWxlIGFzIGBiYXpgCmltcG9ydCgnZm9vJywg
dG86IDptZXRob2QpICAgICAgICMgbWFrZSBhdmFpbGFibGUgYXMgbWV0aG9kIGBmb29gIHVzaW5n
IGEgc2lkZSBlZmZlY3QgKGRlZmF1bHQpCmltcG9ydCgnZm9vJywgdG86IDpjb25zdCkgICAgICAg
ICMgbWFrZSBhdmFpbGFibGUgYXMgY29uc3RhbnQgYEZvb2AgdXNpbmcgYSBzaWRlIGVmZmVjdApp
bXBvcnQoJ2ZvbycsIHRvOiA6bG9jYWwpICAgICAgICAjIChhdHRlbXB0IHRvLCBzZWUgYmVsb3cp
IG1ha2UgYXZhaWxhYmxlIGFzIGxvY2FsIHZhcmlhYmxlIGBmb29gIHVzaW5nIGEgc2lkZSBlZmZl
Y3QKaW1wb3J0KCdmb28nLCBhczogOmJhcikgICAgICAgICAgIyByZW5hbWUgdGhlIHRhcmdldCBz
ZXQgYXMgYSBzaWRlIGVmZmVjdCB0byBgYmFyYCwgY2FuIGJlIGNvbWJpbmVkIHdpdGggYHRvOmAK
Zj0gaW1wb3J0KCdmb28nLCB0bzogOnZhbHVlKSAgICAgIyBubyBzaWRlIGVmZmVjdCwgZXhwbGlj
aXQgYXNzaWdubWVudCB0byBhIGxvY2FsIHZhcgpGb28gPSBpbXBvcnQoJ2ZvbycsIHRvOiA6dmFs
dWUpICAjIG5vIHNpZGUgZWZmZWN0LCBleHBsaWNpdCBhc3NpZ25tZW50IHRvIGEgbG9jYWwgY29u
c3QKZGVmIGZvbzsgaW1wb3J0KCdmb28nLCB0bzogOnZhbHVlKTsgZW5kICAjIHlvdSBnZXQgdGhl
IGlkZWEKfn5+CgpNb3JlIGV4YW1wbGVzIGFyZSBhdmFpbGFibGUgaW4gdGhlIFJFQURNRSBhbmQg
aW4gYHRlc3QucmJgIGFsb25nIHdpdGggdGhlIGB0ZXN0YCBmaXh0dXJlIHRyZWUgKHRob3NlIGFy
ZSBub3QgdW5pdCB0ZXN0cyB0aG91Z2gsIGFwb2xvZ2llcyBmb3IgdGhlIGJhZCBuYW1pbmcgb24g
bXkgcGFydCkuCgpUaGUgdmFyaW91cyBwb3NzaWJpbGl0aWVzIG9mIGB0bzpgIChgbmlsYCwgYDpt
ZXRob2RgLCBgOmNvbnN0YCwgYDpsb2NhbGApIGFyZSB0byBleHBsb3JlIHRoZSBwb3NzaWJsZSB3
YXlzIHRvIG1ha2UgdGhlIG1vZHVsZSBhdmFpbGFibGUgdG8gdGhlIGNhbGxlci4KClRoZSBpbXBs
ZW1lbnRhdGlvbiB3b3JrcyBvbiBjdXJyZW50IFJ1YnksIGFuZCB3b3VsZCB3b3JrIGV2ZW4gYmV0
dGVyIFtzYXZlIGZvciBhIGxpbWl0YXRpb25dKGh0dHBzOi8vZ2l0bGFiLmNvbS9sbG9la2kvcGFr
I3dpc2hsaXN0LXNldHRpbmctbG9jYWxzLWRpcmVjdGx5KSBvZiBgYmluZF9sb2NhbF92YXJpYWJs
ZV9zZXRgLiBJdCByZXF1aXJlcyB0aGUgYGJpbmRpbmdfb2ZfY2FsbGVyYCBnZW0gaW4gc29tZSBz
aXR1YXRpb25zIGJ1dCBpdCBpcyBub3QgYSBzdHJpY3QgcmVxdWlyZW1lbnQgKG5vdCBuZWVkZWQg
d2l0aCBgdG86IDp2YWx1ZWApLgoKVGhlIHBhY2thZ2UgZmlsZSBkb2VzIG5vdCBjb250YWlucyBh
IGRlY2xhcmF0aW9uIG9mIHRoZSBQYWNrYWdlIGluc3RhbmNlIChhcyBgY2xhc3NgIGFuZCBgbW9k
dWxlYCBkbyksIGFzIGl0IHdpbGwgYmUgZGVkdWNlZCBmcm9tIHRoZSBmaWxlIG5hbWUsIHRoZSBn
b2FsIGJlaW5nIHRvIGJveCBhbmQgaXNvbGF0ZSBhdXRvbWF0aWNhbGx5IHRoZSBmaWxlIGNvbnRl
bnRzLCBhbmQgbm90IHJlcXVpcmluZyBuZXcgKElNSE8gYXdrd2FyZCkga2V5d29yZHMgbGlrZSBg
aXNvbGF0ZWAuIE1heWJlIHVzaW5nIGEgZmlsZSBleHRlbnNpb24gc3VjaCBhcyBgLnJicGAgdG8g
ZGlzdGluZ3Vpc2ggYC5yYmAgZmlsZXMgd3JpdHRlbiB0byBiZSBgcmVxdWlyZWBkIGZyb20gdGhv
c2UgdG8gYmUgYGltcG9ydGBlZCBjb3VsZCBiZSB1c2VmdWwsIGJ1dCBpdCBpcyBkZWZpbml0ZWx5
IG5vdCBtYW5kYXRvcnkuIE1heWJlIGEgYHBhY2thZ2VgIGtleXdvcmQgKGxpa2UgaW4gR28pIGF0
IHRoZSBzdGFydCBjb3VsZCBiZSB1c2VmdWwgdG8gZ3VhcmQgYWdhaW5zdCB0aGUgZmlsZSBiZWlu
ZyBgcmVxdWlyZWBkLiBidXQgYWdhaW4sIHRoaXMgaXMgbm90IG1hbmRhdG9yeS4gQ29kZSBsZXZl
cmFnaW5nIHRoaXMgZGVzaWduIGFsc28gaGFzIHRoZSBhZHZhbnRhZ2UgdG8gZWxpbWluYXRlIGlu
ZGVudGF0aW9uLCByZXBldGl0aW9uLCBhbmQgYm9pbGVycGxhdGUgdGhhdCBpcyB0eXBpY2FsbHkg
cHJlc2VudCBpbiBkZWVwbHkgbmVzdGVkIHJ1YnkgZmlsZXMgd2hlbiBjb252ZW50aW9uYWxseSBt
YXRjaGluZyB0aGUgZmlsZSBhbmQgZGlyZWN0b3J5IG5hbWVzIHdpdGggdGhlIG1vZHVsZSBhbmQg
Y2xhc3MgbmFtZXMuCgpXaGF0IGRvIHlvdSB0aGluaz8KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KRmVhdHVyZSAjMTQ5ODI6IEltcHJvdmUgbmFtZXNwYWNlIHN5c3Rl
bSBpbiBydWJ5IHRvIGF2b2lkaW5nIHRvcC1sZXZlbCAgbmFtZXMgY2hhb3MKaHR0cHM6Ly9idWdz
LnJ1YnktbGFuZy5vcmcvaXNzdWVzLzE0OTgyI2NoYW5nZS03Mzk5MAoKKiBBdXRob3I6IGpqeXIg
KEppbnlhbmcgSmlhbmcpCiogU3RhdHVzOiBPcGVuCiogUHJpb3JpdHk6IE5vcm1hbAoqIEFzc2ln
bmVlOiBtYXR6IChZdWtpaGlybyBNYXRzdW1vdG8pCiogVGFyZ2V0IHZlcnNpb246IE5leHQgTWFq
b3IKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpVcGRhdGVkOiBodHRw
czovL2J1Z3MucnVieS1sYW5nLm9yZy9pc3N1ZXMvMTQ5ODIjbm90ZS01CgoKCiMjIFdoeQoKUnVi
eSBoYXMgZXZhbHVhdGlvbiBhbGwgY2xhc3MvbW9kdWxlIG5hbWVzIGluIHRvcC1sZXZlbCBjb250
ZXh0KGFrYSBUT1BMRVZFTF9CSU5ESU5HKS4gCkFzIGEgdXNlciB3ZSBiYXNpY2FsbHkgaGFyZCB0
byBrbm93IGhvdyBtYW55IG5hbWVzIGluIHRoZSBjdXJyZW50IGNvbnRleHQsIGlzIGNhdXNpbmcg
Y2hhb3MgaW4gc29tZSBjYXNlcy4gRm9yIGV4YW1wbGU6CgpjYXNlIDE6IAoKUHV0IGNvbW1vbiB1
c2VkIGVycm9ycyBjbGFzcyBpbiBhIHNpbmdsZSBmaWxlLCBsaWtlIGJlbG93CgpgYGAgcnVieQoj
IHV0aWxzL2Vycm9ycy5yYgoKY2xhc3MgRm9vRXJyb3IKZW5kCgpjbGFzcyBCYXJFcnJvcgplbmQK
YGBgCgpJbiBvdGhlciBmaWxlcyB1bmRlciAndXRpbHMnIHdlIHdhbnQgdG8gdXNlIHRob3NlIGVy
cm9ycywgc28gdGhlIGJlc3QgcHJhY3RpY2UgaXMgdG8gdXNlIGByZXF1aXJlX3JlbGF0aXZlICdl
cnJvcnMnYCBpbiBlYWNoIGZpbGUgd2UgbmVlZC4KCmBgYCBydWJ5CiMgdXRpbHMvYmluYXJ5X2hl
bHBlci5yYgoKIyB3ZSBmb3JnZXQgcmVxdWlyZSBlcnJvcnMKCm1vZHVsZSBCaW5hcnlIZWxwZXIK
IyAuLi4KICByYWlzZSBCYXJFcnJvcgojIC4uLgplbmQKCmBgYAoKQnV0IHNvbWV0aW1lIHdlIG1h
eSBmb3JnZXQgdG8gcmVxdWlyZSBkZXBlbmRlbmNpZXMgaW4gYSBmaWxlLCBpdCdzIGhhcmQgdG8g
bm90aWNlIGJlY2F1c2UKIGlmIFJ1YnlWTSBhbHJlYWR5IGV4ZWN1dGUgdGhlIHJlcXVpcmVzIHdl
IHN0aWxsIGNhbiBhY2Nlc3MgdGhlIG5hbWUgQmFyRXJyb3IsCgpidXQgaWYgdXNlciBkaXJlY3Rs
eSB0byByZXF1aXJlICd1dGlscy9iaW5hcnlfaGVscGVyJywgaGUvc2hlIHdpbGwgZ290IGFuIE5h
bWVFcnJvci4KCgpjYXNlIDI6IAoKVHdvIGdlbXMgdXNlIHNhbWUgdG9wLWxldmVsIG1vZHVsZSBu
YW1lLCBzbyB3ZSBjYW4ndCB1c2UgdGhlbSB0b2dldGhlcgoKIyMgVGhlIFJlYXNvbiBvZiBUaGUg
UHJvYmxlbQoKVGhlIHJlYXNvbiBpcyB3ZSBsZXQgbW9kdWxlIGF1dGhvciB0byBkZWNpc2lvbiB3
aGljaCBtb2R1bGUgdXNlciBjYW4gdXNlLiAoJ3JlcXVpcmUnIGlzIGJhc2ljYWxseSBldmFsdWF0
aW9uLCBoaWdobHkgZGVwZW5kZW50IG9uIHRoZSBtb2R1bGUgYXV0aG9yJ3MgZGVzaWduKQoKQnV0
IHdlIHNob3VsZCBsZXQgdXNlcnMgY29udHJvbCB3aGljaCBuYW1lcyB0byB1c2UgYW5kIGF2YWls
YWJsZSBpbiBjb250ZXh0LiBBcyBtYW55IG90aGVyIHBvcHVsYXIgbGFuZ3VhZ2VzIGRvc2UoUnVz
dCwgUHl0aG9uLi4pCgpJIHRoaW5rIHRoZSBzb2x1dGlvbiBpcyBiYXNpY2FsbHkgdGhlIHNhbWUg
cGhpbG9zb3BoeSBjb21wYXJlcyB0byByZWZpbmVtZW50IGZlYXR1cmUuCgoKIyMgVGhlIERlc2ln
bgoKSSBwcm9wb3NlIGFuIGltcHJvdmVkIG5hbWVzcGFjZSB0byBSdWJ5LCB0byBzb2x2ZSB0aGUg
cHJvYmxlbXMgYW5kIHN0aWxsIGNvbXBhdGlibGUgd2l0aCB0aGUgY3VycmVudCBSdWJ5IG1vZHVs
ZSBzeXN0ZW0uCgpgYGAgcnVieQpjbGFzcyBGb28KZW5kCgojIGludHJvZHVjZSBLZXJuZWwjbmFt
ZXNwYWNlCm5hbWVzcGFjZSA6SGVsbG8gZG8KICAjIGF2b2lkaW5nIG5hbWVzcGFjZSBjaGFvcwog
ICMgRm9vIC0+IE5hbWVFcnJvciwgY2FuJ3QgYWNjZXNzIFRPUExFVkVMX0JJTkRJTkcgZGlyZWN0
bHkKICAKICAjIEtlcm5lbCNpbXBvcnQgbWV0aG9kLCBpbnRyb2R1Y2UgRm9vIG5hbWUgZnJvbSBU
T1BMRVZFTF9CSU5ESU5HCiAgaW1wb3J0IDpGb28KCiAgIyBpbiBhIG5hbWVzcGFjZSB1c2VyIGNh
biBvbmx5IGFjY2VzcyBpbXBvcnRlZCBuYW1lCiAgRm9vCgogICMgaW1wb3J0IGNvbnN0YW50IHRv
IGFub3RoZXIgYWxpYXMgbmFtZQogICMgY2FuIGF2b2lkIHdyaXRpbmcgbmVzdGVkIG1vZHVsZS9j
bGFzcyBuYW1lcwogIGltcG9ydCA6IkE6OkI6OkM6OkQiLCBhczogOkUKCiAgIyByZXF1aXJlIHRo
ZW4gaW1wb3J0LCBmb3IgY29udmVuaWVudCAKICBpbXBvcnQgOiJBOjpCOjpDOjpEIiwgYXM6IDpF
LCBmcm9tOiAnc29tZV9yYl9maWxlJwoKICAjIGltcG9ydCBzYW1lIG5hbWUgZnJvbSB0d28gZ2Vt
cwogIGltcG9ydCA6IkZvbyIsIGFzOiA6Rm9vX0EsIGZyb206ICdmb29fYScKICBpbXBvcnQgOiJG
b28iLCBhczogOkZvb19CLCBmcm9tOiAnZm9vX2InCgogICMgaW1wb3J0IG5hbWVzIGluIGJhdGNo
CiAgaW1wb3J0ICVpeyJBOjpCOjpDOjpEIiwgIkFub3RoZXJDbGFzcyJ9LCBmcm9tOiAnc29tZV9y
Yl9maWxlJwoKICAjIGltcG9ydCBhbmQgYWxpYXMgaW4gYmF0Y2gKICBpbXBvcnQgezoiQTo6Qjo6
Qzo6RCIgPT4gOkUsIDpGb28gPT4gRm9vMn0sIGZyb206ICdzb21lX3JiX2ZpbGUnCgogIGNsYXNz
IEJhcgogICAgZGVmIHh4eAogICAgICAjIGNhbiBhY2Nlc3MgYWxsIG5hbWVzIGluIG5hbWVzcGFj
ZSBzY29wZQogICAgICBbRm9vLCBGb29fQSwgRm9vX0JdCiAgICBlbmQKICBlbmQKZW5kCgpIZWxs
by5jbGFzcyAjICAtPiBtb2R1bGUuIG5hbWVzcGFjZSBpcyBqdXN0IGEgbW9kdWxlCkhlbGxvOjpC
YXIgIyBzbyB3ZSBkbyBub3QgYnJva2VuIGN1cnJlbnQgcnVieSBtb2R1bGUgZGVzaWduCgojIG5h
bWVzcGFjZSBzeXN0ZW0gaXMgaW50ZW50IHRvIGxldCB1c2VyIHRvIGNvbnRyb2wgbmFtZXMgaW4g
Y29udGV4dAojIFNvIHVzZXIgY2FuIGNob29zZSB1c2UgdGhlIG9sZCByZXF1aXJlIHdheQoKcmVx
dWlyZSAnaGVsbG8nCgpIZWxsbzo6QmFyCgoKIyBPciB1c2VyIGNhbiB1c2UgbmFtZXNwYWNlIHN5
c3RlbSBhcyB3ZSBkbyBpbiBoZWxsby5yYgoKbmFtZXNwYWNlIDpFeGFtcGxlIGRvCiAgaW1wb3J0
IDoiSGVsbG86OkJhciIsIGFzOiA6QmFyCiAgQmFyICMgb2sKICBGb28gIyBuYW1lIGVycm9yLCBj
YXVzZSB3ZSBkbyBub3QgaW1wb3J0IEZvbyBpbiA6RXhhbXBsZSBuYW1lc3BhY2UKZW5kCgpGb28g
IyBvaywgY2F1c2UgRm9vIGlzIGxvYWRlZCBpbiBUT1BMRVZFTF9CSU5ESU5HCgojIGRlZmluZSBu
ZXN0ZWQgbmFtZXNwYWNlCgojIG1vcmUgY2xlYXIgc3ludGF4IHRoYW4g4oCcbW9kdWxlIEV4YW1w
bGU6Ok5lc3RlZEV4YW1wbGXigJ0KbmFtZXNwYWNlIDpOZXN0ZWRFeGFtcGxlLCB1bmRlcjogRXhh
bXBsZSBkbwplbmQKCm5hbWVzcGFjZSA6RXhhbXBsZTIgZG8KICBuYW1lc3BhY2UgOk5lc3RlZEV4
YW1wbGUgZG8KICBlbmQKZW5kCgpgYGAKClByb3M6CgoqIENvbXBsZXRlbHkgY29tcGF0aWJsZSB3
aXRoIHRoZSBjdXJyZW50IG1vZHVsZSBzeXN0ZW0sIGEgZ2VtIHVzZXIgY2FuIGNvbXBsZXRlbHkg
aWdub3JlIHdoZXRoZXIgYSBnZW0gaXMgd3JpdGUgaW4gTmFtZXNwYWNlIG9yIG5vdC4KKiBVc2Vy
IGNhbiBjb21wbGV0ZWx5IGNvbnRyb2wgd2hpY2ggbmFtZXMgaW4gY3VycmVudCBjb250ZXh0L3Nj
b3BlLgoqIE1heSBzb2x2ZSB0aGUgdG9wIG1vZHVsZSBuYW1lIGNvbmZsaWN0IGlzc3VlKGRlcGVu
ZHMgb24gVk0gaW1wbGVtZW50YXRpb24pLgoqIEF2b2lkIGludHJvZHVjaW5nIG5ldyBrZXl3b3Jk
IGFuZCBzeW50YXguCiogVHlwZSBoaW50IG9yIG5hbWUgaGludCBjYW4gYmUgbW9yZSBhY2N1cmFj
eSB1bmRlciBuYW1lc3BhY2Uobm90IHN1cmUpLgoKQ29uczoKCiogTmVlZCB0byBtb2RpZnkgUnVi
eSBWTSB0byBzdXBwb3J0IHRoZSBmZWF0dXJlLgoKCgoKLS0gCmh0dHBzOi8vYnVncy5ydWJ5LWxh
bmcub3JnLwoKVW5zdWJzY3JpYmU6IDxtYWlsdG86cnVieS1jb3JlLXJlcXVlc3RAcnVieS1sYW5n
Lm9yZz9zdWJqZWN0PXVuc3Vic2NyaWJlPgo8aHR0cDovL2xpc3RzLnJ1YnktbGFuZy5vcmcvY2dp
LWJpbi9tYWlsbWFuL29wdGlvbnMvcnVieS1jb3JlPgo=

In This Thread

Prev Next