[#53072] [ruby-trunk - Feature #7994][Open] Make iterators pass an implicit named parameter `iteration` to the executed block — "alexeymuranov (Alexey Muranov)" <redmine@...>

10 messages 2013/03/01

[#53097] [ruby-trunk - Bug #8000][Open] "require 'tk'" segfaults on 64-bit linux with Tk 8.6 — "edmccard (Ed McCardell)" <edmccard@...>

25 messages 2013/03/02

[#53137] [ruby-trunk - Bug #8017][Open] Got segmentation fault on attempt to install ruby 2.0.0-p0 on Mac 10.6.8 via RVM — "adantel (Alex Filatau)" <filatau@...>

9 messages 2013/03/05

[#53168] [ruby-trunk - Bug #8034][Open] File.expand_path('something', '~') do not include home path — "rap-kasta (Pavel Manylov)" <rapkasta@...>

12 messages 2013/03/06

[#53199] [ruby-trunk - Bug #8040][Open] Unexpect behavior when using keyword arguments — "pabloh (Pablo Herrero)" <pablodherrero@...>

11 messages 2013/03/07

[#53203] [ruby-trunk - Feature #8042][Open] Add Addrinfo#socket to create a socket that is not connected or bound — "drbrain (Eric Hodel)" <drbrain@...7.net>

12 messages 2013/03/07

[#53248] Github commit log should not be used as references on redmine — Marc-Andre Lafortune <ruby-core-mailing-list@...>

Github commit log should not be used as references on redmine. E.g:

10 messages 2013/03/09

[#53386] [CommonRuby - Feature #8088][Open] Method#parameters (and friends) should provide useful information about core methods — "headius (Charles Nutter)" <headius@...>

14 messages 2013/03/13

[#53412] [CommonRuby - Feature #8096][Open] introduce Time.current_timestamp — "vipulnsward (Vipul Amler)" <vipulnsward@...>

34 messages 2013/03/14

[#53439] [ruby-trunk - Bug #8100][Open] Segfault in ruby-2.0.0p0 — "judofyr (Magnus Holm)" <judofyr@...>

22 messages 2013/03/15

[#53478] [ruby-trunk - Feature #8107][Open] [patch] runtime flag to track object allocation metadata — "tmm1 (Aman Gupta)" <ruby@...1.net>

20 messages 2013/03/16

[#53498] [ruby-trunk - Feature #8110][Open] Regex methods not changing global variables — "prijutme4ty (Ilya Vorontsov)" <prijutme4ty@...>

21 messages 2013/03/18

[#53502] [ruby-trunk - Bug #8115][Open] make install DESTDIR=/my/install/path fails — "vo.x (Vit Ondruch)" <v.ondruch@...>

11 messages 2013/03/18

[#53688] [ruby-trunk - Feature #8158][Open] lightweight structure for loaded features index — "funny_falcon (Yura Sokolov)" <funny.falcon@...>

27 messages 2013/03/24

[#53692] [ruby-trunk - Bug #8159][Open] Build failure introduced by Rinda changes — "luislavena (Luis Lavena)" <luislavena@...>

22 messages 2013/03/24

[#53733] [ruby-trunk - Bug #8165][Open] Problems with require — "Krugloff (Alexandr Kruglov)" <mr.krugloff@...>

12 messages 2013/03/26

[#53742] [ruby-trunk - Bug #8168][Open] Feature request: support for (single) statement lambda syntax/definition — "garysweaver (Gary Weaver)" <garysweaver@...>

9 messages 2013/03/26

[#53765] [ruby-trunk - Bug #8174][Open] AIX header file conflict with rb_hook_list_struct — "edelsohn (David Edelsohn)" <dje.gcc@...>

11 messages 2013/03/27

[#53808] [ruby-trunk - Feature #8181][Open] New flag for strftime that supports adding ordinal suffixes to numbers — "tkellen (Tyler Kellen)" <tyler@...>

10 messages 2013/03/28

[#53811] [ruby-trunk - Bug #8182][Open] XMLRPC request fails with "Wrong size. Was 31564, should be 1501" — "tsagadar (Marcel Mueller)" <marcel.mueller@...>

28 messages 2013/03/28

[#53849] [ruby-trunk - Feature #8191][Open] Short-hand syntax for duck-typing — "wardrop (Tom Wardrop)" <tom@...>

48 messages 2013/03/31

[#53850] An evaluation of 2.0.0 release — Yusuke Endoh <mame@...>

Let's look back at 2.0.0 release so that we can do better next time.

12 messages 2013/03/31

[ruby-core:53465] [ruby-trunk - Feature #7791] Let symbols be garbage collected

From: "Student (Nathan Zook)" <blogger@...>
Date: 2013-03-15 21:49:19 UTC
List: ruby-core #53465
Issue #7791 has been updated by Student (Nathan Zook).


I'm  sorry, but this example just gets more strange the more you explain it.  Are you saying that there is one table with one two columns (id & value) for all of the text fields?  That would certainly parallel your previous statement.

But when you do your queries, why do you alias the columns against the id field value that your are matching?  Why not alias against the column number in the template?  (This solution actually has me concerned on a number of points).

More to the point, you ARE doing exactly what I said--you are creating transitory Symbols, which is an abuse.  Most ORMs assume a constant or near-constant schema.  You have implemented a solution which breaks that assumption, so you need to use an ORM (or make one) that does not have that assumption.

No tool can be all things to all people.  Symbols are a tool that ruby uses to solve certain problems.  Their permanence is a feature, not a bug.  There is a lot of code that relies upon this fact, and it can be hard to see what all.  




rosenfeld (Rodrigo Rosenfeld Rosas) wrote:
> Student (Nathan Zook) wrote:
> > ...Second, I really don't understand your example.  How do particular values for a particular role become part of the alias for an entire column?
> 
> I think you won't understand until I give you an overview of how the application works. There is a dynamic fields tree template that is managed by an editor of the application. Editors will decide upon what fields should exist in a given template, define who is child of whom, and give them a name and a type. Since we use PostgreSQL (a RDBMS) we're forced to have a separate table per possible field type (text, number, date, etc) so that we can have non-null constraints more easily (the alternative being having a single table with different column values, one per type, and a trigger to make sure at least one of them is filled in, but I don't like that approach actually for many reasons). Then some attorneys will link some document excerpts to those fields for a certain transaction. The client interface consists mainly on a Search interface that will allow the clients to search all transactions matching certain conditions involving those fields and their values.
> 
> Some fields may be just displayed without any conditions attached. So, basically I have to join the same values tables multiple times. For instance, if 3 date fields were requested by the client, the date_values table will be "left join"ed 3 times and they will be aliased as v#{field_id}. The value column for each table would be aliased as v#{field_id}_value. Please let me know if I still couldn't manage to convince you that I'm talking about a real use case here.
> 
> I'm not overloading the notion of a Symbol. I simply can't request Sequel to return me the columns as strings instead of symbols and Sequel simply assumes that the columns will be limited to the real column names as declared in the table schema. I'm showing you that this is not always true by giving you a real use case of how I use Sequel. I'm also stating that this is a headache that Ruby will force me to think about using strings or symbols because of possible memory leak when I don't really care about it. I only care about being able to retrieve the values from a dynamic query :(


----------------------------------------
Feature #7791: Let symbols be garbage collected
https://bugs.ruby-lang.org/issues/7791#change-37647

Author: rosenfeld (Rodrigo Rosenfeld Rosas)
Status: Feedback
Priority: Normal
Assignee: matz (Yukihiro Matsumoto)
Category: core
Target version: next minor


Lots of Denial-of-Service security vulnerabilities exploited in Ruby programs rely on symbols not being collected by garbage collector.

Ideally I'd prefer symbols and strings to behave exactly the same being just alternate ways of writing strings but I'll let this to another ticket.

This one simply asks for symbols to be allowed to be garbage collected when low on memory. Maybe one could set up some up-limit memory constraints dedicated to storing symbols. That way, the most accessed symbols would remain in that memory region and the least used ones would be reclaimed when the memory for symbols is over and a new symbol is created.

Or you could just allow symbols to be garbage collected any time. Any reasons why this would be a bad idea? Any performance benchmark demonstrating how using symbols instead of strings would make a real-world software perform much better?

Currently I only see symbols slowing down processing because people don't want to worry about it and will often use something like ActiveSupport Hash#with_indifferent_access or some other method to convert a string to symbol or vice versa...


-- 
http://bugs.ruby-lang.org/

In This Thread